종속성 보존 관점
BCNF로 분해하면 원래 제약을 한 테이블에서 바로 검증하지 못할 수 있습니다
핵심은 정규화가 더 엄격해졌다는 점보다, 원래 관계에서 보이던 제약 {학번, 과목} → 교수가 분해 뒤에는 어느 한 테이블에도 온전히 남지 않는다는 점입니다.
제약 검증 위치가 R 하나로 모여 있습니다
R(학번, 과목, 교수) {학번, 과목} → 교수 교수 → 과목
과목 속성과 교수 속성이 같은 릴레이션 안에 있으므로, 학생-과목 조합마다 담당 교수가 하나인지 같은 곳에서 확인할 수 있습니다.
직접 확인 가능한 제약
{학번, 과목} → 교수교수 → 과목를 모두 같은 스키마에서 검사할 수 있습니다.
실무 의미
중복 수강 금지 같은 규칙을 단일 테이블 제약으로 다루기 쉽습니다.
BCNF 분해 후
R1(교수, 과목)
직접 검증 가능
교수 → 과목
교수에 따라 과목이 정해진다는 종속은 R1 안에 그대로 남아 있으므로, 이 규칙은 분해 후에도 바로 검증할 수 있습니다.
R2(학번, 교수)
핵심 속성 누락
{학번, 교수} → ???
과목 속성이 빠졌기 때문에, 원래 중요했던 {학번, 과목} → 교수를 이 테이블 하나만으로는 확인할 수 없습니다.
{학번, 과목} → 교수 는 R1에도 R2에도 단독으로 존재하지 않습니다
{학번, 과목} → 교수 → 두 테이블을 JOIN해야만 간접적으로 검증 가능
그래서 BCNF 분해가 무손실이어도, 모든 함수 종속을 각 테이블 내부 제약으로 바로 보존하는 데는 실패할 수 있습니다.
단일 UNIQUE 제약 불가
"한 학생은 같은 과목을 중복 수강하지 않는다"를 한 테이블에서 바로 강제하기 어렵습니다.
검증 시 JOIN 필요
제약 확인이 분해된 두 릴레이션의 결합 결과에 의존합니다.
운영 비용 증가
검증 쿼리와 무결성 관리가 복잡해지고 성능 부담도 커질 수 있습니다.