BCNF project FD 上的结果关系
BCNF project FD on the result relations
所以我有关系 R(A, B, C, D, E),与 FD
{A->C, CE->B, BC->AD, D-E}.
我想将它规范化为 BCNF。
因为 A->C 和 D->E 违反了 BCNF。我从 ABCDE 中减去 C 和 E
这将是 ABD。但是我如何将原始关系的 FD 投射到新的 ABD 关系中呢?我被告知在 ABD 上产生的 FD 将是
{AB->D, AD->B}
不太明白。
如有任何帮助,我们将不胜感激!
在分解模式上投影一组依赖关系的算法是指数级的,因为应该计算分解模式属性的每个子集的闭包,并查看闭包的哪些属性属于分解关系。但是,在简单的情况下,就像您的示例一样,很容易检查所有可能的子集(六个):
A+ = AC
B+ = B
D+ = DE
AB+ = ABCDE (D is present in ABD, so AB → D is in the projection)
AD+ = ABCDE (B is present in ABD, so AD → B is in the projection)
BD+ = BDE
所以我有关系 R(A, B, C, D, E),与 FD
{A->C, CE->B, BC->AD, D-E}.
我想将它规范化为 BCNF。
因为 A->C 和 D->E 违反了 BCNF。我从 ABCDE 中减去 C 和 E 这将是 ABD。但是我如何将原始关系的 FD 投射到新的 ABD 关系中呢?我被告知在 ABD 上产生的 FD 将是
{AB->D, AD->B}
不太明白。
如有任何帮助,我们将不胜感激!
在分解模式上投影一组依赖关系的算法是指数级的,因为应该计算分解模式属性的每个子集的闭包,并查看闭包的哪些属性属于分解关系。但是,在简单的情况下,就像您的示例一样,很容易检查所有可能的子集(六个):
A+ = AC
B+ = B
D+ = DE
AB+ = ABCDE (D is present in ABD, so AB → D is in the projection)
AD+ = ABCDE (B is present in ABD, so AD → B is in the projection)
BD+ = BDE