范式(Normalization)是数据库设计的一种方法论,目的是减少数据冗余、避免数据异常、提升数据的一致性。
1. 第三范式(3NF)的定义:
第三范式是在满足第一范式(1NF)和第二范式(2NF)的基础上,进一步要求:
表中的字段必须直接依赖于主键,不得存在传递依赖(Transitive Dependency)。
通俗地理解第三范式:
一个表中,每一列数据必须直接与主键相关联,不能通过其他非主键字段间接关联主键。
解决的是非主键属性之间传递依赖的问题。
2. 第三范式(3NF)的作用:
减少数据冗余:
避免字段的重复存储,节省存储空间。提高数据一致性:
避免出现数据更新、插入、删除异常。提高数据库可维护性:
结构更清晰,便于管理和扩展。
3. 第三范式(3NF)原理示例
例如一个订单表:
存在问题:
客户信息(客户名称、地址)和产品信息(产品名称)出现大量重复。
如果客户或产品信息修改,需修改所有相关记录,容易遗漏,造成数据不一致。
4. 第三范式的优化方案(3NF改进):
拆分为三个表:
订单表(
order
):
| 订单号 (PK) | 客户编号(FK) | 产品编号(FK) |
|-------------|----------------|----------------|
| 1001 | C001 | P001 |
| 1002 | C002 | P002 |
| 1003 | C001 | P002 |客户表(
customer
):
| 客户编号 (PK) | 客户名称 | 客户地址 |
|---------------|----------|------------|
| C001 | 张三 | 北京市XX区 |
| C002 | 李四 | 上海市XX区 |产品表(
product
):
| 产品编号 (PK) | 产品名称 |
|---------------|----------|
| P001 | 手机 |
| P002 | 电脑 |
好处:
消除了非主键字段之间的传递依赖关系。
大幅降低数据冗余,提高数据一致性和维护性。