1

给定F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH},执行 BCNF 分解并检查它是否保留了所有功能依赖关系。

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

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

4

2 回答 2

2

从规范覆盖开始,我们可以看到行列式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 }

不保存。

于 2017-03-22T21:21:18.453 回答
2

AB E、C BG、CD A、CE D、G CH在BCNF中,并且是无损连接和依赖保存。关系键以粗体显示

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

于 2017-03-27T05:53:02.493 回答