数据库表的规范化与反规范化
1. 设计进程步入正轨
数据库设计进程已走上正轨,实体关系图(ERD)能够准确反映操作情况,且实体也符合第三范式(3NF)的要求。规范化与实体关系建模相结合,得到了实用的 ERD,其包含的实体可以转换为合适的表结构。
在某些关系中,例如“管理”关系里,项目(PROJECT)对于员工(EMPLOYEE)来说是可选的,因为并非所有员工都管理项目。最终的数据库内容涵盖了多个表,如员工表(EMPLOYEE)、职位表(JOB)、分配表(ASSIGNMENT)和项目表(PROJECT)等。
2. 规范化的重要性及常见范式
规范化是一种用于设计表的技术,其目的是最小化数据冗余。常见的前三种范式为第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。从结构角度看,较高的范式优于较低的范式,因为高范式能减少数据库中的数据冗余。几乎所有的商业设计都将 3NF 作为理想的范式,此外还有一种更严格的 3NF,即博伊斯 - 科德范式(BCNF)。
- 第一范式(1NF) :当所有关键属性都被定义,且其余属性都依赖于主键时,表处于 1NF。不过,1NF 的表仍可能包含部分依赖和传递依赖。部分依赖指的是一个属性仅依赖于多属性主键的一部分;传递依赖则是一个属性依赖于另一个非键属性。单属性主键的表不会出现部分依赖。
- 第二范式(2NF) :表处于 1NF 且无部分依赖时,即为 2NF。所以,当主键仅基于单个属性时,1NF 的表自动成为 2NF。但 2NF 的表仍可能存在传递依赖。
- 第三范式(3NF) :表处于
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



