먼저 종속성에 대한 정식 커버를 계산해야합니다. 이 경우에는은 : (독특한) 후보 키 B G
, 기능적 종속성 만족 BNCF이다
{ A B → C
A B → D
C → E
C → F
G → A
G → F } >
입니다. 그런 다음 BCNF를 위반하는 기능적 종속성 X → Y
부터 시작하여 X
, X+
의 종료를 계산하고 원본 관계 R<T,F>
을 두 개의 관계 R1<X+>
및 R2<T - X+ + X>
으로 바꿉니다. 그렇지 않으면 우리가 적용, 그리고
R2 < (A B G) ,
{ G → A } >
우리는 BCNF를 만족 있는지 확인하기 위해 각 분해 관계를 확인 :
R1 < (A B C D E F) ,
{ A B → C
A B → D
C → E
C → F} >
과 : 그래서,이 경우 종속성 A B → C
을 chosing, 우리는 원래 관계를 교체 재귀 적으로 알고리즘. 이 경우
는, 예를 들어,
R1
에 키 때문에
C -> E
는 BCNF를 위반
A B
, 우리는 함께
R1
교체 :
R3 < (C E F) ,
{ C → E
C → F } >
과 : 만족
R4 < (A B C D) ,
{ A B → C
A B → D } >
이 관계를 BCNF.
R5 < (A G) ,
{ G → A } >
과 : (키가 B G
입니다 beacuse) R2
너무 BCNF를 만족하지 않기 때문에
마지막으로, 우리는 R2
에서 분해 BCNF에
R6 < (B G) ,
{ } >
합니다.
따라서 최종 분해는 R3
, R4
, R5
및 R6
의 관계로 구성됩니다. 또한 원본 관계 에 대한 종속성 G → F
은 분해시이 유실됨을 알 수 있습니다.
답장을 보내 주셔서 감사합니다. 나는 아직도 혼란 스럽다. R1과 R2로 분해되면 FD : G-> F가 사라진 것 같습니다. 이것은 내가 처음부터 혼란스러워하는 곳입니다. 분해가 진행되는 동안 일부 FD를 삭제해도 괜찮습니까? 이것에 대한 나의 이해는 매우 불분명하다. 나는 어떤 도움을 주셔서 감사합니다. – Rana
@Rana 내가 대답의 마지막 문장에서 말했듯이 : "원래의 관계에 대한 의존성 G → F가 분해에서 상실된다는 것을 또한 주목할 수 있습니다."실제로 알고리즘에 의해 얻어진 분해에서 BCNF의 경우 일부 종속성이 손실됩니다.이것은 원래 스키마 (무결성 제약 조건, 기능적 종속성이 무결성 제약 조건으로 간주 될 수 있음)에 대한 중요한 정보를 잃어버린 점에서 부정적인 사실입니다. – Renzo
BCNF 대신 3NF (제 3 정규형)를 사용할 수 있습니다. 분해 알고리즘으로 인해 종속성이 손실되지 않는다는 보장이 있기 때문입니다. 그러나 때로는 결과에 중복성과 같은 몇 가지 예외가 있습니다. 사실 이것은 정규화 이론에서 잘 알려진 사실이며, 실제로 이런 이유로 BCNF가 아닌 3NF가 사용됩니다. – Renzo