1과목 · 데이터 모델링의 이해·6장
정규화 (Normalization)
함수 종속, 이상 현상, 제1~3NF·BCNF, 반정규화까지 정리합니다.
1. 정규화란
테이블 구조를 단계적으로 분해해 중복을 제거하고 이상 현상을 예방하는 논리 설계 기법.
이상 현상 (Anomaly)
- 삽입 이상: 불필요 값을 함께 넣어야 한다.
- 갱신 이상: 한 사실을 고치려면 여러 행을 동시 수정.
- 삭제 이상: 한 행을 지우면 다른 정보도 사라짐.
2. 함수 종속 (FD)
A → B: A가 정해지면 B가 유일하게 결정됨.
- 완전 함수 종속: 복합키 전체가 있어야 결정.
- 부분 함수 종속: 복합키 일부만으로 결정 → 2NF 제거 대상.
- 이행 종속: A→B, B→C 일 때 A→C → 3NF 제거 대상.
3. 정규형 단계
1NF
모든 속성이 원자값. 반복 그룹·배열 금지.
2NF
1NF + 부분 함수 종속 제거.
주문상세(주문번호, 상품코드, 상품명, 수량)
└ 상품명은 (상품코드)에만 종속
→ 주문상세(주문번호, 상품코드, 수량) + 상품(상품코드, 상품명)
3NF
2NF + 이행 종속 제거.
사원(사번, 부서번호, 부서명)
└ 부서명이 부서번호에 종속(이행)
→ 사원(사번, 부서번호) + 부서(부서번호, 부서명)
BCNF
모든 결정자가 후보키여야 한다.
4NF / 5NF
다치 종속 / 조인 종속 제거. SQLD 시험에선 1~3NF + BCNF 중심.
4. 반정규화
성능·복잡성을 위해 의도적으로 중복 허용.
언제
- 조인이 너무 많아 성능 저하.
- 파생 속성 미리 저장하면 조회 극적으로 빨라짐.
- 대량 집계 뷰 필요.
위험
- 갱신 이상 가능성↑
- 유지보수 부담↑
원칙: 정규화 먼저 → 성능 측정 후 반정규화.
5. 자주 출제되는 포인트
- 이상 현상 3가지: 삽입·갱신·삭제.
- 2NF = 부분 FD 제거.
- 3NF = 이행 FD 제거.
- BCNF = "모든 결정자가 후보키".
- 반정규화는 정규화 뒤에.
6. 요약 체크리스트
- 3가지 이상 현상의 예를 든다.
- 완전·부분·이행 FD를 구분한다.
- 1~BCNF를 한 문장씩 설명한다.
- 반정규화 상황과 부작용을 안다.