# 마스터 테이블 DDL > 지자체·회원·지정판매소·기본코드·대행소·담당자·업체·무료대상자. > `06-데이터베이스정리구조.md` 네이밍 규칙 적용. --- ## 1. local_government (지자체) ```sql CREATE TABLE IF NOT EXISTS `local_government` ( `lg_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '지자체 PK', `lg_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '지자체명(예: OO구청)', `lg_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '지자체/구군 코드(행정코드)', `lg_sido` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '시/도', `lg_gugun` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '구/군', `lg_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '주소', `lg_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용', `lg_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`lg_idx`), UNIQUE KEY `uk_lg_code` (`lg_code`), KEY `idx_lg_state` (`lg_state`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지자체(테넌트 루트)'; ``` --- ## 2. member (회원) — 기존 테이블 확장 기존 `member` 테이블에 지자체 FK 추가. ```sql ALTER TABLE `member` ADD COLUMN `mb_lg_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '소속 지자체 PK(지자체관리자만 사용)' AFTER `mb_group`, ADD KEY `idx_mb_lg_idx` (`mb_lg_idx`); ``` | mb_level | mb_lg_idx | 비고 | |----------|-----------|------| | 4 (super admin) | NULL | 전체 지자체 접근 | | 3 (지자체관리자) | 지자체 PK | 해당 지자체만 | | 2 (지정판매소) | NULL | 소속은 designated_shop.ds_lg_idx 로 판단 | | 1 (일반) | NULL | 지자체 필터 없음 | --- ## 3. designated_shop (지정 판매소) 노션 ERD의 Retailer. 고정 가상계좌(`ds_va_number`) 보유. ```sql CREATE TABLE IF NOT EXISTS `designated_shop` ( `ds_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '지정판매소 PK', `ds_lg_idx` INT UNSIGNED NOT NULL COMMENT '소속 지자체 FK', `ds_mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '로그인 회원 FK(1:1)', `ds_shop_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '판매소번호', `ds_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '상호명', `ds_biz_no` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '사업자번호', `ds_rep_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대표자명', `ds_va_number` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '고정 가상계좌 번호', `ds_zip` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '우편번호', `ds_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '도로명주소', `ds_addr_jibun` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '지번주소', `ds_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '일반전화', `ds_rep_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '개인전화', `ds_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이메일', `ds_gugun_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '구코드', `ds_designated_at` DATE NULL DEFAULT NULL COMMENT '지정일자', `ds_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 2=폐업, 3=직권해지', `ds_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`ds_idx`), KEY `idx_ds_lg_idx` (`ds_lg_idx`), KEY `idx_ds_mb_idx` (`ds_mb_idx`), UNIQUE KEY `uk_ds_shop_no` (`ds_shop_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지정판매소'; ``` --- ## 4. code_kind / code_detail (기본코드) 기능목록 F-MD-01: 도/특별시/광역시, 구군 코드, 봉투 구분(일반·재사용·음식물), 용량별 코드, 작업 권한 등. ```sql CREATE TABLE IF NOT EXISTS `code_kind` ( `ck_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '코드종류 PK', `ck_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '종류 코드(A~Y 등)', `ck_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '종류 명칭', `ck_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용', `ck_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`ck_idx`), UNIQUE KEY `uk_ck_code` (`ck_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='기본코드 종류'; CREATE TABLE IF NOT EXISTS `code_detail` ( `cd_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '세부코드 PK', `cd_ck_idx` INT UNSIGNED NOT NULL COMMENT 'code_kind FK', `cd_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '세부 코드', `cd_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '세부 명칭', `cd_sort` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '정렬 순서', `cd_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용', `cd_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`cd_idx`), KEY `idx_cd_ck_idx` (`cd_ck_idx`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='세부 기본코드'; ``` --- ## 5. agent (판매 대행소) F-MD-04: 새마을금고, 우체국, 농협 등. 지자체별 소속 설정. ```sql CREATE TABLE IF NOT EXISTS `agent` ( `ag_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '대행소 PK', `ag_lg_idx` INT UNSIGNED NOT NULL COMMENT '소속 지자체 FK', `ag_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '대행소 코드', `ag_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '대행소 명칭', `ag_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용', `ag_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`ag_idx`), KEY `idx_ag_lg_idx` (`ag_lg_idx`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='판매 대행소'; ``` --- ## 6. contact (담당자) F-MD-05: 지자체별 소속(구/군/대행소/제작업체), 담당자명, 전화번호. ```sql CREATE TABLE IF NOT EXISTS `contact` ( `ct_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '담당자 PK', `ct_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK', `ct_affinity` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '소속 구분: 구군,대행소,제작업체', `ct_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '담당자명', `ct_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '전화번호', `ct_ref_id` INT UNSIGNED NULL DEFAULT NULL COMMENT '소속 대상 ID(업체/대행소 등)', `ct_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용', `ct_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`ct_idx`), KEY `idx_ct_lg_idx` (`ct_lg_idx`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='담당자'; ``` --- ## 7. company (업체) F-MD-05: 제작업체, 협회, 회수업체. 지자체별. ```sql CREATE TABLE IF NOT EXISTS `company` ( `co_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '업체 PK', `co_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK', `co_type` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '협회,제작업체,회수업체', `co_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '업체명', `co_rep` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대표자명', `co_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '주소', `co_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '전화', `co_biz_no` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '사업자번호', `co_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용', `co_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`co_idx`), KEY `idx_co_lg_idx` (`co_lg_idx`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='업체'; ``` --- ## 8. beneficiary (무료용 대상자) F-MD-06 무료 대상자: 읍/면/동 사무소, 무료대상자, 기타. 구분별 명칭·종료일·상태. ```sql CREATE TABLE IF NOT EXISTS `beneficiary` ( `bf_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '무료대상자 PK', `bf_lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK', `bf_kind` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '읍면동사무소,무료대상자,기타', `bf_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '명칭', `bf_end_date` DATE NULL DEFAULT NULL COMMENT '종료일자', `bf_memo` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '비고', `bf_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 0=삭제', `bf_regdate` DATETIME NOT NULL COMMENT '등록일시', PRIMARY KEY (`bf_idx`), KEY `idx_bf_lg_idx` (`bf_lg_idx`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='무료용 대상자'; ```