처음에는 이번에 프로젝트의 요구사항이 단순하여 사용 경험이 적은 MongoDB를 사용해볼까 했다.
하지만 이전에 스프링과 안드로이드 기반으로 만들었던 토이 프로젝트를 AWS에 올렸을 때 RDS 성능이 괜찮았던 것 같아서 이번에도 AWS에 올리기까지 해보는 걸 목표로 하여 MySQL을 사용하기로 했다.
워크벤치를 사용할 수도 있었지만 부트캠프 수업에서 사용한 dbdiagram(https://dbdiagram.io/d) 사이트가 직관적이고 편했기 때문에 dbdiagram을 사용하여 스키마를 작성했다.
차후에 추가 기능을 구현할 때를 고려하여 posts 테이블과 users 테이블을 분리하였다.
상단 스키마 디자인을 바탕으로 export한 테이블 생성 sql은 다음과 같다.
CREATE TABLE `users` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`nickname` varchar(255) UNIQUE NOT NULl,
`email` varchar(255) UNIQUE NOT NULL,
`password` varchar(255) NOT NULl
);
CREATE TABLE `posts` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`title` varchar(255),
`user_id` int NOT NULl,
`created_at` datetime DEFAULT (now()),
`updated_at` datetime DEFAULT (now()),
`recipe` varchar(255),
`image_path` varchar(255)
);
CREATE TABLE `ingredients` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`ingredient` varchar(255) NOT NULl
);
CREATE TABLE `post_ingredients` (
`id` int,
`post_id` int,
`ingredient_id` int
);
CREATE UNIQUE INDEX `posts_index_0` ON `posts` (`id`);
CREATE UNIQUE INDEX `ingredients_index_1` ON `ingredients` (`id`);
-- ALTER TABLE `posts` ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`id`);
-- ALTER TABLE `post_ingredients` ADD FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`);
-- ALTER TABLE `post_ingredients` ADD FOREIGN KEY (`ingredient_id`) REFERENCES `ingredients` (`id`);
아직 개발 단계이기 때문에 테이블간 참조키로 물리적 연결을 하면 테스트 할 때 불편할 것 같아 우선 논리적으로만 참조시켜놓고 배포 단계에서 물리적 연결을 하려고 한다.