---
name: database-table-design
description: 공공데이터 공통표준을 기준으로 새 데이터베이스 테이블을 설계하거나 기존 테이블 설계를 검토한다. 논리 컬럼 목록에서 물리명·영문약어·도메인·타입·길이·PK·감사 컬럼을 추천하거나 standard/strict 검증이 필요할 때 사용한다.
---

# DB 테이블 설계

테이블 설계 요청에 필요한 최소 MCP 도구만 호출한다. 표준사전의 모든 항목을 미리 검색하지
않으며, 서버가 반환한 `unresolved` 또는 후보 충돌이 있을 때만 추가 조회한다.

## 최소 호출 흐름

### 신규 테이블 또는 컬럼 추천

1. 논리 테이블명, 논리 컬럼명 목록, `standard`/`strict` 여부를 확인한다.
2. `suggest_table_columns`를 한 번 호출한다. 기본값인 `include_audit_columns=true`를
   유지한다.
3. `unresolved`가 없으면 추천 결과의 물리명·도메인·타입·길이·DDL 초안을 사용한다.
4. `unresolved`가 있으면 해당 항목만 `search_standard_terms` 또는
   `analyze_standard_term_words`로 추가 확인하고, 임의의 이름은 설계에 넣지 않는다.

### 기존 설계 검증

1. [design-request.md](references/design-request.md)의 입력 형식을 확인한다.
2. `validate_table_schema`를 한 번 호출한다.
3. `error`, `warning`, 후보와 수정안을 요약하고 응답의 `history_id`를 기록한다.
4. 저장 이력의 상세가 필요할 때만 `get_saved_table_design`을 호출한다.

`get_table_validation_rules`는 사용자가 프로파일 규칙을 묻거나 `strict` 판정 근거가
필요할 때만 호출한다. `get_dictionary_stats`, 모든 컬럼의 개별 검색,
`list_saved_table_designs`는 기본 흐름에서 호출하지 않는다.

## 프로파일 핵심

- `standard`: 공통표준용어 영문약어, 활성 도메인, 타입·길이 일치를 중심으로 확인한다.
- `strict`: 표준 검사에 프로젝트 규칙을 추가한다. 테이블명은 활성 단어 영문약어 조합에
  `TB_`를 붙인 대문자 스네이크 형식, PK는 단일 숫자형 `{table_name}_SN`으로 둔다.
- `strict`의 마지막 네 컬럼은 `등록일시(REG_DT)`, `등록자아이디(RGTR_ID)`,
  `수정일시(MDFCN_DT)`, `수정자아이디(MDFR_ID)` 순서와 서버 규칙을 따른다.
- `strict`는 프로젝트 운영 규칙이며 행정안전부 고시의 의무로 표현하지 않는다.

## 결과 형식

컬럼별 논리명, 물리명, 도메인, 타입, 길이, 판정과 수정안을 요약한다. 정확히 일치하면
`확인됨`, 후보 기반이면 `추정`, 의미가 결정되지 않으면 `확인 필요`로 표시한다. MCP 원본
JSON 전체나 사전 통계는 사용자가 요청한 경우에만 보여준다.

## 관련 MCP 도구

기본 도구는 `suggest_table_columns` 또는 `validate_table_schema`이다. 필요할 때만
`search_standard_terms`, `analyze_standard_term_words`, `get_table_validation_rules`,
`get_saved_table_design`을 보조적으로 사용한다.
