MySQL之三大范式!

第一范式

确保每列保持原子性:也就是列都是不可再分。

举例说明:

img

在上面表中 家庭信息和学历信息不满足原子性要求,不满足第一范式,进行调整如下:

img

第二范式

首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。

  • 第二范式要求每个表只描述一件事情。

数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关。

举例说明:

img

在上述表中,同一个订单号可以包括不同产品号,因此主键必须是订单号、产品号联合组成。

产品号、产品数量、产品价格与订单号、产品号都相关,但是订单金额 订单时间、订单人仅与订单号相关,与产品号无关。

因此不满足第二范式要求进行调整如下分成两张表。

img

第三范式

确保每列都和主键列直接相关,而不是间接相关。

  • 满足第二范式,并且表中的列不存在对主键列的传递依赖。

举例说明:

img

上表所有属性完全依赖于学号,满足第二范式,但是班主任性别、班主任年龄直接依赖于班主任姓名,并非主键学号。

进行调整如下。

img