收藏 分享(赏)

第5章 关系数据库理论.ppt

上传人:dzzj200808 文档编号:4299657 上传时间:2018-12-21 格式:PPT 页数:67 大小:2.91MB
下载 相关 举报
第5章 关系数据库理论.ppt_第1页
第1页 / 共67页
第5章 关系数据库理论.ppt_第2页
第2页 / 共67页
第5章 关系数据库理论.ppt_第3页
第3页 / 共67页
第5章 关系数据库理论.ppt_第4页
第4页 / 共67页
第5章 关系数据库理论.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、,Beyond Technology,数据库原理与应用,东软信息学院计算机系信息化课程,第 5 章 关系数据库理论,东北大学东软信息学院计算机系,目录,5.1 问题的提出 5.2 函数依赖 5.3 关系规范化 5.4 多值依赖 5.5 第四范式 5.6 模式分解,5.1 问题的提出,是不是所有的表都是一个合理的表呢?,实例,主码(姓名,书名) 张表的时候会产生哪些问题呢?,问题,(1)数据冗余 (2)能否将未借图书的读者信息插入到表中? (3)如果某名读者借阅了一本书,这本书归还了,也就是去除借书信息,但能否直接删除借阅记录而仍保留该名读者的其他基本信息呢? (4)如果某个某个读者从台湾省辽宁

2、省,我们要修改此学生的户口所在地,但修改后正确的对应到省长呢?,四大问题,(1)数据冗余 (2)数据插入异常 (3)数据删除异常 (4)数据更新异常,解决方法?,5.2 函数依赖,5.2.1 函数依赖基本概念 5.2.2 基本术语,5.2.1 函数依赖基本概念,定义 :设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不可能存在两个元组在X上的属性值相同,而在Y上的属性值不同,(换句话说,就是对于关系r中的任意一个X值,都只有一个Y值与之对应)则称“X函数确定Y”或“Y函数依赖于X”,记作XY。,找出这张表的函数依赖,如下的函数依赖是否成

3、立? 年龄-性别;学号-学号;学号,姓名)- 年龄; (学号,姓名)-(姓名,性别),例:学生(学生号,姓名,年龄,身份证号,性别)借阅(读者编号,图书编号,借阅日期),5.2.2 基本术语,设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。 如果果XY,但Y不包含于X,则称XY是非平凡的函数依赖。若Y包含于X,则称XY为平凡函数依赖。 如果XY,则称X为决定因子。 如果XY,并且YX,则记作XY。 如果XY,并且对于X 的一个任意真子集X ,都有X/Y,则称Y完全函数依赖于X,记作XfY ;如果X Y成立,则称Y部分函数依赖于X,记作XpY 。 如果XY(非平凡函数依赖,并且Y/

4、X)、YZ,则称Z传递函数依赖于X。,例2:有关系模式:S(Sno,Sname,Dept,Dept_master)其中各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一个主任),主码为Sno。则函数依赖关系有:Sno fSname由于:Sno fDept Dept fDept_master 所以有:Sno传递Dept_master 系主任传递依赖于学号,此模式存在传递依赖吗? 学生(学生号,姓名,年龄,身份证号,性别),有关系模式:SC(Sno,Sname,Cno,Credit,Grade)其中各属性分别为:学号、姓名、课程号、学分、成绩,主码为(Sno, Cno)。函数依赖关系有:S

5、noSname 姓名函数依赖于学号(Sno, Cno)pSname 姓名部分函数依赖于学号和课程号(Sno, Cno)fGrade 成绩完全函数依赖于学号和课程号,候选码,概念:有关系模式R(U)属性集X属于U。XfU则X为候选码 例学生表(学号,姓名,年龄,身份证号) 候选码为? 概念:候选码中的属性为主属性,其他的属性为非主属性。,找出下列关系模式的候选码及主属性,S(Sno,Sname,Dept,Dept_master)其中各属性分别为:学号、姓名、所在系和系主任 SC(Sno,Sname,Cno,Credit,Grade)其中各属性分别为:学号、姓名、课程号、学分、成绩,5.3 关系规

