披露:我正在接受Stanford's online database course。那个论坛已经死了,我希望得到一些帮助。
以下是测验问题:
考虑具有多值依赖关系的关系
R(A,B,C,D,E)
:
A -» B, B -» D
并没有功能依赖。假设我们将
R
分解为第四范式。根据我们处理4NF违规的顺序,我们可以得到不同的最终分解。最终的4NF分解中可能出现以下哪种关系模式?
以下是我的想法:
由于我们没有函数依赖关系,因此唯一的关键是属性集(A,B,C,D,E)
。换句话说,问题中的两个多值依赖都是违反的,我们必须将它们分解。
我正在遵循讲座中给出的分解算法:
计算R [完成]
的键重复直到所有关系都在4NF
Pick any R' with nontrivial A -» B that violates 4NF Decompose R' into R_1(A, B) and R_2(A, rest) Compute functional dependencies and multivalued dependencies for R_1 and R_2 Compute keys for R_1 and R_2
我看到两种分解关系的方法:从A -» B
或B -» D
开始。
从A - »B
开始R(A,B,C,D,E)
|
+-----------+
| |
R_1(A,B) R_2(A,C,D,E)
由于B
和D
不再存在相同的关系,我们没有4NF违规,我们就完成了。我不知道如何计算FD,MVD和密钥。
从B开头 - »D
R(A,B,C,D,E)
|
+-----------+
| |
R_1(B,D) R_2(B,A,C,E)
|
+----------+
| |
R_3(A,B) R_4(A,C,E)
此时,(A
和B
)和(B
和D
)被分解为他们自己的关系,所以我们没有违规,我们'重做。
答案选择:
此时,我完全难过了。我在答案选择中没有看到任何关系,也没有想出能让我在那里的想法:
- CE
- AD
- AE
- ABD
醇>
我不需要直接回答,但我错过了什么?
答案 0 :(得分:1)
正确答案是AD
。
如何获得?
考虑到,与功能依赖关系一样,您可以拥有其他多值依赖关系所隐含的多值依赖关系。例如,有一个伪传递规则(或多值传递规则),表示:
如果X→→Y成立,并且Y→→Z成立,则X→→Z - Y成立
对于此规则,您可以A →→ B
和B →→ D
派生A →→ D
。因此,如果您在4NF中分解关系,则可以从此依赖关系开始,并获取具有属性AD
的表。或者,在您的第一次分解中,在找到R_1(A,B)
和R_2(A,C,D,E)
之后,您应该继续分解R_2
,因为它仍包含非平凡的MVD A →→ D
,找到R_3(A, D)
和R_3(A, C, E)
。