根据维基百科示例,以下示例不是 bcnf,因为存在重叠的候选键(姓名和工作,姓名和承包商)
Name Work Contractor
John Plumber Plumber industries
Ryan Plumber Plumber industries
Ryan Elektrician Electro industries
但是,这张表不也不是2NF吗?考虑 Name 和 work 构成主键,
那么contractor可以只导出work,所以数据库要拆分吗?
如果我的陈述是真的,有人可以为我提供一个(简单的)数据库示例,该示例不在 BCNF 中,而是在 2NF 中?
最佳答案
isn't this table also not in 2NF?
不,它不违反2NF。 2NF 要求每个非主属性完全依赖于每个候选键。由于您示例中的表没有非素数属性,因此它不会违反 2NF。这就是BCNF和2NF/3NF的本质区别。 BCNF 要求每个属性都必须完全依赖于每个键。 2NF 和 3NF 的低范式只需要非素数属性。
非主要属性是指不属于任何候选键的属性。
关于relational-database - 2NF和BCNF的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21330539/