【问题标题】:BCNF DecompositionBCNF分解
【发布时间】:2010-12-07 01:51:57
【问题描述】:

我正在尝试找出执行 BCNF 分解的正确步骤。我找到了这个例子,但我不明白如何执行正确的步骤。

架构 = (A,B,C,D,E,F,G,H) FD's + {A -> CGH, AD->C, DE->F, G->G}

有人能给出正确的步骤吗?

【问题讨论】:

  • 你在家庭作业中找到这个例子了吗?
  • 不,它在教科书中,但当然没有回答。我正在尝试找到更多示例,以帮助我完成决赛。
  • 看起来像家庭作业。尝试查看以下slide show。如果你按照它,你应该能够完成练习。
  • 首先不是功课。其次,我查看了许多幻灯片,但它们没有展示如何实际进行 BCNF 分解。我知道它在 BCNF 中。如果幻灯片确实显示了它,这是一个简单的例子,所以它对我没有帮助
  • 我会去我的导师办公室寻求帮助

标签: database relational-database


【解决方案1】:

使用您的 FD 确定最小掩护:

{A -> C, A -> G, A -> H, 
 B -> nothing, 
 C -> nothing,
 D -> nothing,
 E -> nothing,
 F -> nothing
 G -> nothing
 H -> nothing
 DE -> F}

注意 AD -> C 退出是因为 A 单独确定 C 这意味着 D 在 FD 中是多余的(请参阅 Armstrong 的公理 - 增强)。

3NF 和 BCNF 定义与复合键的依赖关系有关。唯一的复合键 你在这里是DEDE 都不参与任何其他非空 FD 因此消除传递依赖并确保依赖属性依赖于 'key, the whole key, and nothing but this key' 在这里不是问题。

打破关系,使FD左侧为键,右侧为 是该键的非键相关属性:

[Key(A), C, G, H]
[Key(D, E), F]

现在从封面中删除这些属性,剩下的都是独立的关系。

[Key(B)]

这应该在 3NF/BCNF 中

【讨论】:

  • 对于 AD -> C,我不明白扩充规则是如何应用的。但是,我确实认为它已被删除,因为它是部分密钥依赖项,这在 2NF 中是不允许的。
  • @Alex W 好点。如果A -> CAD -> CD 通过扩充为真。通过分解我们可以得到AD -> C。但是保留A -> CAD -> C 的选择取决于从给定FD 集合构造最小覆盖的规则。从 FD 的 LHS 中删除 D 并不妨碍在 F+ 中确定 C,因此,“冗余”是删除它的真正基础。
  • 我得到分解为 R1(DEF)、R2(ACGH) 和 R3(ABDE) 的关系。我不明白 B 如何成为候选键。我得到 ABDE 作为上述关系的关键。
猜你喜欢
  • 2012-12-14
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多