【问题标题】:Difference between 2NF and BCNF2NF和BCNF的区别
【发布时间】:2019-02-22 16:13:36
【问题描述】:

根据一个维基百科的例子,下面的例子不是bcnf,因为有重叠的候选键(姓名和工作,以及姓名和承包商)

Name   Work        Contractor
John   Plumber     Plumber industries
Ryan   Plumber     Plumber industries
Ryan   Elektrician Electro industries

但是,这个表不是也不是2NF吗?考虑 Name 和 work 构成主键, 那么contractor就可以只从work派生出来,所以数据库应该拆分?

如果我的陈述属实,有人可以提供一个(简单的)数据库示例,该示例不在 BCNF 中,而是在 2NF 中?

【问题讨论】:

标签: relational-database database-normalization


【解决方案1】:

这个表不是也不是2NF吗?

不,它不违反 2NF。 2NF 要求每个 nonprime 属性完全依赖于每个候选键。由于您示例中的表没有非主要属性,因此它不能违反 2NF。这是BCNF和2NF/3NF的本质区别。 BCNF 要求每个属性都必须完全依赖于每个键。 2NF 和 3NF 的低范式只需要非主属性。

非主属性是指不属于任何候选键的属性。

【讨论】:

    【解决方案2】:

    该表在 2NF 中。一个表可以有许多候选键。在我们的示例中,我们有两个。因此,没有非关键属性。这意味着所有都是主要/关键属性。 Work 唯一地确定 Contractor,同时 Contractor 也唯一地确定 Work。

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多