如何将其转换为 Boyce-Codd 范式?

How to transform this into Boyce-Codd Normal Form?

我不明白我做错了什么。这就是我被问到的问题:

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)

但它给了我这个错误:

Result is not as expected. Modify your input and try again.

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

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

A, B → C, E隐含在CK
F, B, A → G 同上
B → B 微不足道
F, C → C, G, E 隐含于 F, C → G, E
C, F → E 是多余的 F, C → G, E
E → G, E 表示 F, C → G, EF, C → E

隐含

{A, B} 是 CK 意味着 A, B → C, E, F, G,加上我们有 F, C → EE → G。我们可以使用 BCNF 算法来分解包含 ((A, B), C, F) 加上你的 J ((C,F), E) 和 R ((E), G)。

你没有解释你的解决方案(你使用的是什么 BCNF 算法,你做了什么选择)。但请注意,在关系中成立的 FD 都是阿姆斯特朗公理在某些明确给定的公理成立时生成的 FD。 (包括因为我们被告知 CK 而持有的那些。)还要注意,在一个 BCNF 算法中,当我们选择一些 FD(函数依赖)X → Y 时,它在违反 BCNF 的模式 R 中持有,我们用模式 X+ 和 R - 替换 R (X+ - X);并且使用的 FD 集是明确给定的 FD 的闭包。