con un clic
db-schema-review
명명 규칙, 정규화, 제약, 삭제 정책 관점에서 스키마를 리뷰한다
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
명명 규칙, 정규화, 제약, 삭제 정책 관점에서 스키마를 리뷰한다
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
API 인증/인가(Authorization) 설계를 리뷰하고, 권한 체크 누락·스코프 설계 미흡·권한 상승 리스크를 탐지한다. 접근 통제의 안전성을 검증한다.
API 이용자를 위한 SDK 릴리스 노트 및 마이그레이션 가이드를 생성한다. 변경 사항을 클라이언트 관점에서 정리하고, 구체적인 전환 절차를 제공한다.
요구사항으로부터 RESTful API 엔드포인트를 설계한다. 네이밍 규칙, 리소스 단위, 에러 처리, 응답 구조를 일관되게 정의한다.
API 에러 코드 체계와 에러 응답 계약(Contract)을 설계한다. 일관된 에러 핸들링 규칙을 정의한다.
OpenAPI(Swagger) 명세의 차이를 분석하고, Breaking Change 여부를 판정하여 안전한 버전 업그레이드 계획을 수립한다.
API 리스트 엔드포인트의 페이지네이션·필터링·정렬 구현을 분석하고, 통일된 표준 규격을 수립한다.
| name | db-schema-review |
| description | 명명 규칙, 정규화, 제약, 삭제 정책 관점에서 스키마를 리뷰한다 |
| argument-hint | 스키마 정의 파일 경로 또는 마이그레이션 디렉터리 |
| user-invocable | true |
| disable-model-invocation | true |
| allowed-tools | Read, Grep, Glob |
당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.
--detailed가 포함되면 6개 절차 전체를 수행하고, 성능 고려 및 삭제 정책까지 포함한 종합 리뷰를 반환한다.$ARGUMENTS에 --detailed가 포함되지 않은 경우 간단 모드로 실행한다.
간단 모드에서는 출력 포맷 중 해당 섹션만 출력한다.
데이터베이스 스키마를 명명 규칙, 정규화 수준, 제약 설계, 삭제 정책의 4개 축으로 종합 리뷰한다.
데이터 정합성, 유지보수성, 확장성을 확보하기 위한 개선 사항을 체계적으로 정리한다.
1-1. 테이블명 명명 규칙 확인 (단수/복수형 통일, snake_case 사용 여부)
1-2. 컬럼명 명명 규칙 확인 (접두어·접미어 일관성)
1-3. 기본키·외래키 명명 패턴 확인 (id, table_id 통일 여부)
1-4. 인덱스명 명명 규칙 확인 (idx_table_column 패턴 등)
1-5. 예약어 충돌 탐지 (order, user, group, key 등)
1-6. 약어 사용 일관성 확인 (num vs number, qty vs quantity 등)
1-7. Boolean 컬럼 명명 확인 (is_, has_, can_ 접두어 사용 여부)
2-1. 제1정규형 위반 탐지 (콤마 구분 값, JSON 배열에 다중 값 저장 등)
2-2. 제2정규형 위반 탐지 (부분 함수 종속)
2-3. 제3정규형 위반 탐지 (이행적 함수 종속)
2-4. 의도적 비정규화 영역 식별 및 타당성 평가
2-5. 비정규화 시 데이터 동기화 메커니즘 확인
2-6. 다대다 관계의 중간 테이블 설계 평가
3-1. 전체 테이블의 기본키 설계 확인 (자연키 vs 대리키)
3-2. NOT NULL 제약 적절성 평가 (필수 컬럼에 적용되었는지)
3-3. UNIQUE 제약 필요 지점 확인 (비즈니스 키의 유일성 보장 여부)
3-4. 외래키 제약 설정 여부 확인 (관계 컬럼에 제약이 존재하는지)
3-5. CHECK 제약 활용 여부 확인 (값 범위 제한, ENUM 대체 등)
3-6. DEFAULT 값 설정 확인 (타임스탬프, 상태 초기값 등)
3-7. 컬럼 데이터 타입 적절성 평가 (VARCHAR 길이, 숫자형 정밀도 등)
3-8. NULL 허용 컬럼의 타당성 검토 (실제로 NULL이 필요한지)
4-1. 물리 삭제와 논리 삭제 구분 사용 여부 확인
4-2. 논리 삭제 컬럼 (deleted_at, is_deleted) 설계 평가
4-3. 논리 삭제 시 UNIQUE 제약과의 충돌 여부 확인
4-4. CASCADE DELETE 설정 및 영향 범위 분석
4-5. 고아 레코드(부모 없는 자식 데이터) 발생 가능성 평가
4-6. 데이터 보존 기간 정책 및 아카이빙 전략 확인
4-7. 개인정보 삭제 요구(GDPR 등) 대응 여부 확인
5-1. 테이블 분할 필요성 평가 (수평 분할, 수직 분할)
5-2. 향후 요구사항 변경에 대한 유연성 평가
5-3. 타임스탬프 컬럼 (created_at, updated_at) 설계 확인
5-4. 폴리모픽 관계 설계의 적절성 평가
5-5. ENUM 타입 vs 참조 테이블 사용 구분 검토
6-1. 각 검사 축별 점수 산정 (A / B / C / D)
6-2. 우선순위 기반 개선 제안 작성
6-3. 전체 스키마의 건전성 종합 판정
# 스키마 리뷰: [프로젝트 / 데이터베이스명]
## 종합 평가
| 검사 축 | 평가 | 주요 지적 사항 |
|----------|------|----------------|
| 명명 규칙 | A / B / C / D | [요약] |
| 정규화 | A / B / C / D | [요약] |
| 제약 설계 | A / B / C / D | [요약] |
| 삭제 정책 | A / B / C / D | [요약] |
| 확장성 | A / B / C / D | [요약] |
**평가 기준**:
A = 우수 / B = 양호(경미한 개선 권장) / C = 개선 필요 / D = 심각한 문제
## 명명 규칙
### 불일치 사례
| 위치 | 현재 | 권장 | 사유 |
|------|------|------|------|
| `table_name.columnName` | camelCase | `column_name` (snake_case) | 프로젝트 규칙과 불일치 |
| `tbl_users` | 접두어 사용 | `users` | 불필요한 접두어는 가독성 저하 |
### 예약어 충돌
| 테이블/컬럼 | 예약어 | 권장 대체명 |
|-------------|--------|------------|
| `order` | SQL 예약어 | `orders` / `purchase_order` |
## 정규화
### 정규화 위반
| 테이블 | 컬럼 | 위반 유형 | 설명 | 개선안 |
|----------|--------|-----------|------|--------|
| `users` | `tags` | 제1정규형 | 콤마 구분 다중 값 저장 | `user_tags` 중간 테이블로 분리 |
### 의도적 비정규화
| 테이블 | 컬럼 | 목적 | 동기화 방식 | 평가 |
|----------|--------|------|------------|------|
| `orders` | `user_name` | 조인 비용 절감 | 트리거 | 타당 / 재검토 필요 |
## 제약 설계
### 부족한 제약
| 테이블 | 컬럼 | 권장 제약 | 사유 |
|----------|--------|------------|------|
| `users` | `email` | UNIQUE | 비즈니스 키 유일성 필요 |
| `orders` | `status` | CHECK | 허용 값 범위 제한 필요 |
| `items` | `category_id` | FOREIGN KEY | 참조 무결성 보장 필요 |
### 부적절한 데이터 타입
| 테이블 | 컬럼 | 현재 | 권장 | 사유 |
|----------|--------|--------|--------|------|
| `products` | `price` | FLOAT | DECIMAL(10,2) | 금액 컬럼에 부동소수점은 부적절 |
## 삭제 정책
### 현재 삭제 방식
| 테이블 | 방식 | 구현 | 문제점 |
|----------|--------|--------|----------|
| `users` | 논리 삭제 | `deleted_at` | UNIQUE 제약과 충돌 가능 |
| `logs` | 물리 삭제 | 없음 | 삭제 정책 미정의 |
### CASCADE 영향 맵
users (DELETE) ├── orders (CASCADE) -- 주문 데이터 연쇄 삭제 │ └── order_items (CASCADE) -- 주문 상세도 연쇄 삭제 └── reviews (SET NULL) -- 리뷰는 남고 user_id는 NULL 처리
## 개선 제안 (우선순위순)
### 우선순위: 높음
1. **[테이블명]**: [구체적 개선 내용 및 이유]
### 우선순위: 중간
2. **[테이블명]**: [구체적 개선 내용 및 이유]
### 우선순위: 낮음
3. **[테이블명]**: [구체적 개선 내용 및 이유]
## 권장 액션
- [ ] [즉시 추가해야 할 제약]
- [ ] [명명 규칙 통일 작업]
- [ ] [삭제 정책 수립 및 문서화]