4NF分解后新关系的主键

时间:2012-04-23 05:06:07

标签: database database-design primary-key

假设我有一个表R,其中包含ABC,其中A是主键。假设我有多值依赖性B-> - > C.我将表R分解为两个新表R1R2,其中R1具有属性AB和键{{1} }和A具有属性R2BC的主键是什么?

我认为答案应该是: 由于4NF要求每个MVD的左侧应该是超级密钥,然后在新表中密钥将是B,尽管整个属性集也可以是超级密钥(尽管是一个微不足道的但是在4NF分解中无关紧要,我认为)。所以,这是我的猜测。

根据Catcall的优秀建议,由于B的多值依赖性,得到的R2表将有许多行具有B的重复值。键的替代选项本身是C,B和C在一起。如果C-> B,C可以是主键,在这种情况下它不是。因此,这种情况下唯一的关键是B,c。有人可以检查我的推理是否正确吗?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你有:

A - >乙

并且

B - > - > ç

这意味着对于A的每个值,只有一个B值,对于B的每个值,都有很多C值。

分解后,这会使(A,B)成为R1的超级密钥,并将(B,C)作为R2的超级密钥。

所以到目前为止的推理是正确的。但是,我不认为你可以在现实世界中结束。如果您正在设计数据库,还需要提出以下问题:

  1. 以下是真的吗? C - > B如果是这样,C将成为您的主键,(B,C)将成为超级密钥。
  2. 以下是真的吗? C - > - > B如果是这样,你在其他两个实体之间基本上有很多连接。