《关系数据理论zmx》PPT课件.ppt_第1页
《关系数据理论zmx》PPT课件.ppt_第2页
《关系数据理论zmx》PPT课件.ppt_第3页
《关系数据理论zmx》PPT课件.ppt_第4页
《关系数据理论zmx》PPT课件.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

数据库原理与应用教程(第3版),国家“十一五”规划教材,第6章关系数据库规范化理论,6.1函数依赖6.1.1函数依赖基本概念6.1.2一些术语和符号6.1.3为什么要讨论函数依赖6.2关系规范化6.2.1关系模式中的码6.2.2范式,关系模式:二维表的结构称为关系模式,即,关系模式是二维表的表框架或表头结构。关系模式一般表示为:关系名(属性1,属性2,属性n)学生关系模式为:学生(学号,姓名,性别,年龄,所在系),知识回顾,问题的提出,关系数据库的模式通常包含多个关系框架。针对具体问题,如何构造一个合适的数据模式,合理地设计关系框架,对减少数据库冗余,提高数据管理效率具有重要意义。因此,关系规范化对设计合理的关系数据库模式具有重要作用。,6.1一些数据语义问题,数据的语义不仅表现为完整性约束,对关系模式的设计也提出了一定的要求。如何构造一个合适的关系模式,应构造几个关系模式,每个关系模式由哪些属性组成等,都是数据库设计问题,确切地讲是关系数据库的逻辑设计问题。,6.1.1函数依赖基本概念,对于公式Y=f(X)含义:省=f(城市):只要给出一个具体的城市值,就会有唯一一个省值和它对应,如“武汉市”在“湖北省”,这里“城市”是自变量X,“省”是因变量或函数值Y。,6.1.1函数依赖基本概念,把X函数决定Y,或Y函数依赖于X表示为:XY如果有关系模式R(A1,A2,An),X和Y为A1,A2,An的子集,则对于关系R中的任意一个X值,都只有一个Y值与之对应,则称X函数决定Y,或Y函数依赖于X。,示例,例1:对学生关系模式Student(Sno,Sname,Sdept,Sage)有以下依赖关系:,SnoSname,SnoSdept,SnoSage,例2:SC(Sno,Cno,Grade),(Sno,Cno)Grade,函数依赖定义,设有关系模式R(A1,A2,An),X和Y均为A1,A2,An的子集,r是R的任一具体关系,t1、t2是r中的任意两个元组;如果由t1X=t2X可以推导出t1Y=t2Y,则称X函数决定Y,或Y函数依赖于X,记为XY。在以上定义中特别要注意,只要t1X=t2X=t1Y=t2Y成立,就有XY。也就是说只有当t1X=t2X为真,而t1Y=t2Y为假时,函数依赖XY不成立;而当t1X=t2X为假时,不管t1Y=t2Y为真或为假,都有XY成立。,说明,1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名年龄”这个函数依赖只有在不允许有同名人的条件下成立。3.数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。,例:Stu(Sno,Sname,Ssex,Sage,Sdept)假设不允许重名,则有:SnoSname,SnoSsex,SnoSage,SnoSdept,SnameSsex,SnameSageSnameSdept但SsexSage,6.1.2一些术语和符号,1.如果XY,但Y不包含于X,则称XY是非平凡的函数依赖。2.如果XY,但Y包含于X,则称XY是平凡的函数依赖。,若无特别声明,我们讨论的都是非平凡的函数依赖。,术语和符号(续),3.如果XY,则X称为决定因子。4.如果XY,并且YX,则记作XY。,5.如果XY,并且对于X的一个任意真子集X都有XY,则称Y完全函数依赖于X,并记作:,例:在关系SC(Sno,Cno,Grade)中,由于:SnoGrade,CnoGrade,因此:(Sno,Cno)FGrade,完全函数依赖,部分函数依赖,设XY是一个函数依赖,但Y不完全函数依赖于X,即存在X的一个真子集X,有XY,则称Y部分函数依赖于X,记作XPY,例:在关系Student中,(Sno,sex)Name由于:SnoName因此:(Sno,Sex)PName,传递函数依赖,如果XY(非平凡函数依赖,并且YX)、YZ,则称Z传递函数依赖于X,记作:,示例,例1:有关系模式SC(Sno,Sname,Cno,Credit,Grade),主码为(Sno,Cno),则函数依赖关系有:,示例,例2:假设有关系模式S(Sno,Sname,Dept,Dept_master),其中各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一个主任),主码为Sno,则函数依赖关系有:,函数依赖与属性关系,设R(U)是属性集U上的关系模式,X、Y是U的子集:1.如果X、Y是1:1联系,则存在函数依赖XY和YX。2.如果X、Y是1:n联系,则存在函数依赖XY。3.如果X、Y是m:n联系,则X和Y间不存在函数依赖。,6.1.3为什么要讨论函数依赖?,关系数据库的模式通常包含多个关系框架。针对具体问题,如何构造一个合适的数据模式,合理地设计关系框架,对减少数据库冗余,提高数据管理效率具有重要意义。因此,关系规范化对设计合理的关系数据库模式具有重要作用。,6.1.3为什么要讨论函数依赖?,有关系模式:S-L-C(Sno,Sdept,SLOC,Cno,Grade),存在问题,数据冗余问题数据更新问题数据插入问题数据删除问题,结论,Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起解决方法:通过分解关系模式来消除其中不合适的数据依赖,例:描述学校教务的数据库:学生的学号(Sno)、所在系(Sdept)系主任姓名(Mname)、课程名(Cname)成绩(Grade),一个系有若干学生,一个学生只属于一个系;一个系只有一名主任;一个学生可以选修多门课程,每门课程由若干学生选修;每个学生所学的每门课程都有一个成绩。,学校教务数据库的语义约定:,关系模式Student(Sno,Sdept,Mname,Cname,Grade)主码为(Sno,Cname),关系模式Student中存在的问题(1),数据冗余太大浪费大量的存储空间例:每一个系主任的姓名重复出现。,关系模式Student中存在的问题(2),不一致性(UpdateAnomalies)数据冗余,更新数据时,维护数据完整性代价大,容易造成数据的不一致。例:某系更换系主任后,必须修改与该系学生有关的每一个元组。,插入异常(InsertionAnomalies)该插的数据插不进去。例:如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。,关系模式Student中存在的问题(3),删除异常(DeletionAnomalies)不该删除的数据不得不删。例:如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。,关系模式Student中存在的问题(4),Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的。解决方法:通过分解关系模式来消除其中不合适的数据依赖。,结论:,解决方法:把关系模式Student分解为三个关系模式:Stud(Sno,Cname,Grade)、Dept(Sdept,Mname)、SD(Sno,Sdept),检查一下,冗余和异常是否还存在?,例1:每一个系主任的姓名重复出现?,例2:某系更换系主任后,必须修改与该系学生有关的每一个元组?,例3:如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库?,例4:如果某个系的学生全部毕业了,在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了?,检查一下,冗余和异常是否还存在?,Stu(SNO,NAME,SEX,CNO,CNAME,DEGR)其中,S表示学生表,对应的各个属性依次为学号、姓名、性别、课程号、课程名和成绩。主码:(SNO,CNO),举例:假定有如下关系Stu:,关系:Stu(SNO,NAME,SEX,CNO,CNAME,DEGR),分析存在的问题:数据冗余?不一致性?插入异常?删除异常?,王华姓名、性别多次出现,课程名也多次出现。,更新数据有可能出现数据不一致性。,学生未选修课程,则无法插入其基本信息,因为,CNO是主码。,当删除学生的一条基本成绩记录时,学生的基本信息业随之删除。,解决方法:分解为如下3个关系S1(SNO,NAME,SEX)S2(SNO,CNO,DEGR)S3(CNO,CNAME),6.2关系规范化,关系规范化是指导将有“不良”函数依赖的关系模式转换为良好的关系模式的理论。这里涉及到范式的概念,不同的范式表示关系模式遵守的不同的规则。,6.2.1关系模式中的码,候选码:设K为R(U,F)中的属性或属性组,若K完全决定U,则K为R的候选码。主码:关系R(U,F)中可能有多个候选码,则选其中一个作为主码。全码:候选码为整个属性组。包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性。,示例,例1:学生(学号,姓名,性别,身份证号,年龄,所在系)候选码:学号,身份证号。主码:“学号”或“身份证号”。主属性:学号,身份证号。非主属性:姓名,性别,年龄,所在系。,示例,例2关系模式:选课(学号,课程号,考试次数,成绩)设一个学生对一门课程可以有多次考试,每一次考试有一个考试成绩。候选码:(学号,课程号,考试次数),也为主码。主属性:学号,课程号,考试次数非主属性:成绩。,示例,例3有关系模式:授课(教师号,课程号,学年)语义:一个教师在一个学年可以讲授多门不同的课程,可以在不同学年对同一门课程讲授多次,但不能在同一个学年对同一门课程讲授多次。一门课程在一个学年可以由多个不同的教师讲授,同一个学年可以开设多门课程,同一门课程可以在不同学年开设多次。候选码:(教师号,课程号,学年)主码:同候选码。主属性:教师号,课程号,学年。非主属性:没有是全码表。,外码,外码:用于关系表之间建立关联的属性(组)。定义:关系模式R中属性(组)X不一定是R中的码,但X是另一个关系模式S的候选码(通常为主码),则称X为R的外码。,两个关系模式:职工(职工号,职工名,部门号,工资级别)部门(部门号,部门名),6.2.2范式,关系数据库中的关系要满足一定的要求,满足不同程度要求的为不不同的范式(NormalForm)。范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF),各种范式之间存在联系:,某一关系模式R为第n范式,可简记为RnNF。,5NF,4NF,BCNF,2NF,3NF,1NF,第一范式,第一范式(1NF):不包含重复组的关系,第二范式,第二范式(2NF):如果R(U,F)1NF,并且R中的每个非主属性都完全函数依赖于主码,则R(U,F)2NF。,例:S-L-C(Sno,Sdept,SLOC,Cno,Grade),主码:(Sno,Cno)因为有:SnoSLOC,SnoSdept,因此存在部分函数依赖,该表不是2NF。,分解方法,首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。然后,将依赖于这些主码的属性放置到相应的表中。最后,去掉只由主码的子集构成的表。,分解S-L-C表,对S-L-C(Sno,Sdept,SLOC,Cno,Grade)首先分解为如下形式的三张表:S-L(Sno,)C(Cno,)S-C(Sno,Cno,),分解S-L-C表(续),然后,将依赖于这些主码的属性放置到相应的表中,形成如下三张表:S-L(Sno,Sdept,Sloc)C(Cno)S-C(Sno,Cno,Grade),分解S-L-C表(续),最后,去掉只由主码的子集构成的表。S-L-C关系模式最终分解的形式为:S-L(Sno,Sdept,Sloc)S-C(Sno,Cno,Grade),分解后的函数依赖关系,分解后的关系模式的函数依赖关系:S-L:SnofSdept,SnofSLOC是2NFS-C:(Sno,Cno)fGrade:是2NF,S-L(Sno,Sdept,SLOC)存在问题,数据冗余:有多少个学生就有多少个重复的Sdept和SLOC;插入异常:当新建一个系时,若还没有招收学生,则无法插入;,第三范式,第三范式(3NF):如果R(U,F)2NF,并且所有非主属性都不传递依赖于主码,则R(U,F)3NF。,S-L(Sno,Sdept,SLOC)SnoSdeptSLOCSno传递SLOC,不是3NF,分解方法,(1)对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性;(2)新建一个表,新表中包含在原表中所有依赖于该决定因子的属性;(3)将决定因子作为新表的主码。,分解S-L关系模式,S-D(Sno,Sdept)S-L(Sdept,Sloc),S-L(Sno,Sdept,SLOC),S-L分解后的关系模式为:,分解,S-L-C(Sno,Sname,Ssex,Sdept,Sloc,Cno,Grade)共分解为如下三个关系模式,每个关系模式都是3NF的。S-D(Sno,Sname,Ssex,Sdept),Sdept为引用S-L关系模式的外码。S-L(Sdept,Sloc),没有外码。S-C(Sno,Cno,Grade),Sno为引用S-D关系模式的外码。,1NF消除非主属性对码的部分函数依赖2NF消除非主属性对码的传递函数依赖3NF,关系模式规范化的基本步骤,规范化的基本思想,关系模式规范化实质上是概念的单一化,即消除不合适的数据依赖,使各关系模式达到某种程度的“分离”,一个关系仅描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就将其“分离”出去,用另外的关系描述。对于数据库设计一般到3NF就可以了。,分解总结,分解方法:1NF2NF,首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。然后,将依赖于这些主码的属性放置到相应的表中。最后,去掉只由主码的子集构成的表。,对S-L-C(Sno,Sdept

温馨提示

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

评论

0/150

提交评论