relational-database - 2NF和BCNF的区别

标签 relational-database database-normalization

根据维基百科示例,以下示例不是 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/

相关文章:

mysql - 如何设计关联多个标签id的关系型数据库?

mysql - 如何在数据库中保存婚姻关系

database - 数据库属性可以是主键和外键吗?

relational-database - 1NF 到底是什么?

relational-database - 这违反了什么样的规范化规则?

database - 6NF和历史属性数据

database-design - 时空数据的表设计

php - 帮助创建一个可重用的 PHP 函数,它将 'dynamically' 调用其他函数

Mysql 中间表 - 最好有重复行?

sql - 数据库规范化