: 게시판 & 사용자 시스템
- 무결성과 효율성을 지킨다.
사용자가 게시글을 쓴다. 게시글이 사용자를 쓰진 않는다.
따라서 게시글을 포함한 Bbs시스템이 User시스템에 의존적이다.
탈퇴되는 회원을 DELETE하면 안된다.
법원이나 경찰에 제출할 증거가 사라지기 때문이다.
-> 스키마 생성 / user_statuses 테이블 생성 및 INSERT
: 사용자의 상태를 나타낸다.
-> 통신사 테이블 생성 및 INSERT
통신사와 사용자상태는 사용자가 원한다고 해서 무한정으로 정보가 나올 수 없다. 성별 또한 그렇다.
-> user_genders 테이블 생성 및 INSERT
-> users 테이블 생성
: 사용자의 정보를 담는다.
CREATE TABLE `site`.`users` ( `index` INT UNSIGNED NOT NULL AUTO_INCREMENT, `email` VARCHAR(50) NOT NULL, `password` VARCHAR(128) NOT NULL, `created_at` DATETIME NOT NULL DEFAULT NOW(), `updated_at` DATETIME NOT NULL DEFAULT NOW(), `status_index` TINYINT UNSIGNED NOT NULL, -- 사용자의 상태 `nickname` VARCHAR(10) NOT NULL, `name` VARCHAR(10) NOT NULL, `birth` DATE NOT NULL, `gender_index` TINYINT UNSIGNED NOT NULL, `contact_provider_index` TINYINT UNSIGNED NOT NULL COMMENT '연락처 통신사', `contact_first` VARCHAR(4) NOT NULL, `contact_second` VARCHAR(4) NOT NULL, `contact_third` VARCHAR(4) NOT NULL, `address_postal` VARCHAR(5) NOT NULL COMMENT '주소 우편번호', `address_primary` VARCHAR(100) NOT NULL COMMENT '주소 기본', `address_secondary` VARCHAR(100) NOT NULL COMMENT '주소 상세', CONSTRAINT PRIMARY KEY (`index`), CONSTRAINT UNIQUE (`email`), CONSTRAINT UNIQUE (`nickname`), CONSTRAINT UNIQUE (`contact_first`, `contact_second`, `contact_third`), CONSTRAINT FOREIGN KEY (`status_index`) REFERENCES `site`.`user_statuses` (`index`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT FOREIGN KEY (`gender_index`) REFERENCES `site`.`user_genders` (`index`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT FOREIGN KEY (`contact_provider_index`) REFERENCES `site`.`user_contact_providers` (`index`) ON DELETE CASCADE ON UPDATE CASCADE );
오류터졌을때는 near의 뒤에것을 확인해보면 된다.
-> INSERT
-> SELECT