2NF和BCNF之间的差异

时间:2014-01-24 10:41:20

标签: relational-database database-normalization

根据wikipedia示例,以下示例不是bcnf,因为存在重叠的候选键(名称和工作,以及名称和承包商)

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

但是,这张表还不在2NF吗?考虑Name和work组成主键, 那么承包商只能从工作中获得,所以应该拆分数据库吗?

如果我的陈述是真的,有人可以给我一个(简单)数据库的例子,该数据库不在BCNF中,但是是2NF吗?

2 个答案:

答案 0 :(得分:3)

  

这个表也不在2NF中吗?

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

nonprime属性表示不属于任何候选键的属性。

答案 1 :(得分:0)

该表格为2NF。表可以有许多候选键。在我们的例子中,我们有两个。因此,没有非关键属性。这意味着所有都是主要/关键属性。工作确定唯一的承包商,同时承包商也确定唯一的工作。