【问题标题】:R in 3NF if and only if R in BCNF?R 在 3NF 当且仅当 R 在 BCNF 中?
【发布时间】:2016-05-06 01:46:32
【问题描述】:

考虑一个关系R,和一个函数依赖集F,只包括一个函数依赖:{X->A}。 证明如果 R 在 3NF 中当且当 R 在 BCNF 中。

到目前为止,对于 方向发展。我们对F-closure 了解多少?根据定义,我需要检查 F-closure 中的每个函数依赖 Y->B,它的琐碎或 Y 是超键。关于我缺少的 R 的超键是否有一些结论?

【问题讨论】:

  • 这听起来像是一道作业题,stackoverflow 不为学生解决作业题
  • @ChrisMarisic 听起来我同意,但事实并非如此。如果它真的困扰你,我真的试图自己解决。我会编辑。
  • 请展示你为解决它所做的工作
  • 从您的问题中不清楚 F 与您的关系中可能存在的 FD 有何关系。 F 不能是闭包,因为 {A}->{A} 不在其中。也许它是一个规范的覆盖,即闭包正是当它存在时必须存在的 FD。如果不澄清这一点,这个问题就无法回答。

标签: database primary-key functional-dependencies 3nf bcnf


【解决方案1】:

这是证明的草图。

BCNF 中的关系模式意味着该模式也属于 3NF 的事实是由于 3NF 的定义(每个行列式都是超键或仅暗示素数属性,并且我们知道每个行列式都是超键,因为模式BCNF)。

所以我们必须证明,如果关系在 3NF 中,那么它也在 BCNF 中。

现在考虑唯一的依赖项{X->A}。对于 3NF 的定义,要么X 是超键,要么A 是素数。

在第一种情况下,如果X 是一个超键,我们知道该模式也在BCNF 中。

所以,我们只需要检查X 不是(超)键,而A 是素数的情况。 我们可以通过以下步骤证明这种情况是不可能的。

我们只有两种可能,要么X 包含A,要么不包含。

  1. 如果X包含A那么这个依赖是微不足道的,并且由于没有其他依赖,X是一个key,这违背了我们的假设,所以我们有矛盾。

  2. 另一方面,如果X 不包含在A 中,那么X 又是一个键,这又与我们的假设相矛盾。

最后,请注意,在这个证明中,我假设R 中没有其他属性,XU{A} 的一部分,否则这些其他属性应该存在于关系的任何键中,并且应该至少有与他们的另一个依赖关系。

【讨论】:

    猜你喜欢
    • 2016-07-04
    • 2014-01-02
    • 2020-07-20
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    相关资源
    最近更新 更多