理论函数依赖

Theoretical functional dependency

我正在学习函数依赖性,但我被困在了这个问题上:

Given the table L(A,B,C,D) and FD's: AB->C, C->D

Can we get functional dependency BC->D from it? why?

我会说是的,因为我们有 C->D,我们可以直接去 BC->DB,然后将其拆分为 BC->D 和 BC->B。这种推理是否正确?

Is table L in 2nd Normal Form? Is it in 3rd? Is it in 3.5 Normal form?

现在这个,我不确定:我认为它是第二范式,但不是第三范式,但我不知道它是否在 3.5 中(也许是,因为我们只有一把钥匙 (AB)?) 如果不是,我们如何将其变成 3.5NF?

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 不是超键。如果行列式不是超键,则关系可以是 3NF,但行列式是素数属性(情况并非如此,因为 D 不是素数)。该架构改为 2NF,因为没有依赖于候选键的适当子集的非素数属性。