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

1) id => PK
2) name VARCHAR(255)
3) email VARCHAR(255) NOT NULL, UNIQUE
4) crated_time DATETIME DEFAULT CURRENT_TIMESTAMP
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) 처럼 써줄 수 있다!

1) 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));

1) id => PK
2) city VARCHAR(255)
3) street VARCHAR(255)
4) author_id int NOT NULL UNIQUE + FOREIGN KEY + CASCADE
NOT NULL FOREIGN KEYON DELETE CASCADECREATE 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);

1) id => PK
2) author_id int NOT NULL + FOREIGN KEY
NOT NULL FOREIGN KEY3) post_id int NOT NULL + FOREIGN KEY
NOT NULL FOREIGN KEYCREATE 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 와 동일하게 테이블이 생성된 것을 확인할 수 있다!
다음에는 임의로 값을 넣어, 내가 설정한 제약 조건들이 잘 작동하는지 확인해보도록 하겠다.