给定
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 分解(必须在最小覆盖上执行)并且我保留了两个依赖项,其中一个被保留,一个不被保留。在答案中,他们告诉我所有的依赖关系都被保留了。可以请任何人确认这一点吗?
给定
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 分解(必须在最小覆盖上执行)并且我保留了两个依赖项,其中一个被保留,一个不被保留。在答案中,他们告诉我所有的依赖关系都被保留了。可以请任何人确认这一点吗?
从规范覆盖开始,我们可以看到行列式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 }
不保存。
AB E、C BG、CD A、CE D、G CH在BCNF中,并且是无损连接和依赖保存。关系键以粗体显示
只要这个新关系在 BCNF 中,总是有可能添加一个新关系来保留依赖关系。