연습 2 · 비교
비키 결정자였던 교수명을 분리하면, 이행 종속이 사라지고 각 결정자가 키가 된다
원래 릴레이션에서는 교수명 → 학과가 문제였고, 분해 후에는 교수 정보와 수강 관계가 분리되어 3NF와 BCNF를 함께 만족합니다.
분해 전 · 원래 릴레이션에서 무엇이 잘못됐는가
원래 스키마와 후보키
R(학번, 과목코드, 교수명, 학과)
후보키 = {학번, 과목코드}
{학번, 과목코드} → 교수명
교수명 → 학과, 과목코드
문제가 되는 종속 사슬
후보키
{학번, 과목코드}
비키 결정자
교수명
비주요 속성
학과
학과는 후보키에서 직접 정해지지 않고 교수명을 한 번 거쳐 결정됩니다. 즉 이행 종속이므로 3NF를 위반합니다.
교수명 중심으로 분해
분해 후 · 각 릴레이션에서 결정자가 키가 되도록 재구성
R1(교수명, 과목코드, 학과)
PK = 교수명
교수명 → 과목코드, 학과
교수 정보는 한 테이블에 모읍니다. 문제를 만들던 결정자 교수명이 이제는 이 릴레이션의 가 됩니다.
R2(학번, 교수명)
PK = {학번, 교수명}
학생이 어떤 교수를 수강하는지만 보존
학생-수강 관계만 남기면 더 이상 학과 같은 교수 속성이 끼어들지 않습니다. 원래 후보키의 역할은 여기서 관계 키로 유지됩니다.
분해 후에는 두 릴레이션 모두에서 함수 종속의 결정자 = 키입니다. 그래서 3NF를 넘어서 BCNF도 만족합니다.