6、范化,5.3.1 范式介绍 5.3.2 第一范式 5.3.3 第二范式 5.3.4 第三范式 5.3.5 BC范式,5.3.1 范式介绍,关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同的范式。 满足最低要求的为第一范式,简称1NF(First Normal Form)。在第一范式中进一步满足一些要求的为第二范式,简称2NF,依此类推,还有3NF,BCNF,4NF,5NF。 对于上述的几种范式之间,有如下的联系:5NF包含于4NF包含于 BCNF包含于 3NF包含于 2NF包含于 lNF。,5.3.2 第一范式,定义 如果一个关系模式R的所有属性都是不可再分的数据项,也即一张表格R

7、中所有的列都不能再分解了,则称R满足第一范式,记为R1NF。,请大家分析下面的关系是否满足第一范式,如果不满足,如何进行分解?,5.3.3 第二范式,定义 若关系模式R满足第一范式,即R1NF,且R中不存在非主属性对于候选码的部分依赖,则R2NF。,【例5.4】关系模式:学生(姓名,系别,办公地点,课程名,成绩) 姓名,课程名无重复。每个人选择一门课程只能选择一次。每个系只有一个办公地点。 判断该关系模式是否满足第二范式?如果不满足第二范式应该如何进行处理?,解: 1 首先找到此关系模式的候选码,根据5.1的语义分析,该关系模式的候选码是(姓名,课程名) 2找出非主属性并判断对于候选码的依赖关

8、系。课程名、办公地点、成绩为非主属性。则有:(姓名,课程名)f成绩 (姓名,课程名)p系别(姓名,课程名)p办公地点 3结论:由于关系模式中存在非主属性对于候选码的部分依赖,因此该关系模式不满足第二范式的定义。,不满足第二范式的表都存在哪些问题? 数据冗余,操作异常。 怎么处理?,4为了达到第二范式的要求,我们采用分解的原则。相应的分解过程如下:第一步:用候选码的每一个非空子集作为码构造几个子表学生(姓名,) 课程(课程名) 选课(姓名,课程名)第二步:对于每一个子表,将依赖于此码的属性放置到此表中。学生(姓名,系别,办公地点)选课(姓名,课程名,成绩),第三步:我们来判断分解之后的两个关系模

9、式是否满足第二范式。 其中,学生(姓名,系别,办公地点)候选码是姓名,单个属性做候选码,不存在非主属性对于候选码的部分依赖,满足第2NF。选课(姓名,课程名,成绩),(姓名,课程名)f成绩,也不存在非主属性对于候选码的部分依赖,满足第2NF。第四步:根据前三步的分解能够使原有的关系模式满足第二范式。,这是一个满足第二范式的表,是否还有不合理的 地方?,数据冗余,更新异常。 说明还有更高的范式标准,5.3.4 第三范式,定义 若R2NF,且R中不存在非主属性对于候选码的传递依赖,则R3NF。,【例5.5】判断例4中的分解结果两个关系模式:学生(姓名,系别,办公地点)是否满足第三范式?如果不满足第

10、三范式应该如何进行分解?,1首先讨论选课(姓名,课程名,成绩)关系模式,其中候选码为(姓名,课程名)(姓名,课程名)f成绩所以不存在非主属性对于候选码的传递依赖,满足第三范式。 2学生(姓名,系别,办公地点)关系模式,其中候选码为姓名。 姓名 f系别 系别 f办公地点 姓名 传递办公地点 所以存在非主属性办公地点传递函数依赖于候选码姓名,不满足第三范式。,3将不满足第三范式的关系模式进行分解,相应的分解过程: 第一步:删除候选码以外的决定因子的依赖属性办公地点。组成新的关系模式:学生(姓名,系别) 第二步:将决定因子作为另一个新的关系模式的候选码,同时将删除掉的依赖属性加入:系(系别,办公地点

11、)第三步:对于分解之后的两个新的关系模式进行验证,单个属性做主码,而又分别只有一个非主属性,因此,新的关系模式一定满足第三范式。,练习是否满足第三范式?如果不满足将其处理成满足第三范式的关系模式,(姓名,书名无重复),借阅(姓名,省长,户口所在地,书名,价格)候选码为(姓名,书名) 还存在函数依赖有:姓名-省长;姓名 -户口所在地户口所在地-省长书名-价格 非主属性对候选码的部分依赖:(姓名,书名) p-户口所在地 所以不满足第二范式,分解: 读者(姓名,户口所在地,省长) 姓名-户口所在地,省长 户口所在地-省长 图书(书名,价格) 书名-价格 借阅(姓名,书名) 不存在非主属性对候选码的部

