假设我有一个表R
,其中包含A
,B
,C
,其中A
是主键。假设我有多值依赖性B-> - > C.我将表R
分解为两个新表R1
和R2
,其中R1
具有属性A
,B
和键{{1} }和A
具有属性R2
,B
。 C
的主键是什么?
我认为答案应该是: 由于4NF要求每个MVD的左侧应该是超级密钥,然后在新表中密钥将是B,尽管整个属性集也可以是超级密钥(尽管是一个微不足道的但是在4NF分解中无关紧要,我认为)。所以,这是我的猜测。
根据Catcall的优秀建议,由于B的多值依赖性,得到的R2表将有许多行具有B的重复值。键的替代选项本身是C,B和C在一起。如果C-> B,C可以是主键,在这种情况下它不是。因此,这种情况下唯一的关键是B,c。有人可以检查我的推理是否正确吗?
答案 0 :(得分:2)
如果我理解正确,你有:
A - >乙
并且
B - > - > ç
这意味着对于A的每个值,只有一个B值,对于B的每个值,都有很多C值。
分解后,这会使(A,B)成为R1的超级密钥,并将(B,C)作为R2的超级密钥。
所以到目前为止的推理是正确的。但是,我不认为你可以在现实世界中结束。如果您正在设计数据库,还需要提出以下问题: