# DDL 실행 순서 가이드 (안전 버전) 벤더사-인플루언서 시스템의 데이터베이스 스키마를 구축하기 위한 DDL 파일들의 실행 순서입니다. ## 중복 에러 방지 버전 (권장) 기존 DDL에서 중복 컬럼/인덱스 에러가 발생하는 경우 아래 안전 버전을 사용하세요. ### 실행 순서 (안전 버전) ### 1단계: 기본 테이블 생성 ```bash mysql -u [username] -p [database_name] < ddl/001_create_vendor_influencer_mapping_table.sql mysql -u [username] -p [database_name] < ddl/002_add_vendor_influencer_mapping_indexes.sql mysql -u [username] -p [database_name] < ddl/003_add_vendor_influencer_mapping_foreign_keys.sql ``` ### 2단계: 컬럼 추가 (안전 버전) ```bash mysql -u [username] -p [database_name] < ddl/004_add_vendor_list_additional_columns_safe.sql mysql -u [username] -p [database_name] < ddl/005_add_user_list_additional_columns_safe.sql ``` ### 3단계: 보조 테이블 생성 ```bash mysql -u [username] -p [database_name] < ddl/006_create_partnership_history_table.sql mysql -u [username] -p [database_name] < ddl/007_create_notification_table.sql mysql -u [username] -p [database_name] < ddl/008_create_sample_data_inserts.sql ``` ### 4단계: 인덱스 추가 (안전 버전) ```bash mysql -u [username] -p [database_name] < ddl/009_add_vendor_list_indexes_safe.sql mysql -u [username] -p [database_name] < ddl/010_add_user_list_indexes_safe.sql ``` ## 안전 버전 특징 ### 1. 컬럼 중복 방지 - 각 컬럼 추가 전 `INFORMATION_SCHEMA.COLUMNS`에서 존재 여부 확인 - 이미 존재하는 컬럼은 건너뛰고 정보 메시지 출력 - 에러 없이 안전하게 실행 가능 ### 2. 인덱스 중복 방지 - 각 인덱스 추가 전 `INFORMATION_SCHEMA.STATISTICS`에서 존재 여부 확인 - 이미 존재하는 인덱스는 건너뛰고 정보 메시지 출력 - 여러 번 실행해도 안전 ### 3. 동적 SQL 사용 ```sql SET @sql = IF( (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'VENDOR_LIST' AND COLUMN_NAME = 'CATEGORY') = 0, 'ALTER TABLE `VENDOR_LIST` ADD COLUMN `CATEGORY` varchar(50) DEFAULT NULL', 'SELECT "CATEGORY column already exists" as info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; ``` ## 파일 설명 ### 안전 버전 파일들 - **004_add_vendor_list_additional_columns_safe.sql**: VENDOR_LIST 컬럼 추가 (중복 방지) - **005_add_user_list_additional_columns_safe.sql**: USER_LIST 컬럼 추가 (중복 방지) - **009_add_vendor_list_indexes_safe.sql**: VENDOR_LIST 인덱스 추가 (중복 방지) - **010_add_user_list_indexes_safe.sql**: USER_LIST 인덱스 추가 (중복 방지) ### 기존 버전 파일들 - **004_add_vendor_list_additional_columns.sql**: 원본 버전 (중복 시 에러) - **005_add_user_list_additional_columns.sql**: 원본 버전 (중복 시 에러) - **009_add_vendor_list_indexes.sql**: 원본 버전 (중복 시 에러) - **010_add_user_list_indexes.sql**: 원본 버전 (중복 시 에러) ## 사용 시나리오 ### 신규 설치 - 안전 버전을 사용하여 에러 없이 설치 ### 기존 시스템 업데이트 - 안전 버전을 사용하여 기존 데이터 보호하면서 업데이트 ### 개발/테스트 환경 - 여러 번 실행이 필요한 경우 안전 버전 사용 ## 주의사항 1. **순서 중요**: 반드시 번호 순서대로 실행해야 합니다. 2. **백업**: 프로덕션 환경에서는 실행 전 반드시 데이터베이스 백업을 수행하세요. 3. **권한**: DDL 실행을 위한 적절한 데이터베이스 권한이 필요합니다. 4. **테스트**: 개발 환경에서 먼저 테스트 후 프로덕션에 적용하세요. 5. **샘플 데이터**: 008번 파일의 샘플 데이터는 개발/테스트 환경에서만 사용하세요. 6. **안전 버전 권장**: 중복 에러를 방지하려면 `_safe` 버전 사용을 권장합니다. ## 에러 해결 ### "Duplicate column name" 에러 - 안전 버전(`_safe`) 파일 사용 ### "Duplicate key name" 에러 - 안전 버전(`_safe`) 파일 사용 ### 권한 에러 - DDL 실행 권한 확인 - `ALTER`, `CREATE`, `INDEX` 권한 필요 ## 롤백 필요 시 역순으로 `DROP COLUMN`, `DROP INDEX`, `DROP TABLE` 실행