关系型数据库设计原则和设计范式

516 阅读1分钟

第一范式

每一列都是不可以在进行分割的单元,也就是说确保每一列的原子性

下面的一个例子是不符合第一范式的:以为它的地址信息还可以进行细分。

image.png

修改成复合第一范式的:

image.png

第二范式

满足第一范式后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情。

下面的一个例子是不符合第二范式的:

存在复合的主键 学号和课程 , 学分只是依赖部分的主键 - 课程,因此并不复合第二范式

学号课程成绩学分
2204017228java903.0
2204017229java993.0

修改成复合第二范式的:

成绩字段都是依赖,学号和课程的字段

学号课程成绩
2204017228java90
2204017229java99

第三范式

必须先满足第二范式,要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键)

先看一个不符合第三范式的设计:

显然商品类别和商品类别Id 产生了冗余数据

商品Id商品类别ID商品类别名称商品名称商品价格
11日用品卫生纸2
11日用品香皂2

修改成复合第三范式的

商品类别Id商品类别名称
1日用品
商品ID商品类别ID商品名称商品价格
11卫生纸2
11香皂2