014_complete_reset_design.sql 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. -- 014_complete_reset_design.sql
  2. -- 목적: 벤더사-인플루언서 파트너십 시스템 완전 재설계
  3. -- 특징: 단일 테이블, 단순한 상태 관리, 복잡한 제약조건 제거
  4. -- =============================================================================
  5. -- 1단계: 기존 테이블 완전 삭제
  6. -- =============================================================================
  7. -- 1-1. 외래키 제약조건 비활성화
  8. SET FOREIGN_KEY_CHECKS = 0;
  9. -- 1-2. 기존 테이블들 삭제
  10. DROP TABLE IF EXISTS VENDOR_INFLUENCER_STATUS_HISTORY;
  11. DROP TABLE IF EXISTS PARTNERSHIP_HISTORY;
  12. DROP TABLE IF EXISTS VENDOR_INFLUENCER_MAPPING;
  13. -- 1-3. 외래키 제약조건 활성화
  14. SET FOREIGN_KEY_CHECKS = 1;
  15. -- =============================================================================
  16. -- 2단계: 새로운 단순한 파트너십 테이블 생성
  17. -- =============================================================================
  18. CREATE TABLE `VENDOR_INFLUENCER_PARTNERSHIP` (
  19. `SEQ` int(11) NOT NULL AUTO_INCREMENT COMMENT '기본키',
  20. `VENDOR_SEQ` int(11) NOT NULL COMMENT '벤더사 SEQ (VENDOR_LIST.SEQ 참조)',
  21. `INFLUENCER_SEQ` int(11) NOT NULL COMMENT '인플루언서 SEQ (USER_LIST.SEQ 참조)',
  22. `STATUS` varchar(20) NOT NULL DEFAULT 'PENDING' COMMENT '상태: PENDING(대기), APPROVED(승인), REJECTED(거부), TERMINATED(해지)',
  23. `REQUEST_TYPE` varchar(20) NOT NULL DEFAULT 'NEW' COMMENT '요청 타입: NEW(신규), REAPPLY(재신청)',
  24. `REQUEST_MESSAGE` text DEFAULT NULL COMMENT '요청/재요청 메시지',
  25. `RESPONSE_MESSAGE` text DEFAULT NULL COMMENT '승인/거부/해지 메시지',
  26. `COMMISSION_RATE` decimal(5,2) DEFAULT NULL COMMENT '수수료율 (%)',
  27. `SPECIAL_CONDITIONS` text DEFAULT NULL COMMENT '특별 조건',
  28. `REQUESTED_BY` int(11) NOT NULL COMMENT '요청자 SEQ (인플루언서)',
  29. `PROCESSED_BY` int(11) DEFAULT NULL COMMENT '처리자 SEQ (벤더사 담당자)',
  30. `REQUEST_DATE` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '요청일시',
  31. `RESPONSE_DATE` timestamp NULL DEFAULT NULL COMMENT '처리일시',
  32. `PARTNERSHIP_START_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 시작일',
  33. `PARTNERSHIP_END_DATE` timestamp NULL DEFAULT NULL COMMENT '파트너십 종료일',
  34. `IS_ACTIVE` varchar(1) NOT NULL DEFAULT 'Y' COMMENT '활성 상태: Y(활성), N(비활성)',
  35. `CREATED_AT` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '생성일시',
  36. `UPDATED_AT` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '수정일시',
  37. PRIMARY KEY (`SEQ`),
  38. UNIQUE KEY `unique_active_partnership` (`VENDOR_SEQ`, `INFLUENCER_SEQ`, `IS_ACTIVE`),
  39. KEY `idx_vendor_seq` (`VENDOR_SEQ`),
  40. KEY `idx_influencer_seq` (`INFLUENCER_SEQ`),
  41. KEY `idx_status` (`STATUS`),
  42. KEY `idx_request_date` (`REQUEST_DATE`),
  43. KEY `idx_updated_at` (`UPDATED_AT`),
  44. CONSTRAINT `fk_vendor_partnership` FOREIGN KEY (`VENDOR_SEQ`) REFERENCES `VENDOR_LIST` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,
  45. CONSTRAINT `fk_influencer_partnership` FOREIGN KEY (`INFLUENCER_SEQ`) REFERENCES `USER_LIST` (`SEQ`) ON DELETE CASCADE ON UPDATE CASCADE,
  46. CONSTRAINT `fk_requested_by_partnership` FOREIGN KEY (`REQUESTED_BY`) REFERENCES `USER_LIST` (`SEQ`) ON UPDATE CASCADE
  47. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='벤더사-인플루언서 파트너십 테이블 (단순화된 구조)';
  48. -- =============================================================================
  49. -- 3단계: 테스트 데이터 삽입 (선택사항)
  50. -- =============================================================================
  51. -- 3-1. 샘플 파트너십 데이터
  52. -- INSERT INTO VENDOR_INFLUENCER_PARTNERSHIP (
  53. -- VENDOR_SEQ, INFLUENCER_SEQ, STATUS, REQUEST_MESSAGE,
  54. -- COMMISSION_RATE, REQUESTED_BY, REQUEST_DATE
  55. -- ) VALUES (
  56. -- 1, 1, 'PENDING', '파트너십 요청드립니다.',
  57. -- 10.00, 1, NOW()
  58. -- );
  59. -- =============================================================================
  60. -- 4단계: 확인 쿼리
  61. -- =============================================================================
  62. -- 4-1. 테이블 구조 확인
  63. DESCRIBE VENDOR_INFLUENCER_PARTNERSHIP;
  64. -- 4-2. 제약조건 확인
  65. SHOW CREATE TABLE VENDOR_INFLUENCER_PARTNERSHIP;
  66. -- 4-3. 인덱스 확인
  67. SHOW INDEX FROM VENDOR_INFLUENCER_PARTNERSHIP;
  68. SELECT '🎉 새로운 파트너십 테이블 생성 완료!' as result;