2017-06-03 99 views
1

我学习函数依赖,我就死在这:理论函数依赖

鉴于表L(A,B,C,d)和FD的:AB-> C,C-> D

我们可以从它得到功能依赖BC-> D吗?为什么?

我会说是,因为我们有C-> D,我们可以去BC-> DB,然后分成BC-> D和BC-> B。这一推理是否正确?

第2范式的表L是?它在第三?它是3.5标准形式吗?

现在这个,我不是肯定的:我认为它排在第二,但不是第三范式,但我不知道,如果它在3.5(也许是的,因为我们只有一个键(AB)?) 如果不是的话,我们怎样才能把它变成3.5NF?

+0

如果你想知道表中的NF是什么,那么你必须找到这些NF的* defintions *。你可以通过查找并设计一个* algorithmn *来将表格放入NF中。 – philipxy

回答

1

从​​你可以得到BC → D,你的推理是正确的。这可以通过使用Armstrong’s axioms显示:

1. From C → D you can derive BC → BD (by augmentation with B) 
2. From BC → BD you can derive BC → D (by decomposition) 

由于关系的唯一候选键是AB(所以AB是首要属性),依赖Ç→d违背了第三范式以及博伊斯-Codd正常形式(有时称为3.5正常形式)。如果每个行列式都是超级密钥,则BCNF中存在关系,但事实并非如此,因为C不是超级密钥。如果,即使行列式不是超级密钥,该关系可能在3NF中,确定性是主要属性(并且由于D不是素数,所以情况并非如此)。模式是在2NF中,因为没有非素数属性取决于候选密钥的真子集。