【发布时间】:2016-03-19 09:01:16
【问题描述】:
我在做规范化问题时似乎遇到了一个奇怪的问题。当我给出与实际姓名的关系时,我可以很容易地弄清楚这些,但是当我得到字母时,这似乎要困难得多。
对于下面的问题我不知道为什么不是3NF,为什么是2NF。
给定 R(A、B、C、D、E、F)
FDs = {AB->C, DBE->A, BC->D, BE->F, F->D}
因此,对于 2NF,所有右侧属性必须在功能上完全依赖于左侧属性。对于 3NF,要么所有左侧属性必须是超级键,要么右侧属性必须是主要属性。
我试着把它画出来,但我什至找不到候选键。谁能帮我确定为什么这不是 3NF?另外,这里的候选键是什么?因为我没有看到任何具有等于原始关系的闭包的属性。
【问题讨论】:
-
候选键可能是复合的——当然不能保证它是单例属性。 ABE 不是可能的候选键吗?给定AB,你可以找到C;给定 BE,您可以找到 F,因此可以找到 D,这样就涵盖了所有属性。 BE->F 和 F->D 传递依赖防止它成为 3NF,不是吗?
-
我认为 DBE 可能是另一个候选键。给定 DBE,你可以找到 A;给定BE,你可以找到F;给定AB,你可以找到C;再次涵盖所有属性。
-
BE 是唯一的候选键。 @JonathanLeffler 关于传递依赖是正确的。
-
@MikeSherrill'CatRecall':好点:给定 BE,你可以到达 A 或 D,所以我可能的候选键都是超级键而不是最小键,因此不是候选键。
-
啊,我明白了,谢谢,我会考虑到所有这些,再次尝试这个问题。