문제
학생(학번, 이름, 학과), 수강(학번, 과목코드, 성적) 테이블에서 다음과 같은 함수 종속성이 있을 때, BCNF를 위반하는 경우는?
학번 → 이름, 학과 과목코드 → 과목명 (학번, 과목코드) → 성적 이름 → 학과 (동명이인 없고 이름으로 학과 결정)
① 학번이 결정자인 경우 ② 이름이 결정자인 경우 ③ (학번, 과목코드)가 결정자인 경우 ④ 모든 결정자가 후보키인 경우
정답
2번
해설
BCNF는 모든 결정자가 후보키여야 한다는 조건이다. '이름 → 학과' 종속성에서 이름은 후보키가 아니지만 결정자 역할을 하므로 BCNF를 위반한다. 학번과 (학번, 과목코드)는 후보키이므로 문제없다.