常见的三类范式

想要弄明白常见的三类范式,需要先搞清楚几个基本概念。

1.概念

(1)范式:关系数据库中满足某一特定级别关系的集合。即:关系数据库中的关系是要需要满足一定要求的,满足不同的要求即为不同的范式。

(2)属性:对表格中的每一列人为定义一个名字,这个名字称为属性。

(3)码:表中(关系中)某个属性组能够唯一地确定一个元组(表中具体的某一行也称为记录),则称该属性或属性组为码。

(4)候选码:表中(关系中)某个属性组的值能够唯一地标识一个元组(表中具体的某一行也称为记录),则称该属性或属性组为候选码。

举例理解码与候选码的关系:

实体学生具备属性:学号、身份证号、姓名3个属性。则{学号}能够唯一的确定一名学生。同理可得{学号,身份证号}、{学号,身份证号,姓名}、{身份证号}、{身份证号,姓名}也能够唯一的确定一名学生,以上均是码。通过观察以上不同的码,有一部分码中包含多余的属性。将这些多余的属性去掉,进行整合,则{学号},{身份证号}为候选码。在创建数据库时可选择其中的一个候选码做为主码,比如{学号}。

(4)主属性:包含在候选码中的属性,称为主属性。

上面例子中的学号、身份证号均是主属性。

(5)非主属性:不包含在候选码中的属性,称为非主属性或非码属性。

上面例子中的姓名是非主属性。

(6)主码:若表中(关系中)有多个候选码,则选定其中的一个为主码(主键)。

(7)外码:在表中(关系中)属性或属性组A不是该关系的码,但A在另一个表中(关系中)是码,则称A是该关系的外部码,也称外码。

(8)函数依赖:设R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y或称Y函数依赖于X,记作X—>Y。

比如:上面例子中学号—>姓名

(9)完全函数依赖:如果X—>Y,而X1是X的任一真子集,不存在X1—>Y,则称Y对X完全函数依赖。

比如:{学号,数学课程号}—>某学生的数学成绩。

(10)部分函数依赖:如果X—>Y,而X1是X的任一真子集,存在X1—>Y,则称Y对X部分函数依赖。

比如:{学号,课程号}—>{课程名},而{课程号}—>{课程名},刚说明课程号部分函数依赖于{学号,课程号}。

(11)传递依赖:如果存在X—>Y,不存在Y—>X,存在Y—>Z,则Z对X传递函数依赖。

比如:学号—>班级号,班级号—>班级名称,则学号—>班级名称(班级名称对学号存在传递函数依赖)。

2.1NF

如果关系模式R中的所有属性均是最基本属性,即每个属性均不可再分,则称R属于第一范式,简称1NF。

非第一范式
非第一范式的关系转换为第一范式的关系,将所有属性分解为最基本的属性即可。
第一范式关系

3.2NF

如果关系模式R属于1NF,且每一个非主属性完全函数依赖于主码,则称R属于第二范式,简称2NF。

解读:如果一个关系R的主码仅有一个属性,那么此关系R属于第二范式。

非2NF关系范式

上图关系的主码是(学号,课程号),而关系模式中存在学号—>姓名,因此姓名对(学号,课程号)存在部分函数依赖,与2NF的概念不相符。

去掉部分函数依赖关系的分解步骤如下:

(1)将主码属性集合的每一个子集作为新的主码构成一个新的关系模式。

则上图非2NF关系范式可分解为如下三个关系模式。

S(学号,………)

K(课程号,……)

G(学号,课程号,……….)

(2)将完全依赖于新关系模式主码的属性填写到相应的关系模式中。

根据上图非2NF关系范式及(1)中的三个新关系模式可得如下三个关系模式。

S(学号,姓名,性别,系名,公寓名称)

K(课程号)

G(学号,课程号,成绩)

(3)将新关系模式中仅有主码属性的关系模式去掉。

根据(2)得到的结果去掉表2(课程号)关系模式,最终分解为的关系模式如下:

S(学号,姓名,性别,系名,公寓名称)

G(学号,课程号,成绩)

4.3NF

如果关系模式R属于2NF,且每一个非主属性不存在传递函数依赖于主码,则称R属于第三范式,简称3NF。

示例:关系模式S(学号,姓名,性别,系名,公寓名称)中存在学号—>系名,系名—>公寓名称,因此公寓名称对学员传递函数依赖。

去掉传递函数依赖关系的分解步骤如下:

(1)依赖于非主码的所有属性,均做删除处理;

系名—>公寓名称,而系名是非主码,因此从S中删除公寓名称,新的关系S如下:

S(学号,姓名,性别,系名)

(2)新建关系模式L,此关系模式包含非主码依赖的所有属性;

L(系名,公寓名称)

经过第二范式、第三范式分解后非2NF关系范式转化为以下三个新关系:

S(学号,姓名,性别,系名)

G(学号,课程号,成绩)

L(系名,公寓名称)

举报/反馈

wpy04120

200获赞 57粉丝
所有内容仅供参考,如有雷同纯属雷人
关注
0
0
收藏
分享