BCNF 分解能否在给定 F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH} 的情况下保留所有函数依赖性?

Can BCNF decomposition preserve all functional dependencies given F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH}?

Given F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH}, perform a BCNF decomposition and check whether it preserves all functional dependencies.

最小封面是R = {AB->E,C->B,C->G,CD->A,EC->D,G->C,G->H}

我在 R 上执行了 BCNF 分解(必须在最小覆盖上执行)并且我保留了两个依赖项,一个保留,一个不保留。在答案中,他们告诉我所有的依赖关系都被保留了下来。任何人都可以证实这一点吗?

从规范覆盖开始,我们可以看到 A B → E 的行列式不是超键,因此 R 可以替换为:

R1 < (A B E) , { A B → E } >

和:

R2 < (A B C D G H) ,
{ G → C
G → H
C → B
C → G
C D → A
A B C → D } >

在 R2 中,G → C 的行列式不是超级键,因此 R2 可以替换为:

R3 < (B C G H) ,
{ G → C
G → H
C → B
C → G } >

和:

R4 < (A D G) ,
{ D G → A
A G → D } >

所以,最终分解为:

R1 < (A B E) ,
{ A B → E } >

R3 < (B C G H) ,
{ G → C
G → H
C → B
C → G } >

R4 < (A D G) ,
{ D G → A
A G → D } >

和依赖项:

{ C E → D }

未保留。

ABE, CBG, CDA, CE D,GCH 在 BCNF 和无松散连接和依赖保留中。关系键在 bold

只要这个新关系在 BCNF 中,总是有可能添加一个新关系来保留依赖关系。