我正在学习功能依赖,我对此感到困惑:
鉴于表L(A,B,C,D)和FD> s:AB-> C,C-> D
我们可以从它获得功能依赖BC-> D?为什么呢?
我会说是的,因为我们有C-> D,我们可以去BC-> DB,然后将它分成BC-> D和BC-> B.这种推理是否正确?
表L是否为第二范式?它排在第3位吗?它是3.5正常形式吗?
现在,我不确定:我认为它在第二种,但不是第三种正常形式,但我不知道它是否在3.5(也许是的,因为我们只有一个键(AB)?) 如果不是,我们将如何将它变成3.5NF?
答案 0 :(得分:1)
从AB → C, C → D
,你可以推导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是素数属性),因此依赖关系C→D违反第三范式以及Boyce-Codd范式(有时称为3.5范式)。如果每个行列式都是超级密钥,则关系在BCNF中,而事实并非如此,因为C
不是超级密钥。如果,即使决定因素不是超级密钥,则确定性是一个主要属性(由于D
不是素数,因此不是这种情况),因此关系可以是3NF。模式取而代之的是2NF,因为没有非素数属性依赖于候选键的适当子集。