6.3정규형
3정규형은 이행(Transitive) 함수 종속 문제를 해결한 정규형을 말함
반대로 말하면 해당 릴레이션이 이행 함수 종속 상태일 경우, 3정규형을 위반했다고 볼 수 있음
💡
Tip
이행 함수 종속
어떤 속성 Y가 식별자 속성이 아닌 일반 속성일 때,
Z가 Y에 종속되고, Y가 X에 종속되면 Z는 X에도 종속됨(이행 종속)
X → Y이고 Y → Z일 경우, X → Z도 성립
3정규형을 충족하기 위해서는 Y → Z의 관계를 제거하고, 각 일반 속성들은 주 식별자에 의해서만 식별되도록 하면 됨

1-1. 3정규형 위반한 케이스
3정규형을 위반한 테이블 예시는 다음과 같음

주문 테이블
#주문코드 | 회원ID | 회원명 | 주문일자 |
|---|---|---|---|
| 1523 | P001 | 조연웅 | 2020-05-02 |
| 1533 | P002 | 문효은 | 2024-05-02 |
| 1562 | P003 | 손미경 | 2025-12-05 |
| 1567 | P004 | 정송이 | 2025-07-02 |
| 1599 | P005 | 유힘찬 | 2026-05-05 |
주문 코드(X) → 회원ID(Y) → 회원명(Z)
발생할 수 있는 문제점
1. 이행 함수 종속
주문코드 → 회원ID → 회원명
→ 회원명은 회원ID에 간접적으로 종속되어 있음
2. 갱신 이상
회원명이 변경되면, 해당 회원의 모든 주문 행을 수정해야 함
→ 데이터 중복, 같은 회원명이 여러 주문 행에 반복 저장됨
1-2. 3정규형 적용 후

주문 테이블
#주문코드 | 회원ID | 주문일자 |
|---|---|---|
| 1523 | P001 | 2020-05-02 |
| 1533 | P002 | 2024-05-02 |
| 1562 | P003 | 2025-12-05 |
| 1567 | P004 | 2025-07-02 |
| 1599 | P005 | 2026-05-05 |
회원 테이블
#회원ID | 회원명 |
|---|---|
| P001 | 조연웅 |
| P002 | 문효은 |
| P003 | 손미경 |
| P004 | 정송이 |
| P005 | 유힘찬 |
적용 결과
1. 이행 종속 제거
주문 일자는 주문코드와 회원ID만으로 식별되며, 회원명은 회원ID만으로 식별됨
→ 3NF 충족
2. 갱신 이상 해결
회원명 변경 시, 회원 테이블만 수정하면 됨
Last updated on