BCNF와 3NF의 차이점
BCNF 정의 사용
종속성 X → Y마다 하나 이상인 경우에만 다음 조건 중 하나 이상이 유지됩니다 .
- X → Y는 사소한 기능 의존성 (Y ⊆ X)이거나
- X는 스키마 R의 슈퍼 키입니다
그리고 3NF 정의
각 기능 종속성 X → A에 대해 다음 조건 중 하나 이상이 충족되는 경우에만 해당됩니다.
- X에 A가 포함되어 있거나 (즉, X → A는 사소한 기능 의존성 임)
- X는 슈퍼 키이거나
- A와 X의 설정 차이 인 AX의 모든 요소는 주요 속성입니다 (즉, AX의 각 속성은 일부 후보 키에 포함됨)
간단한 용어로 다음과 같은 차이점이 있습니다.
- BCNF에서 : 모든 부분 키 (프라임 속성)는 수 퍼키 에만 의존 할 수 있습니다 .
이므로
- 3NF에서 : 부분 키 (프라임 속성)는 또한 슈퍼 키 가 아닌 속성 (예 : 다른 부분 키 / 프라임 속성 또는 비 프라임 속성)에 의존 할 수 있습니다 .
어디
- 주요 속성은 후보 키에있는 속성이며,
- 후보 키는 그 관계에 대한 최소한의 퍼키이며,
- 수 퍼키 는 해당 변수에 할당 된 모든 관계에서이 세트의 속성에 대해 동일한 값을 갖는 두 개의 별개의 튜플 (행)이 없음을 보유하는 관계 변수의 속성 세트입니다. 스키마의 모든 속성이 기능적으로 종속되는 관계 스키마의 속성 집합으로 정의됩니다. (수 퍼키는 항상 후보 키를 포함합니다. / 후보 키는 항상 수 퍼키의 하위 집합입니다. 관계에 속성을 추가하여 수 퍼키 중 하나를 얻을 수 있습니다.)
즉, 후보 키의 부분 서브 세트 (전체 세트를 제외하고 사소하지 않은 서브 세트)는 기능적으로 수 퍼키 이외의 다른 것에 의존 할 수 없습니다.
BCNF에없는 테이블 / 관계는 다른 사용자가 피자 예에서 언급 한 업데이트 예외와 같은 예외를 따릅니다. 운수 나쁘게,
- BNCF는 없습니다 항상 얻을 수 있지만,
- 3NF 는 항상 얻을 수 있습니다 .
3NF 대 BCNF 예
차이점의 예는 현재 Wikipedia의 " BCNF (Boyce–Codd normal form)을 충족하지 않는 3NF 테이블 "에서 찾을 수 있습니다 . 다음 테이블은 "테니스 코트"(일부 키 / 프라임 속성)에 따라 BNF가 아닌 3NF를 충족합니다. "Rate Type"(수 퍼키 가 아닌 부분 키 / 프라임 속성 )에 관한 것입니다. 이는 데이터베이스의 테니스 클럽에 고객에게 문의하여 결정할 수있는 종속성입니다.
오늘의 테니스 코트 예약 ( BCNF가 아닌 3NF )
Court Start Time End Time Rate Type
------- ---------- -------- ---------
1 09:30 10:30 SAVER
1 11:00 12:00 SAVER
1 14:00 15:30 STANDARD
2 10:00 11:30 PREMIUM-B
2 11:30 13:30 PREMIUM-B
2 15:00 16:30 PREMIUM-A
테이블의 슈퍼 키는 다음과 같습니다.
S1 = {Court, Start Time}
S2 = {Court, End Time}
S3 = {Rate Type, Start Time}
S4 = {Rate Type, End Time}
S5 = {Court, Start Time, End Time}
S6 = {Rate Type, Start Time, End Time}
S7 = {Court, Rate Type, Start Time}
S8 = {Court, Rate Type, End Time}
ST = {Court, Rate Type, Start Time, End Time}, the trivial superkey
3NF 문제 : 부분 키 / 프라임 속성 "Court"는 수 퍼키 이외의 것에 의존합니다. 대신 부분 키 / 프라임 속성 "Rate Type"에 의존합니다. 즉, 법원을 업그레이드하는 경우 사용자가 수동으로 요율 유형을 변경하거나 요율 변경을 적용하려면 수동으로 법원을 변경해야합니다.
- 그러나 사용자가 법원을 업그레이드하지만 요율을 올리는 것을 기억하지 못하면 어떻게 될까요? 또는 법원에 잘못된 요율 유형을 적용하면 어떻게됩니까?
(기술적 인 용어로, "요금 유형"-> "코트"기능 종속성이 위반되지 않을 것을 보증 할 수 없습니다.)
BCNF 솔루션 : 위의 표를 BCNF에 배치하려면 주어진 관계 / 표를 다음 두 가지 관계 / 표로 분해 할 수 있습니다. 데이터베이스의 고객, 테니스 클럽의 소유자에게 문의하여 확인하십시오.)
요율 유형 ( BCNF 및 BCNF에 의해 암시되는 약한 3NF)
Rate Type Court Member Flag
--------- ----- -----------
SAVER 1 Yes
STANDARD 1 No
PREMIUM-A 2 Yes
PREMIUM-B 2 No
오늘의 테니스 코트 예약 ( BCNF 와 BCNF 가 암시하는 약한 3NF)
Member Flag Court Start Time End Time
----------- ----- ---------- --------
Yes 1 09:30 10:30
Yes 1 11:00 12:00
No 1 14:00 15:30
No 2 10:00 11:30
No 2 11:30 13:30
Yes 2 15:00 16:30
문제 해결 : 이제 법원을 업그레이드하면 요율 유형에 이러한 변경 사항이 반영 될 수 있으며 법원에 잘못된 가격을 청구 할 수 없습니다.
(기술적 인 용어로, "Rate Type"-> "Court"기능 의존성을 위반하지 않을 것을 보장 할 수 있습니다.)