Files
2026-06-11 18:47:38 +09:00

64 lines
4.2 KiB
SQL

-- 1. [핵심] UI 리소스 마스터 테이블
-- 이 테이블은 웹사이트의 모든 UI 요소(라벨, 데이터)의 '설계도' 역할을 합니다.
CREATE TABLE IF NOT EXISTS `g5_ui_manager` (
`um_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '고유 ID',
`screen_code` varchar(50) NOT NULL COMMENT '화면 코드 (e.g. order_form)',
`group_code` varchar(50) NOT NULL COMMENT '화면 내 그룹 코드 (e.g. address_info)',
`resource_code` varchar(50) NOT NULL COMMENT '리소스 코드 (개발자가 사용)',
`resource_type` enum('LABEL','DATA') NOT NULL COMMENT '리소스 타입 (라벨, 데이터)',
`resource_desc` varchar(255) DEFAULT NULL COMMENT '리소스에 대한 설명 (관리자용)',
`is_used` tinyint(1) NOT NULL DEFAULT '1' COMMENT '사용 여부',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
`created_by` varchar(20) NOT NULL COMMENT '생성자',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일',
`updated_by` varchar(20) NOT NULL COMMENT '수정자',
PRIMARY KEY (`um_id`),
UNIQUE KEY `resource_identifier` (`screen_code`,`group_code`,`resource_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='[솔루션] UI 리소스 관리자';
-- 2. 계층형 카테고리 테이블 ('DATA' 타입 리소스가 사용할 데이터)
-- um_id를 통해 어떤 리소스에 속한 데이터인지 명시합니다.
CREATE TABLE IF NOT EXISTS `g5_form_category` (
`fc_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '카테고리 고유 ID',
`um_id` int(11) NOT NULL COMMENT 'UI 리소스 ID (g5_ui_manager.um_id)',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '부모 카테고리 ID (0이면 최상위)',
`fc_key` varchar(255) NOT NULL COMMENT 'DB에 저장될 값 (고유값)',
`fc_order` int(11) NOT NULL DEFAULT '0' COMMENT '정렬 순서',
`is_used` tinyint(1) NOT NULL DEFAULT '1' COMMENT '사용 여부',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '삭제 여부',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
`created_by` varchar(20) NOT NULL COMMENT '생성자',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일',
`updated_by` varchar(20) NOT NULL COMMENT '수정자',
PRIMARY KEY (`fc_id`),
KEY `um_id` (`um_id`),
KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='[솔루션] 계층형 폼 카테고리';
-- 3. 공용 다국어 정보 테이블
-- 'LABEL' 타입의 실제 텍스트와 'DATA' 타입의 카테고리 이름을 모두 저장합니다.
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 '대상 테이블명',
`target_id` int(11) NOT NULL COMMENT '대상 레코드 ID',
`lang_code` varchar(10) NOT NULL COMMENT '언어 코드',
`cl_name` varchar(255) NOT NULL COMMENT '화면에 표시될 이름/값',
`cl_description` text COMMENT '부가 설명 (툴팁 등)',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일',
`updated_by` varchar(20) NOT NULL COMMENT '수정자',
PRIMARY KEY (`cl_id`),
UNIQUE KEY `target_lang` (`target_table`,`target_id`,`lang_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci 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 '작업 종류',
`change_data` longtext COMMENT '변경된 데이터 (JSON)',
`changed_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP 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 COLLATE=utf8mb4_general_ci COMMENT='[솔루션] 폼 옵션 변경 이력';