【问题标题】:Normalizing & decomposing to BCNF规范化和分解为 BCNF
【发布时间】:2016-05-21 09:49:35
【问题描述】:

我已经获得了关系和功能依赖

并且正在寻找证明它是什么形式的合理性,然后将其转换为 BCNF。

现在我提出它在 3NF 中,因为第二个 FD 是一个传递依赖,其关键属性是它的 RHS。第二个 FD 也违反了 BCNF,因为 C 不是 R 的超级键。

但是 - 我不确定如何分解为 BCNF。

如果我分解成;

这使第一个 FD 无效,并有效地使 (A,C) 成为新密钥 - 所以它看起来不正确!这个关系可以转换成BCNF吗?

【问题讨论】:

  • 已更正图片(抱歉!)

标签: schema primary-key database-normalization bcnf


【解决方案1】:

这个关系可以转换成BCNF吗?

每个关系都可以通过应用“分析算法”在 BCNF 中进行转换,该算法可以在任何关于数据库的好书中找到。

请注意,该关系有两个键,AB 和 AC,因此所有属性都是素数(因此该关系自动处于 3NF 中)。

您必须首先找到所有违反 BCNF 的依赖项,在这种情况下只有 C → B,因为 C 不是超级键。

然后您将关系分解为两个关系,一个包含C 并且所有属性都由它确定(在这种情况下只有B),另一个包含所有其他属性加上C

所以分解其实是:

R1(B, C), with key C, with the only (non-trivial) dependency C → B
R2(A, C), with key AC, without (non-trivial) dependencies

然后必须为每个具有违反 BCNF 的依赖关系的关系重复分解,但在这种情况下不存在这种关系,因为R1R2 都在 BCNF 中。

最后请注意,分解不保留依赖关系。事实上,依赖AB → C 并没有保留在分解中。

【讨论】:

  • 我真的很抱歉 - 我想你可能在我纠正我的图表之前已经回答了(这是错误的)...第二个 FD 是 C-->B 而不是 B-->C?
  • 更正了答案。
猜你喜欢
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2012-12-14
相关资源
最近更新 更多