📜  3nf (1)

📅  最后修改于: 2023-12-03 15:29:11.773000             🧑  作者: Mango

3NF(第三范式)

3NF是正规化(Normalization)过程中的第三个范式,它是一种用来规范关系型数据库中表的设计的方法。在数据库设计中,在2NF基础上,如果再移除所有非主属性对主键的传递依赖,则达到了3NF。

1. 什么是3NF?

3NF是一个关系模式,要求每个非主键字段都只依赖于主键,而不依赖于其他非主键字段。意思是:一个关系模式只要满足第一范式和第二范式,并且关系模式中的所有非主属性都不传递依赖于主键,则它符合第三范式。

2. 3NF的优点
  • 数据冗余少
  • 搜索速度快
  • 可更新性更好
3. 实现3NF

在实现3NF之前,必须先实现1NF和2NF。下面是一些关于实现3NF的指导原则:

第一步:确定主键

首先,确定每个表的唯一主键。主键控制了表中数据的唯一性和完整性。如果没有适当地定义主键,关系模式就不能正确的实现2NF或3NF。

第二步:消除传递依赖

使用3NF规范,我们需将数据表中所有的传递依赖给消除。在两个或更多的字段之间有传递依赖时,“传递”表示一个非主属性字段属于另一个非主属性字段的子集。

传递依赖的例子:

| 订单号 | 日期 | 顾客 | 顾客ID | 产品名 | 单价 | 数量 | | ----- | ---- | ---- | ------ | ------ | ---- | ---- | | 1 | 1/1 | 张三 | 1001 | 冰箱 | 5000 | 1 | | 1 | 1/1 | 张三 | 1001 | 电视机 | 3000 | 1 |

上述表格中有很多重复数据,这就是传递依赖。在消除这种依赖后,将得到下面的三个表格:

表1:订单信息

| 订单号 | 日期 | 顾客 | 顾客ID | | ----- | ---- | ---- | ------ | | 1 | 1/1 | 张三 | 1001 |

表2:产品信息

| 产品名称 | 单价 | | ------- | ---- | | 冰箱 | 5000 | | 电视机 | 3000 |

表3:订单详细信息

| 订单号 | 产品名称 | 数量 | | ----- | ------ | ---- | | 1 | 冰箱 | 1 | | 1 | 电视机 | 1 |

第三步:创建新的表

在第二步中,你应该已经得到了新的关系模式。将它们转换成新的表。

第四步:检查新表的1NF和2NF

以新表为目标进行检查,确保每个表都处于1NF和2NF状态。

第五步:将新表转换成3NF

确保每个非主属性只与主键相关,而不与其他非主属性相关。

4. 总结
  • 3NF是数据库设计过程中的一种规范。
  • 通过消除传递依赖性来实现3NF。
  • 3NF可以减少冗余数据,提高数据查询速度。