第4章关系规范化基础_第1页
第4章关系规范化基础_第2页
第4章关系规范化基础_第3页
第4章关系规范化基础_第4页
第4章关系规范化基础_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理与应用教程SQL Server,第4章 关系规范化基础,目的要求 理解数据依赖中的函数依赖的概念 掌握几种特定的函数依赖 了解码的函数依赖表示 理解关系规范化的概念及目的 熟练掌握常用的三种范式 了解BC范式(BCNF),客观世界的事务间有着错综复杂的联系。 实体间的联系有两类,一类是实体与实体之间的联系; 另一类是实体内部各属性间的联系。 定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键。 数据依赖是现实世界属性间相互联系的抽象,是世界内在的性质,是语义的体现。,4.1 数据依赖 数据依赖共有三种: 函数依赖(Functional Depe

2、ndency,简称FD)、 多值依赖(Multivalued Dependency,简称MVD)和连接依赖(Join Dependency,简称JD),其中最重要的是函数依赖和多值依赖。,4.1.1 函数依赖 1. 函数依赖的定义 所谓函数依赖是指在关系R中,X、 Y为R的两个属性或属性组,如果对于R的所有关系r都存在: 对于X的每一个具体值,Y都只有一个具体值与之对应,则称属性Y函数依赖于属性X。记作XY。,4.1.1 函数依赖 函数依赖简单表述:如果属性X的值决定属性Y的值,那么属性Y函数依赖于属性X。 换一种说法是,如果知道X的值,就可以获得Y的值。,例4-1 学生情况表,4.1.1 函

3、数依赖 上述学生情况表对应的关系模式可描述为: 学生情况(学号,姓名,性别,出生时间,总学分) 其中,学号为关键字,则存在如下的函数依赖关系: 学号姓名 ; 学号专业名; 学号性别 ;学号总学分,4.1.1 函数依赖 注意:属性间的函数依赖不是指R的某个或某些关系满足上述限定条件,而是指R的一切关系都要满足定义中的限定。 只要有一个具体关系r不满足定义中的条件,就破坏了函数依赖,使函数依赖不成立。,4.1.1 函数依赖 2. 函数依赖与属性间的联系类型的关系 在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖XY,YX,即X Y。例如,当学生没有重名时,SNO SN;如果属性X与Y

4、有m:1的联系时,则只存在函数依赖XY。例如,SNO与AGE,DEPT之间均为m:1联系,所以有SNOAGE ,SNODEPT;如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系。,4.1.2几种特定的函数依赖 1、非平凡函数依赖和平凡函数依赖 设关系模式R(U), X、 Y U: 如果XY, 且Y X, 则称XY为平凡的函数依赖。 如果XY, 且Y不是X的子集, 则称XY为非平凡的函数依赖。,4.1.2几种特定的函数依赖 例:在学生课程(学生号,课程号,成绩)关系中,若存在函数依赖为: (学生号,课程号)成绩;(学生号,课程号) 课程号;,4.1.2几种特定的函数依赖 2、

5、完全函数依赖和部分函数依赖 定义: 设关系模式R(U), X, YU: 如果XY, 并且对于X的任何一个真子集Z, ZY都不成立, 则称Y完全函数依赖于X。 若XY, 但对于X的某一个真子集Z, 有ZY成立, 则称Y部分函数依赖于X。,4.1.2几种特定的函数依赖 例: 在关系SC(Sno, Cno, Grade)中, Sno, Cno是主码, 由于:Sno Grade不成立,Cno Grade也不成立, 因此:Grade 完全函数依赖于(Sno, Cno) ;,4.1.2几种特定的函数依赖 3、传递函数依赖 设关系模式R(U), X U, Y U, Z U。 如果XY, YZ成立, 但YX不

6、成立, 且Z-X、 Z-Y和Y-X均不空, 则称XZ为传递函数依赖。 例如: 关系模式R=A, B, C, D, 其上的函数依赖集F=AB, BC, AC, ABD, 则AC为传递函数依赖。,4.1.3 码的函数依赖表示 使用函数依赖的概念可以给出关系模式中码的更严格定义。 候选码:设K为关系模式R(U)中的属性或属性集合。若KU,则K称为R的一个候选码(Candidate Key)。 若关系模式R有多个候选码,则选定其中一个作为主码(Primary Key)。 外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreign Key),也称为外码。,4

