연습 1

BCNF는 모든 결정자가 후보키인지 확인하고, 위반 종속을 분리해 해결한다

원본 릴레이션
R(A, B, C, D)
후보키
{A, B}
함수 종속
{A, B} → C, {A, B} → D, C → D
BCNF 판정
결정자가 후보키가 아니면 바로 위반
규칙: 모든 함수 종속에서 결정자가 슈퍼키여야 BCNF이다.
{A, B} → C
결정자 {A, B} 는 후보키
BCNF 조건을 만족한다.
{A, B} → D
결정자 {A, B} 는 후보키
여기도 문제 없다.
C → D
결정자 C 는 후보키가 아니다
원본 R 은 BCNF가 아니다.
분해
위반을 만든 종속 C → D 를 기준으로 분리
R1(C, D)
보존되는 종속
C → D
기본 키
C
결과
결정자가 키이므로 BCNF
R2(A, B, C)
보존되는 종속
{A, B} → C
기본 키
{A, B}
결과
결정자가 키이므로 BCNF
핵심은 원본에서 문제였던 결정자 C 를, 이제는 키가 되는 릴레이션 안으로 옮겼다는 점이다.
검증 1
무손실 조인
공통 속성 C 가 R1 의 키이므로 R1 ⋈ R2 는 무손실이다.
검증 2
종속성 보존
{A, B} → C 는 R2, C → D 는 R1 에서 직접 확인된다.