这些依赖项的BCNF分解是什么?
A->BCD
BC->DE
B->D
D->A
获得答案的过程是什么?
答案 0 :(得分:0)
我们可以先将关系R
转换为3NF然后转换为BCNF。
要将关系R
和一组功能依赖关系(FD's
)转换为3NF
,您可以使用 伯恩斯坦的综合 。申请伯恩斯坦的综合 - 左
FD's
是最小化 FD
设为自己的子架构。 例如 :
R = {A,B,C,D,E}
FD's = {A-> BCD,BC-> DE,B-> D,D-> A}
首先我们检查FD's
是否为最小封面(单身右手边,没有无关的左侧属性,没有冗余的FD )
C
和BC->D
中移除了无关的LHS属性BC->E
。所以现在我们将FD作为{A-> B,A-> C,A-> D,B-> D,B-> E,B-> D,D-> A} < / LI>
第二我们使每个FD
成为自己的子架构。所以现在我们有 - (每个关系的键都是粗体)
[R <子> 1 子> = {的 A 下,B}
[R <子> 2 子> = {的 A 强>,C}
[R <子> 3 子> = {的乙下,d}
[R <子> 4 子> = {的乙强>,E}
[R <子> 5 子> = {的 d 下,A}
第三我们看到是否可以组合任何子模式。我们看到 R 1 和 R 2 具有LHS,因此可以将它们组合在一起。类似地,可以组合 R 3 和 R 4 。所以现在我们有 -
S 1 = { A ,B,C}
S 2 = { B ,D,E}
S 3 = { D ,A}
这是 3NF 。现在检查 BCNF ,我们检查是否有任何这些关系(S 1 ,S 2 ,S 3 )违反 BCNF 的条件(即每个功能依赖X->Y
左侧(X
)必须是 超级键 )。在这种情况下,这些都不会违反 BCNF ,因此它也会被分解为 BCNF 。