데이터베이스 보이스-코드 정규형

From CS Wiki

보이스-코드 정규형(Boyce-Codd Normal Form, BCNF)은 데이터베이스 정규화의 네 번째 단계로, 제3정규형(3NF)을 강화한 형태이다. 보이스-코드 정규형은 제3정규형을 만족하면서, 모든 결정자가 후보 키가 되도록 요구하여 데이터베이스의 설계를 더욱 엄격하게 한다.

보이스-코드 정규형의 조건[edit | edit source]

보이스-코드 정규형을 만족하기 위해서는 다음 조건을 충족해야 한다.

  • 테이블이 제3정규형(3NF)을 만족해야 한다.
  • 모든 결정자(determinant)가 후보 키(candidate key)여야 한다.

여기서 결정자란, 다른 속성을 유일하게 식별할 수 있는 속성을 의미한다. 즉, 보이스-코드 정규형은 후보 키가 아닌 속성이 다른 속성을 결정하지 않도록 하여, 데이터 중복과 무결성을 강화한다.

보이스-코드 정규형의 예[edit | edit source]

BCNF를 만족하지 않는 예시

  • 강의와 교수 정보를 포함한 테이블이 있다고 가정하자. 하나의 강의는 여러 교수가 가르칠 수 있으며, 각 교수는 강의실을 배정받는다. 기본 키는 `강의`와 `교수`의 조합이다.
강의 교수 강의실
데이터베이스 김교수 101호
데이터베이스 박교수 102호
자료구조 이교수 101호

이 테이블에서는 `강의`가 `강의실`을 결정하지만, `강의실`은 기본 키가 아니므로 보이스-코드 정규형을 충족하지 않는다.

  • BCNF에 맞게 변환된 예시

모든 결정자가 후보 키가 되도록 `강의-강의실` 관계와 `강의-교수` 관계를 별도의 테이블로 분리한다.

  • 강의-강의실 테이블
강의 강의실
데이터베이스 101호
자료구조 101호
  • 강의-교수 테이블
강의 교수
데이터베이스 김교수
데이터베이스 박교수
자료구조 이교수
  • 이제 두 테이블 모두 보이스-코드 정규형을 만족하게 되며, 모든 결정자가 후보 키로서 동작한다.

보이스-코드 정규형의 장점[edit | edit source]

보이스-코드 정규형을 적용하면 다음과 같은 장점을 얻을 수 있다.

  • 데이터 중복을 줄이고 저장 공간을 효율적으로 사용할 수 있다.
  • 데이터의 무결성을 강화하여 데이터베이스의 일관성을 높인다.
  • 갱신 이상과 같은 정규화 관련 문제를 예방할 수 있다.

한계와 고려 사항[edit | edit source]

보이스-코드 정규형은 모든 결정자가 후보 키여야 하므로, 데이터베이스 설계를 지나치게 복잡하게 만들 가능성이 있다. 또한, 일부 복잡한 데이터 종속성은 보이스-코드 정규형으로는 완전히 해결되지 않으며, 제4정규형(4NF)이나 제5정규형(5NF)과 같은 추가 정규화가 필요할 수 있다.

관련 정규형[edit | edit source]

  • 제3정규형: 이행적 종속성을 제거하여 데이터 무결성을 향상
  • 제4정규형: 다치 종속성을 제거하여 데이터의 중복 최소화
  • 제5정규형: 조인 종속성을 제거하여 데이터베이스 구조 최적화

같이 보기[edit | edit source]