0

R(A,B,C,D,E,G,H)是最小的封面:

{A->E,D->H,D->G,E->C,G->B,G->C,H->D}

候选键:

{AH,AD}

根据 BCNF 的定义,左侧的属性都不是 SK 或 CK。因此,它不在 BCNF 中。是否可以得出所有 FD 都违反 BCNF 的结论?如果是,在分解为BCNF的过程中,按照算法所说,取违反BCNF的FD,例如:X->Y,做R1(XY)和R2( R- Y)的过程

在我们的例子中,我是否需要在整个 FD 上都这样做?如果我这样做,我最终会得到

R1(AE), R2(EC), R3(GB), R4(DH), R5(DG) and R6(AD) 

但是仍然缺少 G->C 和 H->D 并且 R6 从一开始就不在 FD 中。所以这不会使它保持依赖关系吗?

4

1 回答 1

0

是否可以得出所有 FD 都违反 BCNF 的结论?

是的

...并执行 R1(XY) 和 R2(RY) 的程序

标准分析算法将原始模式分解为两个子模式 R1(X+)、R2(R - (X+ - X))。因此,例如,如果您从 AE 开始,您会产生 R1(AEC)(因为 A+ = AEC)和 R2(ABDGH)。然后,如果存在违反 BCNF 的其他依赖关系,则重复其余关系中的步骤。

例如,在这种情况下,可以获得的分解是:

R4(AH)
R5(BG)
R6(DGH)
R7(CE)
R8(AE)  

请注意,通过这种分解,不会保留依赖关系 G -> C(众所周知,该算法可能会丢失一个或多个依赖关系)。

于 2022-01-27T11:15:20.100 回答