12、分依赖,满足第二范式。是否满足第三范式,读者(姓名,户口所在地,省长)姓名-户口所在地,省长户口所在地-省长 存在非主属性对候选码的传递依赖姓名-省长 所以不满足第三范式,(姓名,户口所在地,省长) 分解后为: 户口(户口所在地,省长)户口所在地-省长 读者(姓名,户口所在地)姓名-户口所在地 不存在非主属性对候选码的传递依赖满足第三范式,满足第三范式的分解为,借阅(姓名,省长,户口所在地,书名,价格) 分解为: 读者(姓名,户口所在地) 户口(户口所在地,省长) 图书(书名,价格) 借阅(姓名,书名) 主码已用红色标记,外码是什么?,5.3.5 BC范式,我们首先分析一下3NF中存在的问题。

13、 【例5.6】关系模式STC(学生,教师,课程)中, 每一教师只教一门课,每门课有若干教师可得到如下的函数依赖。 (学生,课程)教师;教师课程; 这里(学生,课程),(学生,教师)都是候选码。 请大家分析此关系模式是不是3NF,有没有一些问题?,这是一个满足第三范式的表是否存在问题,STC是3NF。因为三个属性S、C、T均是候选码的属性,也即主属性,所以在这个关系模式中不存在非主属性对码的部分依赖和传递依赖。 但是这个关系模式也存在一些问题: 1插入异常。如果某个学生刚刚入校,尚未选修课程,则因受主属性不能为空的限制,有关信息不能存入数据库。同样原因,如果某个教师开设某门课程,但尚未有学生选修

14、,则有关信息也无法存入数据库。 2删除异常。如果选修某门课程的学生全部毕业了,在删除这些学生的记录的同时,相应教师开设这门课程的信息也一并删除了。 3数据冗余大。虽然一个教师只教一门课,但每个选修该教师该门课程的学生元组都要记录这一信息。 4修改复杂。某个教师开设的某门课程改名后,所有选修了该门课程的学生元组都要进行相应的修改。,范式定义:若关系模式R1NF,且能决定其它属性取值的属性(组)必定包含候选码,则RBCNF。或者,我们也可以说:如果一个关系的每个决定因子都是候选码,则其是BCNF。如果一个模型中的所有关系模式都属于BCNF,那么在函数依赖范畴内,就实现了彻底的分离,消除了操作异常。

15、也就是说,在函数依赖的范畴。BCNF达到了最高的规范化程度。,5.3.5 BC范式,【例5.6】关系模式STC(学生,教师,课程)中, 每 (学生,课程)教师;教师课程; (学生,教师)课程 。 分解为: (学生,教师) (教师,课程),如果一个模型中的所有关系模式都属于BCNF,那么在函数依赖范畴内,就实现了彻底的分离,消除了操作异常。也就是说,在函数依赖的范畴。BCNF达到了最高的规范化程度。,数据库设计的目标,1。BCNF 2。无损连接 3。保持依赖,关系模式的分解准则,(1)分解具有无损连接性。分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不

16、多出信息、又不丢失信息。(2)分解保持函数依赖性。关系模式在分解过程中函数之间的依赖不能丢失,也即不能破坏原来的语义。,关系模式的分解准则,【例5.10】 对于前面提到的关系模式学生(姓名,系别,办公地点),(假设系别可以决定该系的办公地点),有如下的依赖:姓名f系别 系别f办公地点 姓名 传递办公地点 (可以看到不是第三范式)分解方式如下,判断是否 满足上述两项标准?,学生(姓名,办公地点) 系(系别,办公地点),分解方案1,进行自然连接之后的结果:,很显然,自然连接后明显多了几个元组,没有完全恢复原来的语义,所以方案1不具备保持无损连接这一标准。方案1不是好的分解方式。,学生(姓名,系别)

17、 系(姓名,办公地点),分解方案2,进行自然连接之后的结果:,分解之后的关系模式经过自然连接恢复了原来的关系,因此方案2具有无损连接性。但是系别f办公地点这一函数依赖中的两个属性却分布在两个关系模式上,所以方案2没有保持原来的函数依赖关系,也不是好的分解方法。,学生(姓名,系别) 系(系别,办公地点),分解方案3,进行自然连接之后的结果:,分解之后的关系模式经过自然连接恢复了原来的关系,因此方案3具有无损连接性。同时函数依赖:姓名f系别,系别f办公地点中的属性均分布在同一个关系模式上。所以方案3保持了原来的函数依赖关系,是一个好的分解方法。,BCNF与3NF比较,BCNF在函数依赖的范畴。BC

