BCNF分解& 3NF

时间:2016-03-11 05:53:19

标签: database database-relations bcnf

我正在解决教科书中的问题,为我的考试做好准备,而且我很难搞清楚这个问题。

考虑一种关系 S(B,O,I,S,Q,d)

FD:S-> D,I-> B,IS-> Q,B-> O

我需要进行BCNF分解,然后确定S的所有键。 我做了BCNF分解并确定IS是一个超级密钥,但是我无法弄清楚其余的分解以找出其他密钥。

我还需要找到给定FDS的最小基数,并使用3NF合成算法找到一个无损连接依赖关系 - 保留S到3NF的分解。

非常感谢任何帮助,我在这里感到困惑,我真的在努力解决这个问题。

1 个答案:

答案 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中分解的结果。