ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

常见的三类范式

2022-06-01 10:02:51  阅读:160  来源: 互联网

标签:关系 三类 范式 常见 主码 课程 系名 属性


常见的三类范式

原文: 「数据库」常见的三类范式 (baidu.com)

 

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

 

 

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(系名,公寓名称)

 

 

标签:关系,三类,范式,常见,主码,课程,系名,属性
来源: https://www.cnblogs.com/chang09/p/16333261.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有