我在理解多值依赖关系时遇到了一些麻烦。定义为:当关系中至少有3个属性(如X,Y和Z)时,存在多值依赖关系,对于X的值,存在明确定义的Y值集和一组定义良好的Z值。但是,Y的值集与集Z无关,反之亦然。
Suppose we have a relation R(A,B,C,D,E) that satisfies the MVD's
A →→ B and B →→ D
MVD如何在这里进入A-> B和B-> D?老实说,在查看示例问题之后,我不确定我是否真的理解这个定义。
If R contains the tuples (0,1,2,3,4) and (0,5,6,7,8), what other tuples must
necessarily be in R? Identify one such tuple in the list below.
a) (0,5,2,3,8)
b) (0,5,6,3,8)
c) (0,5,6,7,4)
d) (0,1,6,3,4)
我原以为AB是0,1和0.5,BD是1,3和5,7。答案都没有0,1,3,5,7。
答案 0 :(得分:0)
MVD(多值依赖关系)与“至少3个属性”无关。 (您似乎引用了维基百科的文章,但非正式定义部分错误且部分无法理解。)您需要通过清晰,准确和正确的定义来阅读和思考。 (你可能得到了。)
MVDX↠Y提到了所有属性集合S的两个子集,X& Y.有很多方法可以定义MVD何时保持关系但最简单的状态和方式。设想可能是两个投影XY和X(S-Y)连接到原始关系。其中还提到了第三个子集S-Y。这就是(二进制)JD(连接依赖){XY,X(S-Y)}所说的。
维基百科(虽然那篇文章很乱):
- 当且仅当X Y在R中成立时,R分解为(X,Y)和(X,R-Y)是无损连接分解。
来自this answer:
MVD总是成对出现。假设MVDX↠Y与属性S成关系,归一化为分量XY& X(S-Y)。注意,S-XY是非X非Y属性的集合,并且X(S-Y)= X(S-XY)。然后还有MVDX↠S-XY,归一化为分量X(S-XY)和& X(S-(S-XY)),即X(S-XY)& XY,即X(S-Y)& XY。为什么?请注意,两个MVD都提供相同的组件对。即两个MVD描述相同的条件,即S = XY JOIN X(S-XY)。因此,当MVD持有时,该合作伙伴也会持有。我们可以使用特殊显式& amp;编写每个MVD表达的条件。对称符号X↠Y| S-XY。
对于R =
A,B,C,D,E
0,1,2,3,4
0,5,6,7,8
...
A↠B告诉我们以下加入R:
A,B A,C,D,E
0,1 0,2,3,4
0,5 0,6,7,8
... ...
所以R至少
A,B,C,D,E
0,1,2,3,4
0,1,6,7,8
0,5,2,3,4
0,5,6,7,8
其中两个是新的,但两个是新的但不是选择。
B↠D告诉我们以下加入R:
B,D A,B,C,E
1,3 0,1,2,4
5,7 0,5,6,8
... ...
所以R至少
A,B,C,D,E
0,1,2,3,4
0,5,6,7,8
我们已经知道了。
所以我们还不知道是否有任何选择在R.但我们现在知道R是
A,B,C,D,E
0,1,2,3,4
0,1,6,7,8
0,5,2,3,4
0,5,6,7,8
...
重复,A↠B不添加任何新元组,但B↠D现在提供此连接:
B,D A,B,C,E
1,3 0,1,2,4
1,7 0,1,6,8
5,3 0,5,2,4
5,7 0,5,6,8
... ...
该联接中的一个元组是选择b) (0,5,6,3,8)
。
问题的表达方式,他们可能期望你使用他们给你的定义,就像维基百科中的另外两个。有人说,当
时,α↠β在R中成立
- [...]如果我们用(x,y,z)表示具有α,β,R - α - β值的元组总共等于x,y,z,则每当元组(a,b) ,c)和(a,d,e)存在于r中,元组(a,b,e)和(a,d,c)也应存在于r中。
(唯一能让“正式”定义“用更简单的词语”定义的唯一意义就是也是一个定义。因为这实际上并没有解释它,因为它使用了R - α - β,而它使用R - β。)
通过应用此规则从给定的R开始重复生成R的元组,我们最终会像上面那样生成b) (0,5,6,3,8)
。
PS我通常建议您查看导致您期望“AB为0,1和0.5且BD为1,3和5,7”(无论这意味着什么)或“0”的(不健全)推理,1,3,5,7" 。但是你给出的“定义”(来自维基百科)没有任何意义。所以我建议你考虑一下你在做什么。