检查解压缩是否在Boyce Codd Normal Form中

时间:2014-03-10 19:26:05

标签: relational-database database-normalization functional-dependencies bcnf

考虑具有AB作为主键的模式S =(A,B,C,D),并且以下功能依赖性(FD)保持在其上:AB - > C,AB - > D,BC - > D. Boyce-Codd Normal Form(BCNF)中的以下分解是什么? S1 =(A,B,D)& S2 =(B,C,d)

尝试的答案可能会遗漏: 使用给定的FD,在S1中,密钥是AB;在S2中,关键是BC​​。 S1包含FD AB - > D,其左侧包含其密钥AB。 S2包含FD BC - > D,其左侧包含其密钥BC。 因此,似乎分解在BCNF中。

然而,我们知道BCNF分解是无损的,而这个分解不是。 共同的属性是{B,D},它的闭包仍然是{B,D}。

那么错误在哪里?

1 个答案:

答案 0 :(得分:2)

“无损分解”中的无损意味着:

  • 原始架构
  • 的任何关系
  • *满足原始架构中的所有依赖关系*
  • 可以通过关系投影分解为对应于分解的模式的关系值
  • 并保证这些分解的关系值的自然连接再次产生原始关系值。

这就是“无损”的意思,而且 ALL 就意味着。

它具有 nothing 与FD在分解模式中的可表达性(可能确实被分解“丢失” - 就像你的例子中的情况一样)。

没有错误。