【发布时间】:2019-01-20 11:55:32
【问题描述】:
Boyce–Codd 范式的定义指出,所有非平凡函数依赖的决定因素都必须是超键。
我发现的所有 BCNF 关系示例都使用了候选键。我正在寻找一个实际上有一个超级键作为行列式而不是候选键的示例。
我未能提出仅使用无法转换为使用候选键的超级键的关系。
假设我们有一个与候选键的关系和一个以超键作为行列式的附加函数依赖关系。
R1(A,B,C)
{A}
A,B -> C
这个额外的 FD 是多余的,因为它包含一个明显决定其他属性 (A -> C) 的候选键。
尝试用两个候选键构建另一个示例也是无用的。
R2(A,B,C,D)
{A,B},{B,C}
A,B,C -> D
这与上面的问题完全相同。
我实际上想知道是否有没有候选键的示例。但为什么定义会超出必要的范围呢?或者定义是否等效,因为依赖项总是可以转换的?
【问题讨论】:
-
根据 superkey & CK 的定义,每个 CK & superkey 决定了每个属性子集。因此,如果您允许 CK 确定某些事物作为 any 条件(包括 BCNF)的一部分,您还必须允许超级键确定这些事物,因为如果CK 可以。
标签: database key relational-database database-normalization bcnf