天机阁

数据库范式

2022-07-12 · 3 min read
MySQL

范式有哪些?

1NF 第一范式

属性(即表中字段)不能再被分割,也就是这个字段只能是一个值,不能再分为多个其他的字段了。
1NF 是所有关系型数据库的最基本要求,也就是说关系型数据库中创建的表一定满足第一范式。

2NF 第二范式

2NF 在 1NF 的基础上,消除了非主属性对于码的部分函数依赖。

3NF 第三范式

3NF 在 2NF 的基础上,消除了非主属性对于码的传递函数依赖。

函数依赖

函数依赖可分为:

  • 完全函数依赖
  • 部分函数依赖
  • 传递函数依赖

完全函数依赖

关系 R 中,X、Y是属性集,X 决定 Y 的值(X->Y),且任何一个 X(子) 都没办法决定 Y 的值。
设一个学生选课信息的关系模式SC:

SNO CNO CTITLE INAME IPLACE GRADE
学号 课程编号 课程名 授课老师 老师办公地址 成绩

在此关系中,(学号,课程编号)决定成绩为完全依赖。即其中的单个属性(无论是学号还是课程编号)都无法决定成绩。

部分函数依赖

关系 R 中,X、Y 是属性集,X 决定 Y 的值(X->Y),且 X 其中一个子集满足 X(子) 决定 Y 的值。
设一个学生住宿登记关系S1:

SNO SNAME SSEX SROOM
学号 姓名 性别 宿舍

在此关系中,存在函数依赖(学号,姓名)决定性别,但其中学号就已经决定了性别,所以函数依赖(学号,姓名)决定性别就是部分依赖。

传递函数依赖

关系 R 中,X、Y、Z是属性集,X 决定 Y的值(X->Y),Y 不决定 X,Y 决定 Z 的值(Y->Z),则有 X 决定 Z(X->Z)称 Z 传递函数依赖于 X。
设一个图书的关系模式 BOOKS

BNO PNAME PADDRESS
图书编号 出版社名 出版社地址

在此关系中,一个图书编号对应一个出版社名,但一个出版社可能对应多个图书编号(一个出版社可出版多本图书),一个出版社只有一个地址,所以一个图书编号对应一个出版社地址,则有出版社地址对图书编号的传递函数依赖。