我不明白我在这里做错了什么。这就是我的要求:
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)
但它给了我这个错误:
结果与预期不符。修改输入并重试。
我不知道错误在哪里。有人可以向我解释我应该做些什么吗?
答案 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 → E
,F, 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 → G
和secureDevice()
。我们可以使用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的结束。