Boyce-Codd 范式的定义指出所有非平凡函数依赖的决定因素必须是超键。
我发现 BCNF 中的所有关系示例都使用了候选键。我正在寻找一个实际上有一个超级键作为行列式的例子,它不是候选键。
我没有想出一个只使用无法转换为使用候选键的超级键的关系。
假设我们有一个候选键和一个额外的函数依赖关系,其中一个超级键作为行列式。
R1(A,B,C)
{A}
A,B -> C
Run Code Online (Sandbox Code Playgroud)
这个额外的 FD 是多余的,因为它包含一个明显确定其他属性 (A -> C) 的候选键。
尝试使用两个候选键构建另一个示例也是无用的。
R2(A,B,C,D)
{A,B},{B,C}
A,B,C -> D
Run Code Online (Sandbox Code Playgroud)
这与上面的问题完全相同。
我实际上想知道是否有没有候选键的例子。但为什么定义会比必要的更广泛?或者定义是否等效,因为依赖项总是可以转换?
database key relational-database database-normalization bcnf