九游官网地址

2020-04-19由程序员日记发表于数据库教程 浏览11次

目录

文章目录

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

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

第一范式

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

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

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

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

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

第二范式

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

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

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

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

学号姓名001小明

选课成绩关系

学号课程名成绩001语文85001数学90001英语100

第三范式

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

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

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

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

学号姓名系号001小明5

系部关系

系号系名5计算机工程系

BC范式

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

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

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

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

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

选课关系

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

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