3NF与BCNF
规范化是一个过程,用于最小化关系数据库中数据中存在的冗余。这个过程主要是把大表分成冗余较少的小表。这些较小的表将通过定义良好的关系相互关联。在标准化良好的数据库中,对数据的任何更改或修改都只需要修改一个表。第三范式(3NF)是由EdgarF.Codd于1971年提出的,他也是关系模型和规范化概念的发明者。Boyce-Codd范式(BCNF)是由Codd和raymondf.Boyce于1974年提出的。
什么是3NF?
3NF是关系数据库规范化中使用的第三种规范形式。根据Codd的定义,一个表被称为3NF,当且仅当该表是第二范式(2NF),表中不属于候选键的每个属性都应该直接依赖于该表的每个候选键。1982年,卡洛·扎尼奥洛提出了一个不同于3NF的定义。符合3NF的表通常不包含在**、删除或更新表中的记录时发生的异常。
什么是BCNF?
BCNF(也称为3.5NF)是关系数据库规范化中使用的另一种标准形式。引入它是为了捕捉一些3NF没有解决的异常。表被称为BCNF,当且仅当对于A→B形式的非平凡依赖项,A是一个超键。分解不是BCNF标准形式的表不能保证生成BCNF形式的表(同时保留原始表中存在的依赖关系)。
3NF和BCNF有什么区别?