-- 014_complete_reset_design.sql -- 목적: 벤더사-인플루언서 파트너십 시스템 완전 재설계 -- 특징: 단일 테이블, 단순한 상태 관리, 복잡한 제약조건 제거 -- ============================================================================= -- 1단계: 기존 테이블 완전 삭제 -- ============================================================================= -- 1-1. 외래키 제약조건 비활성화 SET FOREIGN_KEY_CHECKS = 0; -- 1-2. 기존 테이블들 삭제 DROP TABLE IF EXISTS VENDOR_INFLUENCER_STATUS_HISTORY; DROP TABLE IF EXISTS PARTNERSHIP_HISTORY; DROP TABLE IF EXISTS VENDOR_INFLUENCER_MAPPING; -- 1-3. 외래키 제약조건 활성화 SET FOREIGN_KEY_CHECKS = 1; -- ============================================================================= -- 2단계: 새로운 단순한 파트너십 테이블 생성 -- ============================================================================= CREATE TABLE `VENDOR_INFLUENCER_PARTNERSHIP` ( `SEQ` int(11) NOT NULL AUTO_INCREMENT COMMENT '기본키', `VENDOR_SEQ` int(11) NOT NULL COMMENT '벤더사 SEQ (VENDOR_LIST.SEQ 참조)', `INFLUENCER_SEQ` int(11) NOT NULL COMMENT '인플루언서 SEQ (USER_LIST.SEQ 참조)', `STATUS` varchar(20) NOT NULL DEFAULT 'PENDING' COMMENT '상태: PENDING(대기), APPROVED(승인), REJECTED(거부), TERMINATED(해지)', `REQUEST_TYPE` varchar(20) NOT NULL DEFAULT 'NEW' COMMENT '요청 타입: NEW(신규), REAPPLY(재신청)', `REQUEST_MESSAGE` text DEFAULT NULL COMMENT '요청/재요청 메시지', `RESPONSE_MESSAGE` text DEFAULT NULL COMMENT '승인/거부/해지 메시지', `COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '수수료율 (%)', `SPECIAL_CONDITIONS` text DEFAULT NULL COMMENT '특별 조건', `REQUESTED_BY` int(11) NOT NULL COMMENT '요청자 SEQ (인플루언서)', `PROCESSED_BY` int(11) DEFAULT NULL COMMENT '처리자 SEQ (벤더사 담당자)', `REQUEST_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '요청일시', `RESPONSE_DATE` timestamp NULL DEFAULT NULL COMMENT '처리일시', `PARTNERSHIP_START_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 시작일', `PARTNERSHIP_END_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 종료일', `IS_ACTIVE` varchar(1) NOT NULL DEFAULT 'Y' COMMENT '활성 상태: Y(활성), N(비활성)', `CREATED_AT` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '생성일시', `UPDATED_AT` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '수정일시', PRIMARY KEY (`SEQ`), UNIQUE KEY `unique_active_partnership` (`VENDOR_SEQ`, `INFLUENCER_SEQ`, `IS_ACTIVE`), KEY `idx_vendor_seq` (`VENDOR_SEQ`), KEY `idx_influencer_seq` (`INFLUENCER_SEQ`), KEY `idx_status` (`STATUS`), KEY `idx_request_date` (`REQUEST_DATE`), KEY `idx_updated_at` (`UPDATED_AT`), CONSTRAINT `fk_vendor_partnership` FOREIGN KEY (`VENDOR_SEQ`) REFERENCES `VENDOR_LIST` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_influencer_partnership` FOREIGN KEY (`INFLUENCER_SEQ`) REFERENCES `USER_LIST` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_requested_by_partnership` FOREIGN KEY (`REQUESTED_BY`) REFERENCES `USER_LIST` (`SEQ`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='벤더사-인플루언서 파트너십 테이블 (단순화된 구조)'; -- ============================================================================= -- 3단계: 테스트 데이터 삽입 (선택사항) -- ============================================================================= -- 3-1. 샘플 파트너십 데이터 -- INSERT INTO VENDOR_INFLUENCER_PARTNERSHIP ( -- VENDOR_SEQ, INFLUENCER_SEQ, STATUS, REQUEST_MESSAGE, -- COMMISSION_RATE, REQUESTED_BY, REQUEST_DATE -- ) VALUES ( -- 1, 1, 'PENDING', '파트너십 요청드립니다.', -- 10.00, 1, NOW() -- ); -- ============================================================================= -- 4단계: 확인 쿼리 -- ============================================================================= -- 4-1. 테이블 구조 확인 DESCRIBE VENDOR_INFLUENCER_PARTNERSHIP; -- 4-2. 제약조건 확인 SHOW CREATE TABLE VENDOR_INFLUENCER_PARTNERSHIP; -- 4-3. 인덱스 확인 SHOW INDEX FROM VENDOR_INFLUENCER_PARTNERSHIP; SELECT '🎉 새로운 파트너십 테이블 생성 완료!' as result;