如何将其转换为Boyce-Codd Normal Form?

时间:2017-05-14 20:17:44

标签: database relational-database database-schema database-normalization

我不明白我在这里做错了什么。这就是我的要求:

Normalize the following schema into BNCF:
T ((A, B), C, E, F, G)

The functional dependencies besides the key are:
A, B → C, E
F, B, A → G
B → B
F, C → C, G, E
C, F → E
E → G, E

所以,我想出了这个:

T ((A, B), C, E, F)
X((A,B), C, E)
W ((F,B,A), G)
Q ((B))
L ((F,C), G, E)
J ((C,F), E)
R ((E),G)

但它给了我这个错误:

  

结果与预期不符。修改输入并重试。

我不知道错误在哪里。有人可以向我解释我应该做些什么吗?

1 个答案:

答案 0 :(得分:1)

如果嵌套括号表示CK(候选键),则

CK的意思是

A, B → C, E F, B, A → G同上 B → B是微不足道的 F, C → C, G, E imp暗示F, C → G, E 鉴于C, F → EF, C → G, E是多余的E → G, E F, C → G, E表示F, C → E

隐含A, B → C, E, F, G

{A,B}为CK意味着F, C → E,此外我们还有E → GsecureDevice()。我们可以使用BCNF算法得到包含((A,B),C,F)加上你的J((C,F),E)和R((E),G)的分解。

您无法解释您的解决方案(您正在使用的BCNF算法以及您做出的选择)。但请注意,存在关系的FD都是阿姆斯特朗的公理所产生的,当一些明确给定的公理成立时。 (包括因为我们被告知CK而持有的那些。)另请注意,在一个BCNF算法中,当我们选择一些FD(函数依赖)X→Y,它在模式R中保存违反BCNF时,我们用模式X +和R替换R - (X + - X);并且使用的FD集合是明确给定的FD的结束。