| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- -- 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;
|