数据库三大范式

1NF

所有属性不可再分。满足1NF是关系型数据表的前提。不满足1NF就不是关系型数据表。

2NF

非主属性完全依赖于主属性。
若非主属性仅部分依赖于主属性,则不符合第二范式。
举例:学号,课程号,学分,成绩 四个字段组成一张表格,(学号,课程号)构成主键。

  • 所有属性不能再分,满足第一范式。
  • 但学分仅依赖于课程号,不依赖于学号。所以不满足第二范式。

应该改成:学号,课程号,成绩为一张表。课程号,学分为另一张表。

不满足第二范式会导致四大问题:

  1. 数据冗余。所有元组都需要学分字段,会重复很多遍。
  2. 更新异常。更新学分时,需要把所有元组的值都更新一遍。
  3. 插入异常。还没学生选过的课没法插入。因为学号作为主键不能为空。
  4. 删除异常。删除所有学生成绩会导致课程和学分也被删除。

3NF

不存在传递依赖关系,即非主属性之间没有依赖关系。
若非主属性传递依赖于主属性,则不符合第三范式
举例:学号,专业,专业描述 三个字段组成一张表格,学号是主键。

  • 所有属性不能再分,满足第一范式。
  • 学号是唯一主键,不存在部分依赖关系,满足第二范式。
  • 学号决定专业,专业决定专业描述。所以存在传递依赖关系。不满足第三范式。

应该改成: 学号,专业为一张表。专业,专业描述为另一张表。
不满足第三范式也会导致两大问题:

  1. 数据冗余。
  2. 更新异常。

一般表的设计满足3NF就够了。

posted @ 2021-10-27 07:50  llleonlll  阅读(263)  评论(0)    收藏  举报