Database Normalization (정규화)


DB 정규화

  • 자료 손실이나 불필요한 정보의 도입 없이 데이터 일관성, 데이터 중복을 최소화하고 최대의 데이터 안정성 확보를 위한 안정적 자료 구조로 변환하기 위해서 하나의 테이블을 둘 이상을 분리하는 작업이다.

DB 정규화의 목적

  • 데이터 무결성 유지
    • 자료 저장에 필요한 저장 공간을 최소화하고 자료의 삽입, 갱신 및 삭제에 따른 이상 현상을 제거한다.
  • 자료 구조의 안정화성 최대화를 위해서 이다.

정규화 과정

  • 제1정규화
    • 모든 속성 값이 원자 값을 갖도록 분해한다.
  • 제2정규화
    • 제1정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해한다.
      • 여기서 완전 함수 종속이란 기본키의 부분집합이 다른 값을 결정하지 않는 것을 의미한다.
  • 재3정규화
    • 제2정규형을 만족하고, 기본키가 아닌 속성이 기본키에 직접 종속(비이행적 종속)하도록 분해한다.
      • 여기서 이행적 종속이란 A->B->C가 성립하는 것으로, 이를 A,B와 B,C로 분해하는 것이 제3정규형이다.
  • BCNF 정규화
    • 제3정규형을 만족하고, 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해한다.