Skip to Content
Suffering builds character

6.3정규형

3정규형은 이행(Transitive) 함수 종속 문제를 해결한 정규형을 말함

반대로 말하면 해당 릴레이션이 이행 함수 종속 상태일 경우, 3정규형을 위반했다고 볼 수 있음

💡
Tip

이행 함수 종속

어떤 속성 Y가 식별자 속성이 아닌 일반 속성일 때,
Z가 Y에 종속되고, Y가 X에 종속되면 Z는 X에도 종속됨(이행 종속)

X → Y이고 Y → Z일 경우, X → Z도 성립

3정규형을 충족하기 위해서는 Y → Z의 관계를 제거하고, 각 일반 속성들은 주 식별자에 의해서만 식별되도록 하면 됨

nf3_intro

1-1. 3정규형 위반한 케이스

3정규형을 위반한 테이블 예시는 다음과 같음

nf3_break

주문 테이블
#주문코드회원ID회원명주문일자
1523P001조연웅2020-05-02
1533P002문효은2024-05-02
1562P003손미경2025-12-05
1567P004정송이2025-07-02
1599P005유힘찬2026-05-05

주문 코드(X) → 회원ID(Y) → 회원명(Z)

발생할 수 있는 문제점

1. 이행 함수 종속
주문코드 → 회원ID → 회원명
→ 회원명은 회원ID에 간접적으로 종속되어 있음

2. 갱신 이상
회원명이 변경되면, 해당 회원의 모든 주문 행을 수정해야 함
→ 데이터 중복, 같은 회원명이 여러 주문 행에 반복 저장됨

1-2. 3정규형 적용 후

nf3_apply

주문 테이블
#주문코드회원ID주문일자
1523P0012020-05-02
1533P0022024-05-02
1562P0032025-12-05
1567P0042025-07-02
1599P0052026-05-05
회원 테이블
#회원ID회원명
P001조연웅
P002문효은
P003손미경
P004정송이
P005유힘찬

적용 결과

1. 이행 종속 제거
주문 일자는 주문코드와 회원ID만으로 식별되며, 회원명은 회원ID만으로 식별됨
→ 3NF 충족

2. 갱신 이상 해결
회원명 변경 시, 회원 테이블만 수정하면 됨

Last updated on