use*_*622 5 relational-database database-normalization
根据维基百科示例,以下示例不是bcnf,因为存在重叠的候选键(名称和工作,以及名称和承包商)
Name Work Contractor
John Plumber Plumber industries
Ryan Plumber Plumber industries
Ryan Elektrician Electro industries
Run Code Online (Sandbox Code Playgroud)
但是,这张表还不在2NF吗?考虑到Name和work组成主键,然后承包商只能从work中派生出来,那么数据库是否应该被拆分?
如果我的陈述是真的,有人可以为我提供一个(简单)数据库的例子,该数据库不是在BCNF中,而是2NF吗?
这张表不是也不是 2NF 吗?
不,它不违反2NF。2NF 要求每个非主属性完全依赖于每个候选键。由于您示例中的表没有非素数属性,因此它不会违反 2NF。这就是BCNF和2NF/3NF的本质区别。BCNF 要求每个属性都必须完全依赖于每个键。2NF 和 3NF 的低范式只需要非素数属性。
非主要属性是指不属于任何候选键的属性。