
이 포스트는 MySQL과 Spring Boot와 MySQL, Datagrip을 설정하고, 사용할 수 있다는 전제하에 작성되었습니다.
이번 포스트에서는 게시판, 게시글, 댓글을 작성할 수 있는 게시판을 만들어볼 것이다.
이러한 기능을 만드는데에는 먼저 아래의 작업이 필요하다.
먼저 ERD를 생성해보자
https://dbdiagram.io/docs/
위의 사이트는 ERD를 그리면 쿼리문을 작성해주는 사이트인데
아래의 사진에서 왼쪽과 같이 작성하면 오른쪽 화면처럼 그려준다. 그리고 쿼리문을 만들어준다.

너무 커서 잘 안보이니까 좀더 확대해서 보면 아래와 같다.

이렇게 테이블들을 만들어주면 쿼리문을 export 할 수 있다.

여기에서는 MySQL을 쓰니 MySQL을 Export 하자.

그리고 내부는 아래와 같이 작성하면 도커환경에서 mysql 서버가 실행된다.
version: "3"
services:
db:
image: mysql:8.3.0
restart: always
container_name: mysql
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: mydb
MYSQL_ROOT_PASSWORD: root1234!!
TZ: Asia/Seoul
MYSQL_LOWER_CASE_TABLE_NAMES: "1"
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
volumes: //이 아래의 경로는 자신에게 맞게 커스터마이징 한다.
- /Users/gihongjo/Temp/MYSQL:/var/lib/mysql
도커에서 확인해보면 아래와 같이 보일 것이다.

이제 데이터베이스를 구축해보자.
먼저 Datagrip으로 아래와 같이 스키마를 만들어주자.


simple_board 스키마를 생성해주자.
그리고 아까 dbdiagram에서 생성했던 sql문을 붙여넣어주자.
만약 못만들었다면 아래의 sql 쿼리문을 넣으면 된다.
CREATE TABLE `board` (
`id` int PRIMARY KEY NOT NULL AUTO_INCREMENT,
`board_name` varchar(100) NOT NULL,
`status` varchar(50) NOT NULL
);
CREATE TABLE `post` (
`id` bigint PRIMARY KEY NOT NULL AUTO_INCREMENT,
`board_id` bigint(32),
`user_name` varchar(50) NOT NULL,
`password` varchar(4) NOT NULL,
`email` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
`title` varchar(100) NOT NULL,
`content` text,
`posted_at` datetime NOT NULL
);
CREATE TABLE `reply` (
`id` bigint PRIMARY KEY NOT NULL AUTO_INCREMENT,
`post_id` bigint(32) NOT NULL,
`board` bigint(32),
`user_name` varchar(50) NOT NULL,
`password` varchar(4) NOT NULL,
`email` varchar(50) NOT NULL,
`status` varchar(50) NOT NULL,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
`posted_at` datetime NOT NULL
);
ALTER TABLE `post` ADD FOREIGN KEY (`board_id`) REFERENCES `board` (`id`);
ALTER TABLE `reply` ADD FOREIGN KEY (`post_id`) REFERENCES `post` (`id`);
그럼 이제 테이블들이 준비 되었다. 
를 하려고 했는데 너무 길어져서 다음 포스트에서 다룬다..