4NF,没有功能依赖关系的多值依赖关系

时间:2015-07-10 13:59:53

标签: database database-normalization

很抱歉提出一个可能会考虑基本问题的问题

假设我们有一个关系R(A,B,C,D,E)与多值依赖关系:

A->>乙 B->> d

Relation R没有任何功能依赖性。 接下来,假设我们将R分解为4NF。

我的考虑因素:

由于我们没有任何功能依赖性,唯一的关键是所有属性(A,B,C,D,E)。我们可以通过两种方式来分解关系R:

  1. R1(A,B)R2(A,C,D,E)
  2. R3(B,D)R4(A,B,C,E)
  3. 我的问题是 - 这两个分解是最终的吗?看起来它们是因为没有遗留的重要多值依赖性。或者我错过了什么?

3 个答案:

答案 0 :(得分:0)

当且仅当对于每个非平凡的多值依赖性X - >>时,表是4NF。 Y,X是超级密钥 - 也就是说,X是候选密钥或超集。

在你的第一次分解中(1和R1和R2)B->> D不满意所以它不是依赖保持分解而不是4NF,因为A在第2个表中不是超级密钥。 / p>

另一方面,第二次分解(使用R3和R4的2次)是依赖性保留和无损连接,B和ACE作为各个表中的主键但是它不在4NF中,因为A->> B依赖存在于第二个表中,A不是超级密钥,您必须将第二个表进一步分解为两个可以是{AB}和{ACE}的表。

答案 1 :(得分:0)

因此,如果我按照你的推理(suraj3),R1(A,B)和R2(B,C,D,E)是否正确分解?我认为这将保留FD B->> D.

答案 2 :(得分:0)

假设R中的MVD是{A↠B,B↠D}的传递闭包中的那些,那么:

<1>在R1(A,B)R2(A,C,D,E)中,R = R1 JOIN R2和R1&amp; R2在4NF,并且连接总是满足A↠B。但是仍然有一个约束,即连接中的B↠D不能通过进一步归一化去除,因为R1和R2都不包含B和D.我们不能在R2中使用MVD来表达该约束。我们说MVD B↠D是&#34;没有保留&#34;并分解为R1&amp; R2&#34;不保留MVD&#34;。鉴于一些所谓的R1和&amp; R2,为了检查B↠D在R中的含义是否合理,我们必须检查R = R1 JOIN R2。

在2 R3(B,D)R4(A,B,C,E)中,R = R3 JOIN R4和R3&amp; R4在4NF中,并且连接总是满足B↠D。但是在连接中仍然存在A↠B的约束。如果我们在R4中强制执行,那么B↠D也将在加入R中强制执行。当我们分解R4 = BD JOIN ACE时强制执行。因为原始中的MVD是由每个出现在组件中的强制执行的,所以我们说这些分解&#34;保留MVD&#34;。鉴于一些所谓的R1和&amp; R2,必须是B↠D在R1 JOIN R2 中保存的情况,因为 R = R1 JOIN R2。

PS 1 4NF分解必须是三个组件

MVD总是成对出现。假设MVDX↠Y与属性S成关系,归一化为分量XY&amp; X(S-Y)。注意,S-XY是非X非Y属性的集合,并且X(S-Y)= X(S-XY)。然后还有MVDX↠S-XY,归一化为分量X(S-XY)和&amp; X(S-(S-XY)),即X(S-XY)&amp; XY,即X(S-Y)&amp; XY。为什么?请注意,两个MVD都提供相同的组件对。即两个MVD描述相同的条件,即S = XY JOIN X(S-XY)。因此,当MVD持有时,该合作伙伴也会持有。我们可以使用特殊显式&amp; amp;编写每个MVD表达的条件。对称符号X↠Y| S-XY。

当且仅当它们连接到S时,我们说S的某些组件的JD(连接依赖性)成立。因此,如果S = XY JOIN X(SY)= XY JOIN X(S-XY)则JD * { XY,X(S-XY)}成立。即两个MVD描述的条件是JD。所以某个MVD和某个二进制JD对应。这种看待为什么MVD正常化的一种方法涉及双向连接以及为什么MVD成对出现。导致4NF关系不在5NF的JD是对应于MVD的那些。

您的示例涉及两个不是合作伙伴的MVD,因此您知道无损分解的最终形式将涉及两个连接,每个MVD对一个。

PS 2 &#34;模糊不清假设我们与这些多值依赖关系有关系&#34;

当分解每个 FD (功能依赖性)时,我们通常会为关系提供规范/最小覆盖,即在阿姆斯特朗的公理(必须持有的FD集合)下的传递闭包的某种形式保留了该关系中的所有FD。当我们被告知某些FD持有时,这常常被遗忘。我们必须给予关系的规范/最小覆盖,或者给予任意集合,并且被告知在关系中持有的FD是其传递闭包中的FD。如果我们刚刚给出了一组持有的FD,我们知道其传递闭包中的那些,但可能还有其他的。所以一般来说我们无法正常化。

在这里你给出一些持有的MVD。但它们并不是唯一的,因为每个人都有一个伙伴。此外,其他人可能(并且在此确实)持有。 (例如X↠Y和Y↠Z意味着X↠Z-Y持有。)但是你不能说它们形成规范或最小的封面。获得MVD规范形式的一种方法(每个传递闭包一个独特的形式,希望更简洁!)将是一个最小的封面(一个不能失去任何MVD并且仍然具有相同的传递闭合的封面)增加了每个MVD的合作伙伴。 (对于FD而言,标准的规范形式是最小的。)你也不会说#34;持有的MVD是那些&#34;的传递闭包中的MVD。你只是说那些MVD持有。所以也许有些不在传递闭包中也是如此。所以你的例子无法解决。我们可以猜测你可能意味着这是一个最小的封面。 (它不是规范的。)或者说,关系中的MVD是给定关系中传递闭包的MVD。 (在这种情况下,这是最小的封面。)