18、NF达到了最高的规范化程度。但并不总能得到保持依赖的设计 3NF总可以在满足无损连接并保持依赖的前提下得到3NF设计。但还是存在传递依赖,5.4 多值依赖,【例5.8】 一位教师可以教授多门课程,同时又可以在多个系教课,而且在每个系都是教同样的几门课。即每位教师无论在那个系都对应一组自己所教授的课程。设计关系模式TSC(T,S,C), T表示教师,S表示系,C表示课程。在这个关系中,假定每一位教师在不同的系教授的课程如下所示: 教师T 授课系S 教授课程C 赵 计算机,嵌入式 数学 钱 计算机,嵌入式,英语 英文 孙 计算机,嵌入式 c语言,数据结构,把这些数据组成规范化的二维表如下表所示 :

19、,很显然,在这个关系模式中,具有唯一的候选码(T,S,C),即全码。因此,TSCBCNF。 我们来分析一下此表格会不会产生问题? 1数据冗余度大。每一个老师所教授的课程是固定的。但是我们看到只要某个老师在不同的系上课,就要重复存储所教授的课程多次,造成大量的数据冗余。 2增加操作复杂。当某个老师为某系上课时,要重复添加他所能教授的课程。 3删除操作复杂。当某个教师由于某种原因不能开设某门课程时,需要从每一个开课系部删除相关信息。 4修改操作复杂。,多值依赖,定义:有关系模式R(U),其中X、Y、Z是U的子集,并且Z = U-X-Y,关系模式R(U)中,当且仅当满足下列性质:对R(U)的任一关系

20、r,给定一对(x,z)值,就有一组y值与之相对应,而且这组y值只依赖于x值,而与z值无关。则称Y多值依赖于X,记作XY。 例如:在例5.8中对于一个值(孙,计算机)有一组值c语言,数据结构,对于孙,嵌入式同样有一组值c语言,数据结构,尽管系不同了,但对应课程C值仍然不变,因为这组值只取决于教师T的值。这就是课程C多值依赖于教师T。,多值依赖所具有的性质,1若有关系模式R(U),当U=XY,即Z=时,则称XY为平凡的多值依赖。否则XY为非平凡的多值依赖。 2多值依赖具有对称性。即若XY,则XZ,其中Z = U -X Y。例如:在关系模式TSC(T,S,C)中,已经知道TC。根据多值依赖的对称性,

21、必然有TS。 3多值依赖具有传递性。若XY,YZ,则XZ-Y。,多值依赖所具有的性质,4函数依赖可以看作是多值依赖的特殊情况。若XY,则XY一定成立。这是因为当XY时,对X的每一个值x,Y有一个确定的值y与之对应,所以XY。 5若XY,XZ,则XYZ。 6若XY,XZ,则XY-Z,XZ-Y。 7多值依赖的有效性与属性集的范围有关。,5.5 第四范式,定义:若关系模式R1NF,如果对于R的每个非平凡多值依赖XY(Y不包含于X),X都含有候选码,则R4NF。通俗地说,一个关系模式如果已满足BCNF,且没有非平凡且非函数依赖的多值依赖,则关系模式属于4NF。一个关系模式R4NF,则必有RBCNF。,

22、第四范式,【例5.9】 判断例5.8 中TSC(T,S,C)关系模式是否满足第四范式,如何分解成第四范式? 解:从对例5.8的分析中,我们得到的是课程C多值依赖于教师T,即TC,且T不是候选码,因此TSC不属于第四范式。可以用分解的方法把TSC分解成满足4NF要求的关系模式:TS(T,S)TC(T,C),小结,关系模式的规范化过程是通过对关系模式的分解来实现的。把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。在分解的过程中,我们主要是研究各属性之间的依赖关系。其中重要的是函数依赖和多值依赖。 在函数依赖范畴我们讨论了第一范式、第二范式、第三范式和BC范式。 在多值依赖的范畴我们讨论了第四范式,既没有函数依赖,也没有多值依赖。 关系规范化理论的根本目的是指导我们设计没有数据冗余和操作异常的关系模式。对于一般的数据库应用来说,设计到第三范式就足够了。因为规范化程度越高,表的个数也就越多,因此就有可能降低数据查询的效率。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据库

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报