我正在解决教科书中的问题,为我的考试做好准备,而且我很难搞清楚这个问题。
考虑一种关系 S(B,O,I,S,Q,d)
FD:S-> D,I-> B,IS-> Q,B-> O我需要进行BCNF分解,然后确定S的所有键。 我做了BCNF分解并确定IS是一个超级密钥,但是我无法弄清楚其余的分解以找出其他密钥。
我还需要找到给定FDS的最小基数,并使用3NF合成算法找到一个无损连接依赖关系 - 保留S到3NF的分解。
非常感谢任何帮助,我在这里感到困惑,我真的在努力解决这个问题。
答案 0 :(得分:1)
{I S}是唯一的关键,这很容易展示。属性I和S仅出现在函数依赖项的左侧部分,因此它们必须属于任何键。由于它们已经是(超级)密钥,因此不存在其他密钥。
功能依赖性已经是最小覆盖(或最小基数),因为:a)每个右边部分只有一个属性; b)在依赖关系IS→Q中,左边部分没有属性是多余的,c)没有依赖是多余的。
所以3NF分解是:
R 1 < (B O), {B→O}>
R 2 < (B I), {I→B}>
R 3 < (我是Q), {I S→Q}>
R 4 < (D S), {S→D}>
等于BCNF中分解的结果。