BCNF (Boyce-Codd Normal Form) 정규화

V A M M U Z·2024년 10월 6일

알아보기

목록 보기
8/13
post-thumbnail

BCNF(Boyce-Codd Normal Form)는 데이터베이스 정규화의 한 단계로, 3NF(제3정규형)보다 더 엄격한 조건을 요구하는 정규형입니다.
제 3정규형보다 조금 더 엄격한 제약 조건을 가지기 때문에 Strong 3NF라고도 한다.

BCNF 정규형을 만족하려면 아래 조건을 만족해야한다.

  1. 제 3정규형(3NF)을 만족해야한다.
  2. 모든 결정자(determinant)가 후보 키(candidate key) 집합에 속해야한다.
    => 속성 A가 속성 B를 결정하면, A는 후보 키여야 한다.

BCNF 정규화의 필요성

데이터 중복 제거

BCNF를 적용하면 불필요한 데이터 중복을 최소화할 수 있습니다.
교수와 강좌 정보가 하나의 테이블에 있으면 같은 강좌에 대해 반복적으로 교수 정보를 기록해야 하는데, BCNF로 분리하면 이러한 중복을 방지할 수 있습니다.

이상 현상 제거

삽입, 삭제, 갱신 시 발생하는 이상 현상을 제거할 수 있습니다.
새로 강좌를 추가하려고 할 때 해당 강좌에 교수 정보가 없다면 삽입할 수 없는 상황이 생길 수 있는데, BCNF로 정규화하면 이러한 문제를 해결할 수 있습니다.


결정자 (Determinant)

다른 속성을 결정하는 역할을 하는 속성 또는 속성집합입니다.
결정자는 항상 유일해야하며, BCNF에서는 이 결정자가 반드시 후보키여야합니다.

후보키 (Candidate Key)

테이블의 각 튜플(행)을 유일하게 식별할 수 있는 속성 또는 속성집합입니다.
하나의 테이블에는 여러 후보키가 있을 수 있으며, 그중 하나는 기본키(Primary Key)로 선택됩니다.


예시

BCNF를 위반하는 경우

학생ID수업ID교수ID
1AP1
2AP1
3BP2

여기서 학생ID와 수업ID가 복합 키로 테이블을 유일하게 식별하지만, 수업ID는 교수ID를 결정합니다. 이는 수업ID가 후보 키가 아니기 때문에 BCNF를 위반하게 됩니다.

BCNF 정규화

BCNF 정규화를 위해 위 테이블을 두 개로 분리합니다.

수업ID교수ID
AP1
BP2
학생ID수업ID
1A
2A
3B

0개의 댓글