정규화

정규화 (Normalization)

함수 종속성, 2NF, 3NF, BCNF

정규화의 목적


함수 종속성 (Functional Dependency)


제2정규형 (2NF)

조건: 1NF를 만족하면서, 모든 비프라임 속성이 기본 키 전체에 완전 함수 종속

위반 예시

기본 키: (동아리명, 학번)

만약 '역할'이 '학번'에만 종속  → 부분 함수 종속 → 2NF 위반
만약 '가입날'이 '동아리명'에만 종속 → 부분 함수 종속 → 2NF 위반

정규화 과정

R(A, B, C, D, E, F, G, H, I, J)
  기본 키: {A, B}
  {A,B} → {C}   (완전 FD → 유지)
  {A}   → {D,E,I,J} (부분 FD → 분리)
  {B}   → {F,G,H}   (부분 FD → 분리)

결과:
  R1(A, B, C)
  R2(A, D, E, I, J)
  R3(B, F, G, H)

제3정규형 (3NF)

조건: 2NF를 만족하면서, 비프라임 속성이 기본 키에 대해 이행적 종속이 없어야 함

위반 예시

R2(A, D, E, I, J)
  {A} → {D}
  {D} → {I, J}   ← A → D → I,J : 이행적 종속 → 3NF 위반

결과:
  R2a(A, D, E)
  R2b(D, I, J)

BCNF (Boyce-Codd Normal Form)


후보 키 판별 예제

R(A, B, C, D, E)
FD: AB → C, CD → E, DE → B

AB가 후보 키인가?
  AB → C 가능
  {A,B,C}에서 D, E를 결정 불가
  → 후보 키 아님

ABD가 후보 키인가?
  AB → C   → {A,B,C,D}
  CD → E   → {A,B,C,D,E}  (모든 속성 결정)
  부분 집합 AB, AD, BD 로는 모든 속성 결정 불가
  → ABD는 후보 키 ✓

관련 개념