-- 1. 마스터 테이블: 옵션 그룹 (예: '집 유형', '창호 색상') CREATE TABLE IF NOT EXISTS `g5_form_group` ( `fg_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '고유 ID', `project_code` varchar(50) NOT NULL DEFAULT 'default' COMMENT '프로젝트 코드', `site_code` varchar(50) NOT NULL DEFAULT 'default' COMMENT '사이트 코드', `fg_code` varchar(50) NOT NULL COMMENT '그룹 코드 (프로그램에서 사용)', `fg_order` int(11) NOT NULL DEFAULT '0' COMMENT '정렬 순서', `is_used` tinyint(1) NOT NULL DEFAULT '1' COMMENT '사용 여부 (1:사용, 0:미사용)', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '삭제 여부 (1:삭제, 0:정상)', `created_at` datetime NOT NULL COMMENT '생성일', `created_by` varchar(20) NOT NULL COMMENT '생성자', `updated_at` datetime NOT NULL COMMENT '수정일', `updated_by` varchar(20) NOT NULL COMMENT '수정자', `fg_temp_1` varchar(255) DEFAULT NULL COMMENT '임시 필드 1', `fg_temp_2` varchar(255) DEFAULT NULL COMMENT '임시 필드 2', `fg_temp_3` varchar(255) DEFAULT NULL COMMENT '임시 필드 3', `fg_temp_4` text DEFAULT NULL COMMENT '임시 필드 4', `fg_temp_5` text DEFAULT NULL COMMENT '임시 필드 5', `fg_extra_1` varchar(255) DEFAULT NULL COMMENT '여분 필드 1', `fg_extra_2` varchar(255) DEFAULT NULL COMMENT '여분 필드 2', `fg_extra_3` varchar(255) DEFAULT NULL COMMENT '여분 필드 3', `fg_extra_4` text DEFAULT NULL COMMENT '여분 필드 4', `fg_extra_5` text DEFAULT NULL COMMENT '여분 필드 5', PRIMARY KEY (`fg_id`), UNIQUE KEY `project_site_fg_code` (`project_code`,`site_code`,`fg_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 폼 옵션 그룹'; -- 2. 디테일 테이블: 그룹에 속한 개별 옵션 CREATE TABLE IF NOT EXISTS `g5_form_option` ( `fo_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '고유 ID', `fg_id` int(11) NOT NULL COMMENT '그룹 ID (g5_form_group.fg_id)', `fo_key` varchar(255) NOT NULL COMMENT 'DB에 저장될 값 (고유값)', `fo_order` int(11) NOT NULL DEFAULT '0' COMMENT '정렬 순서', `is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '기본 선택 여부 (1:기본값)', `is_used` tinyint(1) NOT NULL DEFAULT '1' COMMENT '사용 여부 (1:사용, 0:미사용)', `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '삭제 여부 (1:삭제, 0:정상)', `created_at` datetime NOT NULL COMMENT '생성일', `created_by` varchar(20) NOT NULL COMMENT '생성자', `updated_at` datetime NOT NULL COMMENT '수정일', `updated_by` varchar(20) NOT NULL COMMENT '수정자', `fo_temp_1` varchar(255) DEFAULT NULL COMMENT '임시 필드 1', `fo_temp_2` varchar(255) DEFAULT NULL COMMENT '임시 필드 2', `fo_temp_3` varchar(255) DEFAULT NULL COMMENT '임시 필드 3', `fo_temp_4` text DEFAULT NULL COMMENT '임시 필드 4', `fo_temp_5` text DEFAULT NULL COMMENT '임시 필드 5', `fo_extra_1` varchar(255) DEFAULT NULL COMMENT '여분 필드 1', `fo_extra_2` varchar(255) DEFAULT NULL COMMENT '여분 필드 2', `fo_extra_3` varchar(255) DEFAULT NULL COMMENT '여분 필드 3', `fo_extra_4` text DEFAULT NULL COMMENT '여분 필드 4', `fo_extra_5` text DEFAULT NULL COMMENT '여분 필드 5', PRIMARY KEY (`fo_id`), KEY `fg_id` (`fg_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 폼 옵션 항목'; -- 3. [통합] 서브 디테일 테이블: 그룹과 옵션의 다국어 이름/설명 CREATE TABLE IF NOT EXISTS `g5_common_lang` ( `cl_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '고유 ID', `target_table` varchar(50) NOT NULL COMMENT '대상 테이블명 (예: g5_form_group)', `target_id` int(11) NOT NULL COMMENT '대상 레코드 ID', `lang_code` varchar(10) NOT NULL COMMENT '언어 코드 (ko, en, ja)', `cl_name` varchar(255) NOT NULL COMMENT '화면에 표시될 이름/값', `cl_description` text COMMENT '부가 설명 (툴팁 등)', `updated_at` datetime NOT NULL COMMENT '수정일', `updated_by` varchar(20) NOT NULL COMMENT '수정자', `cl_temp_1` varchar(255) DEFAULT NULL COMMENT '임시 필드 1', `cl_temp_2` varchar(255) DEFAULT NULL COMMENT '임시 필드 2', `cl_temp_3` varchar(255) DEFAULT NULL COMMENT '임시 필드 3', `cl_temp_4` text DEFAULT NULL COMMENT '임시 필드 4', `cl_temp_5` text DEFAULT NULL COMMENT '임시 필드 5', `cl_extra_1` varchar(255) DEFAULT NULL COMMENT '여분 필드 1', `cl_extra_2` varchar(255) DEFAULT NULL COMMENT '여분 필드 2', `cl_extra_3` varchar(255) DEFAULT NULL COMMENT '여분 필드 3', `cl_extra_4` text DEFAULT NULL COMMENT '여분 필드 4', `cl_extra_5` text DEFAULT NULL COMMENT '여분 필드 5', PRIMARY KEY (`cl_id`), UNIQUE KEY `target_lang` (`target_table`,`target_id`,`lang_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 공용 다국어 정보'; -- 4. 변경 이력 테이블 CREATE TABLE IF NOT EXISTS `g5_form_option_history` ( `fh_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '고유 ID', `table_name` varchar(50) NOT NULL COMMENT '변경된 테이블명', `record_id` int(11) NOT NULL COMMENT '변경된 레코드 ID', `action_type` varchar(10) NOT NULL COMMENT '작업 종류 (INSERT, UPDATE, DELETE)', `change_data` longtext COMMENT '변경된 데이터 (JSON)', `changed_at` datetime NOT NULL COMMENT '변경일', `changed_by` varchar(20) NOT NULL COMMENT '변경자', PRIMARY KEY (`fh_id`), KEY `table_name_record_id` (`table_name`,`record_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='[솔루션] 폼 옵션 변경 이력';