8.04. 데이터베이스 테이블 생성하기

회원을 위한 테이블을 생성한다.

CREATE TABLE `tbl_member` (
  `member_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `login_id` VARCHAR(40) NOT NULL,
  `login_name` VARCHAR(20) NOT NULL,
  `login_pw` VARCHAR(256) NULL,
  `insert_date` DATETIME NOT NULL DEFAULT NOW(),
  PRIMARY KEY (`member_id`),
  UNIQUE INDEX `login_id` (`login_id`)
)
COMMENT='회원'
COLLATE='utf8mb4_general_ci'
;

테이블 이름은 tbl_member이다. tbl_은 테이블이라고 명시하는 접두어다.

CREATE TABLE `tbl_member` (

member_id는 회원 한명 한명을 나타내는 행(row - 로우) 구분 용도의 일련번호 열(column - 컬럼)이다. 1부터 시작하며 자동으로 증가한다.

`member_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,

login_id는 회원 ID이다. 40글자까지 입력 가능하다.

`login_id` VARCHAR(40) NOT NULL,

login_name은 회원명이다. 20글자까지 입력 가능하다.

`login_name` VARCHAR(20) NOT NULL,

login_pw는 회원 비밀번호이다. 암호화해서 저장하므로 길이를 여유있게 256글자로 설정한다.

`login_pw` VARCHAR(256) NULL,

insert_date는 데이터 입력 시간이다. DEFAULT NOW() 가 설정되어 있으므로 행이 입력(insert)될 때 데이터베이스에서 자동으로 현재 시간이 입력된다.

`insert_date` DATETIME NOT NULL DEFAULT NOW(),

tbl_member의 주 키는 member_id이다. PRIMARY KEY (member_id)로 테이블의 주 키(primary key) 를 설정한다.

PRIMARY KEY (`member_id`),

회원ID는 중복될 수 없다. UNIQUE INDEX login_id (login_id)로 login_id 컬럼의 유일함(unique)를 보장한다.

UNIQUE INDEX `login_id` (`login_id`)

글을 저장하기 위한 데이터베이스 테이블을 생성한다.

CREATE TABLE `tbl_post` (
  `post_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `post_content` varchar(500) NOT NULL,
  `member_id` bigint(20) unsigned NOT NULL,
  `insert_date` datetime NOT NULL DEFAULT NOW(),
  PRIMARY KEY (`post_id`),
  KEY `FK_tbl_post_tbl_member` (`member_id`),
  CONSTRAINT `FK_tbl_post_tbl_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`member_id`)
)
COMMENT='글'
COLLATE='utf8mb4_general_ci'
;

테이블 이름은 tbl_post다.

CREATE TABLE `tbl_post` (

post_id는 글 하나 하나를 구분하는 일련번호다.

`post_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

post_content는 메모 내용을 뜻한다.

`post_content` varchar(500) NOT NULL,

member_id는 글을 쓴 회원 정보다.

`member_id` bigint(20) unsigned NOT NULL,

tbl_post 테이블의 member_id 컬럼의 데이터는 tbl_member 테이블의 member_id 컬럼의 정보를 참조해야 한다.

  KEY `FK_tbl_post_tbl_member` (`member_id`),
  CONSTRAINT `FK_tbl_post_tbl_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`member_id`)

관계형 데이터베이스에서 다른 테이블의 정보를 참조하는 것을 외래키(Foreign Key)라고 부른다. 예시에서 tbl_post 테이블은 tbl_member 테이블을 참조하므로 외래키가 잡혀있다고 표현한다.