资源描述:
《第5章 关系数据库规范化理论ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章关系数据库规范化理论15.1关系规范化的必要性5.2函数依赖5.3范式5.4关系模式的规范化第五章关系数据库规范化理论25.1关系规范化的必要性每个关系由哪些属性组成?1.关系数据库逻辑设计问题构造几个关系?关系数据库关系属性35.1关系规范化的必要性例:教学管理系统,需要存储下列信息学号,姓名,系名,系主任名,课程名,成绩Sno,Sname,Sdept,Mname,Cname,Score设计一个关系模式:SLC={Sno,Sname,Sdept,Mname,Cname,Score}45.1关系规范化的必
2、要性SLC中的样本数据SnoSnameSdeptMnameCnameScore02001王飞电子系赵千数字电路9802001王飞电子系赵千模拟电路8702001王飞电子系赵千高等数学8202002李力电子系赵千数字电路8202002李力电子系赵千模拟电路7102002李力电子系赵千高等数学6402003刘强计科系王杰C++语言9302003刘强计科系王杰操作系统8702003刘强计科系王杰编译原理7602004孙一数学系宋扬高等数学8355.1关系规范化的必要性该关系模式存在四个主要问题:(1)数据冗余度大浪费
3、空间,产生数据的不一致性(2)插入异常(3)删除异常(4)更新异常65.1关系规范化的必要性思考:为什么会产生上述问题?与数据间的依赖有关关于分离度高低:查询效率低,信息丢失:会产生四个问题解决方法:关系分解,实现信息的某种程度上的分离S(Sno,Sname,Sdept)D(Sdept,Mname)SC(Sno,Cname,Score)解决问题,说明是一个好的关系数据库模式。P11375.1关系规范化的必要性2.规范化理论研究的内容(1)函数依赖核心模式分解和设计的基础(2)范式模式分解的标准(3)模式设计8数
4、据依赖函数依赖键的形式化定义候选键的求解理论和算法5.2函数依赖95.2.1数据依赖关系模式回顾R(U,D,DOM,F)F:属性U上数据的依赖关系集合记作:R(U,F)105.2.1数据依赖定义5.1数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。数据依赖共有三种:(1)函数依赖(FunctionalDependency,FD)(2)多值依赖(MultivaluedDependency,MVD)(3)连接依赖(JoinDepe
5、ndency,JD)115.2.2函数依赖定义5.2函数依赖设R(U)是一个关系模式,U是R的属性集合。X,Y为U的子集。如果R(U)的所有关系r都存在着:对于X的每一个值,Y都有唯一值与之对应,则称X函数决定Y,或Y函数依赖于X。记作X→Y。其中X叫作决定属性集,Y叫作被决定属性集。若Y不函数依赖于X,记作:X→Y。若X→Y,Y→X,记作:XY注:函数依赖是属性间的一种联系125.2.2函数依赖设有关系模式SLC1(SNo,SName,SDept,MName,SLoc,CName,Score)U={SNo,S
6、Name,SDept,MName,SLoc,CName,Score}⑴根据学号可以确定学生的姓名;⑵一个系有若干学生,但一个学生只属于一个系;⑶一个系只有一名主任;⑷根据学生所在的系可以确定学生的住处;⑸一个学生可以选修多门课程,每门课程有若干学生选修;⑹每个学生所学的每门课程都有一个成绩。根据如下描述写出依赖关系:SNo→SNameSNo→SDeptSDept→MNameSDept→SLoc(SNo,CName)→ScoreF={SNo→SName,SNo→SDept,SDept→MName,SDept→SL
7、oc,(SNo,CName)→Score}135.2.2函数依赖注意:P115(1)属性间的函数依赖指R的一切关系子集都要满足定义中的限定;(2)函数依赖是语义范畴的概念;(3)数据库设计者可以对现实世界做强制的规定。145.2.2函数依赖定义5.3平凡函数依赖与非平凡函数依赖在关系模式R(U,F)中,对于U的子集X、Y,如果X→Y,但YX,则称X→Y是非平凡函数依赖;如果YX,则称X→Y是平凡函数依赖。若不特别声明,本书中讨论的是非平凡函数依赖。例:(SNo,CName)→Score{Score}{SNo,C
8、Name}(SNo,CName)→CName{CName}{SNo,CName}非平凡函数依赖平凡函数依赖155.2.2函数依赖定义5.4完全/部分函数依赖在R(U,F)中,如果X→Y,对于X的任一真子集X’,都有X’→Y则称Y对X完全函数依赖,记为否则,称Y对X是部分函数依赖,记作例:(SNo,CName)→SNameSNo→SName(SNo,CName)→ScoreSno→Sco