diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e3e2509..61c16f5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -14,8 +14,8 @@ spring: show-sql: false flyway: baseline-on-migrate: true + baseline-version: 0 locations: classpath:db/migration,classpath:db/seed -# baseline-version: 0 logging: level: diff --git a/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql b/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql new file mode 100644 index 0000000..b029d87 --- /dev/null +++ b/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql @@ -0,0 +1,5 @@ +DROP TABLE IF EXISTS `option_detail`; +DROP TABLE IF EXISTS `menu_option`; +DROP TABLE IF EXISTS `cafe_image`; +DROP TABLE IF EXISTS `cafe_menu`; +DROP TABLE IF EXISTS `cafe`; \ No newline at end of file diff --git a/src/main/resources/db/migration/V001__Create_cafe.sql b/src/main/resources/db/migration/V2__Create_cafe.sql similarity index 96% rename from src/main/resources/db/migration/V001__Create_cafe.sql rename to src/main/resources/db/migration/V2__Create_cafe.sql index 0b07ee1..5941d25 100644 --- a/src/main/resources/db/migration/V001__Create_cafe.sql +++ b/src/main/resources/db/migration/V2__Create_cafe.sql @@ -1,5 +1,3 @@ -DROP TABLE IF EXISTS `cafe`; - CREATE TABLE `cafe` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '카페 ID', `name` varchar(20) NOT NULL COMMENT '카페명', diff --git a/src/main/resources/db/migration/V002__Create_cafe_menu.sql b/src/main/resources/db/migration/V3__Create_cafe_menu.sql similarity index 95% rename from src/main/resources/db/migration/V002__Create_cafe_menu.sql rename to src/main/resources/db/migration/V3__Create_cafe_menu.sql index a2e4b0d..40d197b 100644 --- a/src/main/resources/db/migration/V002__Create_cafe_menu.sql +++ b/src/main/resources/db/migration/V3__Create_cafe_menu.sql @@ -1,5 +1,3 @@ -DROP TABLE IF EXISTS `cafe_menu`; - CREATE TABLE `cafe_menu` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '카페 메뉴 ID', `name` varchar(50) NOT NULL COMMENT '카페 메뉴명', diff --git a/src/main/resources/db/migration/V003__Create_cafe_image.sql b/src/main/resources/db/migration/V4__Create_cafe_image.sql similarity index 94% rename from src/main/resources/db/migration/V003__Create_cafe_image.sql rename to src/main/resources/db/migration/V4__Create_cafe_image.sql index 153e47d..5f7b229 100644 --- a/src/main/resources/db/migration/V003__Create_cafe_image.sql +++ b/src/main/resources/db/migration/V4__Create_cafe_image.sql @@ -1,5 +1,3 @@ -DROP TABLE IF EXISTS `cafe_image`; - CREATE TABLE `cafe_image` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '카페 이미지 ID', `img_url` varchar(255) NOT NULL COMMENT '이미지 경로', diff --git a/src/main/resources/db/migration/V004__Create_menu_option.sql b/src/main/resources/db/migration/V5__Create_menu_option.sql similarity index 94% rename from src/main/resources/db/migration/V004__Create_menu_option.sql rename to src/main/resources/db/migration/V5__Create_menu_option.sql index f39d6b3..7d71d7f 100644 --- a/src/main/resources/db/migration/V004__Create_menu_option.sql +++ b/src/main/resources/db/migration/V5__Create_menu_option.sql @@ -1,5 +1,3 @@ -DROP TABLE IF EXISTS `menu_option`; - CREATE TABLE `menu_option`( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '옵션 ID', `title` varchar(50) NOT NULL COMMENT '메뉴 옵션 이름', diff --git a/src/main/resources/db/migration/V005__Create_option_detail.sql b/src/main/resources/db/migration/V6__Create_option_detail.sql similarity index 95% rename from src/main/resources/db/migration/V005__Create_option_detail.sql rename to src/main/resources/db/migration/V6__Create_option_detail.sql index 5a84814..f68b2ce 100644 --- a/src/main/resources/db/migration/V005__Create_option_detail.sql +++ b/src/main/resources/db/migration/V6__Create_option_detail.sql @@ -1,5 +1,3 @@ -DROP TABLE IF EXISTS `option_detail`; - CREATE TABLE `option_detail` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '옵션 상세 ID', `name` varchar(50) NOT NULL COMMENT '옵션 상세명', diff --git a/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql b/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql new file mode 100644 index 0000000..efe85e8 --- /dev/null +++ b/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql @@ -0,0 +1,67 @@ +-- #### Drop all foreign keys +ALTER TABLE `cafe_menu` DROP FOREIGN KEY `cafe_menu_ibfk_1`; +ALTER TABLE `cafe_menu` DROP INDEX `cafe_id`; + +ALTER TABLE `cafe_image` DROP FOREIGN KEY `cafe_image_ibfk_1`; +ALTER TABLE `cafe_image` DROP INDEX `cafe_id`; + +ALTER TABLE `menu_option` DROP FOREIGN KEY `menu_option_ibfk_1`; +ALTER TABLE `menu_option` DROP INDEX `menu_id`; + +ALTER TABLE `option_detail` DROP FOREIGN KEY `option_detail_ibfk_1`; +ALTER TABLE `option_detail` DROP INDEX `option_id`; + +-- #### Drop all primary keys & Add new primary keys +-- 1. delete auto_increment +ALTER TABLE `cafe` MODIFY id bigint NOT NULL; +ALTER TABLE `cafe_menu` MODIFY id bigint NOT NULL; +ALTER TABLE `cafe_image` MODIFY id bigint NOT NULL; +ALTER TABLE `menu_option` MODIFY id bigint NOT NULL; +ALTER TABLE `option_detail` MODIFY id bigint NOT NULL; + +-- 2. drop primary key +ALTER TABLE `cafe` DROP PRIMARY KEY; +ALTER TABLE `cafe_menu` DROP PRIMARY KEY; +ALTER TABLE `cafe_image` DROP PRIMARY KEY; +ALTER TABLE `menu_option` DROP PRIMARY KEY; +ALTER TABLE `option_detail` DROP PRIMARY KEY; + +-- 3. change 'id' column name and modify to primary key +ALTER TABLE `cafe` + CHANGE `id` `cafe_id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '카페 ID'; +ALTER TABLE `cafe_menu` + CHANGE `id` `cafe_menu_id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '카페 메뉴 ID'; +ALTER TABLE `cafe_image` + CHANGE `id` `cafe_image_id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '카페 이미지 ID'; +ALTER TABLE `menu_option` + CHANGE `id` `menu_option_id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '옵션 ID'; +ALTER TABLE `option_detail` + CHANGE `id` `option_detail_id` bigint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '옵션 상세 ID'; + +-- #### RENAME fk column +ALTER TABLE `menu_option` + CHANGE `menu_id` `cafe_menu_id` bigint unsigned NOT NULL COMMENT '연관된 카페 메뉴 ID'; +ALTER TABLE `option_detail` + CHANGE `option_id` `menu_option_id` bigint unsigned NOT NULL COMMENT '연관된 옵션 ID'; + +-- #### Add foreign keys +ALTER TABLE `cafe_menu` + ADD CONSTRAINT `cafemenu_cafeid_fk` + FOREIGN KEY (`cafe_id`) + REFERENCES `cafe` (`cafe_id`); + +ALTER TABLE `cafe_image` + ADD CONSTRAINT `cafeimage_cafeid_fk` + FOREIGN KEY (`cafe_id`) + REFERENCES `cafe` (`cafe_id`); + +ALTER TABLE `menu_option` + ADD CONSTRAINT `menuoption_cafemenuid_fk` + FOREIGN KEY (`cafe_menu_id`) + REFERENCES `cafe_menu` (`cafe_menu_id`); + +ALTER TABLE `option_detail` + ADD CONSTRAINT `optiondetail_menuoptionid_fk` + FOREIGN KEY (`menu_option_id`) + REFERENCES `menu_option` (`menu_option_id`); + diff --git a/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql b/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql index 6522029..460b7e2 100644 --- a/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql +++ b/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql @@ -11,7 +11,7 @@ BEGIN SET count_cafe = (SELECT COUNT(*) FROM `cafe`); WHILE(i <= count_cafe) DO SET j = 1; - SET var_cafe_id = (SELECT id FROM `cafe` LIMIT i, 1); + SET var_cafe_id = (SELECT cafe_id FROM `cafe` LIMIT i, 1); WHILE(j <= 3) DO INSERT IGNORE INTO `cafe_image` (img_url, created_at, created_by, updated_at, updated_by, cafe_id) VALUES (CONCAT('test_img_url_', idx_img), now(), 'system', null, null, var_cafe_id); diff --git a/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql b/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql index 2151e40..e5ee900 100644 --- a/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql +++ b/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql @@ -8,7 +8,7 @@ BEGIN DECLARE var_cafe_id binary(16); WHILE(i <= 4) DO SET j = 1; - SET var_cafe_id = (SELECT id FROM `cafe` LIMIT i, 1); + SET var_cafe_id = (SELECT cafe_id FROM `cafe` LIMIT i, 1); WHILE(j <= 10) DO INSERT IGNORE INTO `cafe_menu` (name, price, created_at, created_by, updated_at, updated_by, cafe_id) VALUES (CONCAT('커피', j), FLOOR(RAND() * 10 + 1) * 1000, now(), 'system', null, null, var_cafe_id);