ERD 작성 | 테이블 생성

아로롱·2024년 5월 22일
post-thumbnail

📋 ERD

작성한 위 ERD 를 바탕으로 러프하게 코드를 작성했다.
이를 바탕으로 실제 SQL 문을 작성해보자.
author 와 post 테이블은 author_post 테이블이 생성되면서 관계가 없어진다.
원래는 n:m 관계.


✏️ author 테이블


1) id => PK

  • 해당 테이블의 데이터를 유일하게 식별할 수 있고, 다른 테이블에서 FK로 활용.
  • author_address , author_post 에서 FK 로 활용해야 하므로 id를 PK로 설정.

2) name VARCHAR(255)
3) email VARCHAR(255) NOT NULL, UNIQUE

  • email은 고유해야하니까 UNIQUE !

4) crated_time DATETIME DEFAULT CURRENT_TIMESTAMP

  • author 를 생성한 시간을 created_time 으로 등록 !

최종 코드

CREATE TABLE author(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255),
email VARCHAR(255) NOT NULL UNIQUE, created_time DATETIME DEFAULT CURRENT_TIMESTAMP);

나는 쭉- 길게 이어 썼지만, PK와 UNIQUE는 맨 끝으로 빼서
PRIMARY KEY(id), UNIQUE(email) 처럼 써줄 수 있다!


✏️ post 테이블


1) id => PK

  • 해당 테이블의 데이터를 유일하게 식별할 수 있고, 다른 테이블에서 FK로 활용.
  • author_post 에서 FK 로 활용해야 하므로 id를 PK로 설정.

2) title VARCHAR(255) NOT NULL
3) contents VARCHAR(3000)

최종 코드

CREATE TABLE post(id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL, contents VARCHAR(255));

✏️ author_address 테이블


1) id => PK

  • author_address 의 경우 FK로 활용되는 건 아니지만, 테이블에서 PK 는 필수라고 볼 수 있고 고유 값이 부여되어야 하기 때문에 PK가 적용된다.

2) city VARCHAR(255)
3) street VARCHAR(255)
4) author_id int NOT NULL UNIQUE + FOREIGN KEY + CASCADE

  • author 테이블의 id 를 가져온다 ! > NOT NULL FOREIGN KEY
  • author 테이블의 id 가 지워진다면 같이 지워주세요 > ON DELETE CASCADE

최종 코드

CREATE TABLE author_address(id INT PRIMARY KEY AUTO_INCREMENT, city VARCHAR(255),
street VARCHAR(255), author_id int NOT NULL,
UNIQUE(author_id), FOREIGN KEY(author_id) REFERENCES author(id) ON DELETE CASCADE);

✏️ author_post 테이블


1) id => PK

  • author_post 의 경우도 FK로 활용되는 건 아니지만, 테이블에서 PK 는 필수라고 볼 수 있고 고유 값이 부여되어야 하기 때문에 PK가 적용된다.

2) author_id int NOT NULL + FOREIGN KEY

  • author 테이블의 id 를 가져온다 ! > NOT NULL FOREIGN KEY

3) post_id int NOT NULL + FOREIGN KEY

  • author 테이블의 id 를 가져온다 ! > NOT NULL FOREIGN KEY

최종 코드

CREATE TABLE author_post(id INT PRIMARY KEY AUTO_INCREMENT,
author_id int NOT NULL, post_id int NOT NULL,
FOREIGN KEY(author_id) REFERENCES author(id),
FOREIGN KEY(post_id) REFERENCES post(id));

💻 테이블 생성 결과




처음 계획한 ERD 와 동일하게 테이블이 생성된 것을 확인할 수 있다!
다음에는 임의로 값을 넣어, 내가 설정한 제약 조건들이 잘 작동하는지 확인해보도록 하겠다.

profile
Dilige, et fac quod vis

0개의 댓글