7、.2 关系规范化 设有一描述学校的数据库: 学生的学号(Sno)、所在系(Sdept) 系主任姓名(Mname)、课程名(Cname)成绩(Grade) 关系模式 :学生信息表 (Sno, Sdept, Mname, Cname, Grade ),4.2 关系规范化 学校数据库的语义:一个系有若干学生, 一个学生只属于一个系; 一个系只有一名主任; 一个学生可以选修多门课程, 每门课程有若干学生选修; 每个学生所学的每门课程都有一个成绩。,4.2 关系规范化 关系模式学生信息表中存在的问题 数据冗余(太大浪费大量的存储空间)。例:每一个系主任的姓名重复出现 更新异常(数据冗余 ,更新数据时,维

8、护数据完整性代价大)例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组,4.2 关系规范化 插入异常(该插的数据插不进去) 例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。 删除异常(不该删除的数据不得不删例,如果某个系的学生全部毕业了, 我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。,4.2 关系规范化 学生信息表关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的。解决方法:通过分解关系模式来消除其中不合适的数据依赖。,4.2.1关系模式规范化的

9、目的 关系模式规范化的目的是解决关系模式中存在的数据冗余、插入和删除异常以及更新异常等问题。其基本思想是消除数据依赖中的不合适部分,使各关系模式达到某种程度的分离,使一个关系描述一个概念、一个实体或实体间的一种联系。因此,规范化的实质是概念的单一化。,4.2.1关系模式规范化的目的 关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程度可用范式来衡量。范式(Normal Form)是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。目前主要有6种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称为1N

10、F。在第一范式基础上进一步满足一些要求的为第二范式,简称为2NF。其余以此类推。显然各种范式之间存在联系:1NF2NF3NFBCNF 4NF5NF。 通常把某一关系模式R为第n范式简记为RnNF。,4.2.1关系模式规范化的目的 通常把某一关系模式R为第n范式简记为RnNF。 在这些范式中,最重要的是3NF和BCNF,它们是进行规范化的主要目标。 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这个过程称为规范化。通常实际情况下,规范化到3NF就可以了。,4.2.2 常用的三种范式 1、第一范式(1NF) 定义:设R是一个关系模式。 如果R的每个属性的值域(更

11、确切地说是R的每一个关系r的属性值域)都是不可分的简单数据项(即是原子)的集合, 则称这个关系模式属于第一范式, 简记作R1NF。,4.2.2 常用的三种范式 如果关系模式R的每一个属性都是不可分解的,则R为第一范式的模式。 1NF是规范化最低的范式,它要求无重复记录;字段不可分解。 在任何一个关系数据库系统中, 关系至少应该是第一范式。 不满足第一范式的数据库模式不能称为关系数据库。 但注意, 第一范式不能排除数据冗余和异常情况的发生。,4.2.2 常用的三种范式 例如:下表描述的是职工情况。 职工情况表,4.2.2 常用的三种范式 由于上表中工资一项包括三部分,不满足每个属性不能分解,是非

12、规范化表,不是第一范式。可规范为: 职工情况表,4.2.2 常用的三种范式 例如:学生选课情况表如下表所示: 学生选课表,4.2.2 常用的三种范式 学生选课表描述的学生选课关系,不是1NF, 因为课程一列包含多门课, 不是原子值。 而下表所示学生选课关系是1NF。 学生选课表,4.2.2 常用的三种范式 2、第二范式 定义:如果关系模式R是第一范式,且每个非主属性都完全依赖于码 ,则称R为满足第二范式的模式,记为:R2NF模式。 在一个关系中,包含在任何候选关键字中的各个属性称为主属性;不包含在任何候选码中的属性称为非主属性。,4.2.2 常用的三种范式 (1)主关键字只有一个属性的关系是第

13、二范式。 例如:在关系R(学号,姓名,出生日期,成绩)中主属性为学号,姓名、出生日期、成绩为非主属性,存在下列函数依赖关系: 学号姓名 学号性别 学号出生日期,学号成绩 由于每个非主属性都完全依赖于码 ,所以该关系R2NF。,4.2.2 常用的三种范式 (2)主关键字是属性的组合,这样的关系模式可能不是第二范式。 例如:关系S(学号,姓名,性别,课程,学分),其中学号和课程为主属性,姓名、性别、学分为非主属性,关系S中存在下列函数依赖关系: 学号姓名,学号性别 ,学号课程, (课程、学号)学分,4.2.2 常用的三种范式 非主属性部分依赖于码 ,故关系S不属于2NF。对上述关系模式进行分解,分

14、解为两个关系: S1(学号,姓名,性别);S2(学号,课程,学分);S12NF;S22NF。,4.2.2 常用的三种范式 例如:关系职工信息P(职工号,姓名,职称,项目号,项目名称,项目排名) 主码为(职工号,项目号),非主属性为(姓名,职称,项目名称,项目排名)关系P中存在函数依赖如下: (职工号,项目号) 项目名称;职工号姓名;(职工号,项目号) 项目排名;职工号职称;项目号项目名称。,4.2.2 常用的三种范式 由于非主属性部分依赖于码 ,故关系P不属于2NF。对上述关系模式进行分解,分解为三个关系: 职工信息表(职工号,姓名,职称);项目排名表(职工号,项目号,项目排名); 项目表(项

15、目号,项目名称),4.2.2 常用的三种范式 3、第三范式 定义:如果关系模式R是第二范式,且没有一个非主属性是传递函数依赖于码 ,则称R为满足第三范式的模式,记为:R3NF模式。,4.2.2 常用的三种范式 例如:关系ST(学号,楼号,收费);其中包含的函数依赖关系有: 学号楼号 楼号收费 则:学号收费 对上述关系模式进行分解,分解为两个关系:st1(学号,楼号); st2(楼号,收费),4.2.2 常用的三种范式 推论1: 如果关系模式R1NF,且它的每一个非主属性既不部分依赖、 也不传递依赖于码 ,则R3NF。 推论2: 不存在非主属性的关系模式一定为3NF。,4.2.3 BC范式(BC

16、NF) 定义:关系模式R1NF,对任何非平凡的函数依赖XY,X均包含码,则RBCNF。 BCNF是从1NF直接定义而成的,可以证明,如果RBCNF,则R3NF。 由BCNF的定义可以看到,每个BCNF的关系模式都具有如下3个性质。 (1)所有非主属性都完全函数依赖于每个候选码。 (2)所有主属性都完全函数依赖于每个不包含它的候选码。 (3)没有任何属性完全函数依赖于非码的任何一组属性。,4.2.3 BC范式(BCNF) 如果关系模式RBCNF,由定义可知,R中不存在任何属性传递函数依赖于或部分依赖于任何候选码,所以必定有R3NF。但是,如果R3NF,R未必属于BCNF。 3NF和BCNF是以函数依赖为基础的关系模式规范化程度的测度。 如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。,4.2.3 BC范式(BCNF) 关系模式规范化的基本步骤总结如下: (1) 对1NF关系进行投影,消除原关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论