← 개념서태블릿/PC 버전
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를 한 문장씩 설명한다.
  • 반정규화 상황과 부작용을 안다.