BCNF exercise

BCNF 판별은 비슈퍼키 결정자를 찾는 문제다

후보키를 찾은 뒤 모든 함수 종속의 왼쪽이 슈퍼키인지 검사합니다. 결정자가 슈퍼키가 아니면 BCNF 위반이고, 해당 종속을 기준으로 분해합니다.

관계

R(학생, 교수, 과목)에서 함수 종속을 검사합니다.

후보키

{학생, 교수}가 전체 튜플을 식별한다고 봅니다.

위반 신호

교수만으로는 전체 행을 식별하지 못합니다.

함수 종속별 BCNF 판별

순서 종속 결정자 검사 판정
01 {학생, 교수}가 과목 결정 {학생, 교수}는 후보키이므로 슈퍼키입니다. BCNF 조건을 만족합니다.
02 교수가 과목 결정 교수는 후보키가 아니고 전체 행을 식별하지 못합니다. 비슈퍼키 결정자이므로 BCNF 위반입니다.
03 분해 기준 위반 종속 교수, 과목을 별도 관계로 분리합니다. 교수_과목(교수, 과목)과 학생_교수(학생, 교수)로 나눕니다.

위반의 원인

  • 한 교수가 한 과목을 담당한다는 사실이 여러 행에 반복됩니다.
  • 교수의 담당 과목이 바뀌면 여러 학생 행을 함께 고쳐야 합니다.
  • 학생 정보 없이 교수와 과목 사실만 저장하기 어렵습니다.

분해 후 확인

BCNF 분해는 중복과 이상 현상을 줄이지만, 원래 종속을 조인 없이 모두 검증할 수 있는지는 별도로 봐야 합니다. 그래서 실무에서는 무손실 조인과 종속성 보존을 함께 점검합니다.