Files
jongryangje/docs/기본 개발계획/테이블/01-마스터_테이블_DDL.md

191 lines
8.6 KiB
Markdown
Raw Normal View History

# 마스터 테이블 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='무료용 대상자';
```