【学习数据库】范式

文章目录

  • 第一范式
  • 第二范式
  • 第三范式
  • BC范式

把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为范式

关系数据库规范中建立了一个范式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。

第一范式

所有属性均为简单属性,每个属性不可再分。
例如:

组长 组员
马化腾 马云
马克思
马丁路德金

组员属性还可以分,所以这不是第一范式。

将(组合项)组员拆开,就变为第一范式了:

组长 组员
马化腾 马云
马化腾 马克思
马化腾 马丁路德金

第二范式

在第一范式的基础上,每个非主属性都完全函数依赖关系的主码。
例如:

学号 姓名 课程名 成绩
001 小明 语文 85
001 小明 数学 90
001 小明 英语 100

该关系中主码是(学号,课程名)
主属性有学号,课程名(主属性是主码中的每个属性)
非主属性有姓名,成绩(所有属性中去除主属性就是非主属性)
姓名可以由学号决定,而不必用主码(学号,课程名)决定,所以姓名不是完全依赖关系中的主码,而是部分依赖于学号

将上面的关系拆成下面两个关系,就变成了第二范式
学生关系

学号 姓名
001 小明

选课成绩关系

学号 课程名 成绩
001 语文 85
001 数学 90
001 英语 100

第三范式

在第二范式的基础上,非主属性都不传递依赖关系的主码
例如:

学号 姓名 系号 系名
001 小明 5 计算机工程系

该关系的主码是学号
主属性有学号,非主属性有姓名,系号,系名
学号可以决定姓名,系号,系名。系号可以决定系名。这样系名就是传递依赖学号。

将上面的关系拆成下面两个关系,就变成了第三范式
学生关系

学号 姓名 系号
001 小明 5

系部关系

系号 系名
5 计算机工程系

BC范式

在第一范式的基础上,在所有的依赖中,决定因素都包含关系的主码。
性质:所有属性(主属性,非主属性)不存在对关系的主码的部分依赖和传递依赖

比如:

老师 课程 学生
孔老师 计算机图形学 小明
孔老师 计算机图形学 小文
侯老师 数据库原理及应用 小明
傅老师 计算机图形学 小羊

分析一下:一门课可以被多个老师讲,一门课可以被多个学生学,一个学生可以学习多门课。
主码是(课程,学生)。也就是知道学生的姓名和它所学的课程就知道是谁教的。
由于存在根据老师可以决定其所授课程这一依赖,决定因素老师没有包含主码,所以不是BC范式。

将上面的关系拆成下面两个关系,就变成了BC范式
授课关系

老师 课程
孔老师 计算机图形学
侯老师 数据库原理及应用
傅老师 计算机图形学

选课关系

学生 课程
小明 计算机图形学
小明 数据库原理及应用
小文 计算机图形学
小羊 计算机图形学

这两个关系都是双目关系,双目关系一定满足BC范式。

你可能感兴趣的:(学习sql数据库)