《数据库原理及应用-第5章-关系数据库理论.ppt》由会员分享,可在线阅读,更多相关《数据库原理及应用-第5章-关系数据库理论.ppt(40页珍藏版)》请在三一办公上搜索。
1、数据库原理与应用,第5章 关系数据库设计理论,学习目标,理解关系模式可能的四种异常。掌握函数依赖和多值依赖的基本概念。掌握1NF、2NF、3NF、BCNF和4NF的概念和特点。掌握规范化的基本步骤。,给了一组数据,应该构造几个关系?每个关系由哪些属性组成?,问题的提出,这就是关系数据库的模式设计,关系数据库的模式:关系模式定义了关系,一个关系数据库包含了一组关系模式,一组关系模式便构成了关系数据库的模式。关系数据库的模式设计:借助近代数学工具而提出来的,形成了一整套定义、公理、定理及各种实用算法,产生了确定、评价关系数据库模式的方法。,关系数据库的规范化理论数据库模式设计的有力工具,问题的提出
2、,一、关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据库模式,即应该构造几个关系模式、每个关系模式由哪些属性组成等,这是数据库逻辑结构设计的问题。以关系模型为背景,形成了数据库逻辑设计的一个有力工具关系数据库的规范化理论。二、概念回顾关系:描述实体、实体间的联系。从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。关系模式:用来定义关系。关系数据库:基于关系模型的数据库,由一组关系组成,这组关系模式的全体就构成了该数据库的模式。,问题的提出,关系模式的形式化定义:关系模式是一个五元组 R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域D
3、OM:属性向域的映象集合F:属性间数据的依赖关系集合 由于D,DOM对模式设计关系不大,因此本章把关系模式简化为一个三元组:R(U,F),关系数据库设计理论,数据依赖范式关系模式的规范化,属性间的联系:有1对1,1对n,m对n三种数据依赖的定义:通过一个关系中属性间值的相互关联(主要体现于值的相等与否)体现出来的数据间的相互联系。是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。,数据依赖,两类最重要的数据依赖,函数依赖,多值依赖,函数依赖 FD,不严格地讲,函数依赖指的是一组属性值唯一决定另一组属性值的这种数据依赖。,学生关系student中,当学号确定后,其姓名也就唯一确定了
4、。主要有sno,sname,sphone等属性,由于一个学号对应一个学生,一个学生也决定了一个手机号,因而SNO值确定了,sname和sphone也就唯一地确定了。类似于数学中的函数Yf(X),自变量X确定了,相应的函数值Y也就唯一地确定了。我们称SNO函数决定SNAME和sphone,记为:SNOsname,SNOsphone。选课关系sc中,当学号sno和课程号cno确定后,其成绩grade也就唯一确定了。记为(sno,cno)grade,函数依赖 FD,定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值
5、相等,而在Y上的属性值不等,或r中如果两个元组取相同X值而相等,必有这两个元组取Y值而相等则称“X函数确定Y”或“Y函数依赖于X”,记作XY,X叫做决定因素。,函数依赖 FD,说明1:函数依赖是指关系模式R的所有关系实例均要满足的约束条件。说明2:函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖,设计者可对函数依赖作强制规定。说明3:函数依赖类似于变量间的单值函数关系(一个自变量只能对应一个函数值),因此也称为单值函数依赖;,函数依赖与属性间的联系类型有关1)一对一联系:XY,且YX2)多对一联系:XY3)多对多联系:不存在依赖关系,函数依赖 FD,平凡函数依赖与非平凡函数依赖:在关
6、系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡的函数依赖;若XY,但Y X,则称XY是平凡的函数依赖,X叫做决定因素。例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)Grade 平凡函数依赖:(Sno,Sname)Sname(Sno,Sname)Sno对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。,函数依赖 FD,完全函数依赖与部分函数依赖:在R(U)中,如果XY,并且对于X的任何一个真子集X,都有X Y(真子集X不决定Y),则称Y对X 完全函数依赖,记作:X Y。若X
7、Y,且存在一个X的真子集X,有X Y,则称Y部分函数依赖于X,记作X Y。,f,p,例:关系SC(Sno,Cno,Grade)中,由于SnoGrade,Cno Grade,因此:(Sno,Cno)Grade。,f,例:关系S(Sno,Sname,Sphone)中,由于Sno Grade(Sno,Sname)Grade,因此:(Sno,Sname)Grade。,p,传递函数依赖:在R(U)中,若X,Y,Z是R互不相同的属性集合,若 XY,YZ,YX,则称Z传递(Transfer)函数依赖于X。记作:XZ若XY,YX,YZ,则Z直接函数依赖于X,t,函数依赖 FD,传递函数依赖:例:在关系Std(
8、Sno,Sdept,Mname)中,有:Sno Sdept,Sdept Sno,Sdept Mname 则Mname传递函数依赖于Sno。例:在关系S(Sno,Sname,Sdept)中,假设不重名时,有:SnoSname,SnameSno,且SnoSdept,则Sdept直接函数依赖于Sno。,定义:设K为R中的属性或属性组合,若K U,则K为R的候选码。若候选码多于一个,则选其中一个为主码(Primary key)。例:关系Student(Sno,Sname,Sage,Ssex,Sdept)若每个学生不允许重名,则Sno,Sname是两个候选码;关系SC(Sno,Cno,Grade)中(S
9、no,Cno)是一个候选码。,f,码(key):又称关键字或键,主属性与非主属性:包含在任一候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性。外码(Foreign key):关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。例:关系SC(Sno,Cno,Grade)中Sno不是码,但 Sno是关系Student的码,则Sno是关系SC的外码。主码和外码一起提供了表示关系间联系的手段。,1)函数依赖是完整性约束的一种特殊形式2)函数依赖分为:完全函数依赖部分函数依赖传递函数依赖3)函数依赖是规范化理论的依据4)函数依赖是规范化程度的准则,关系模式可
10、能的四种异常,例如:如果选修课系统的数据库模式仅由一个关系模式Student 构成该关系模式的属性集合为:USno,Sname,Cno,Cname,Grade。其中,学号(Sno)、学生名(sname)、课程号(Cno)、课程名Cname,成绩(Grade)。,关系模式可能的四种异常,USno,Sname,Cno,Cname,Grade。其函数依赖为F SnoSname,CnoCname,(Sno,Cno)Grade 函数依赖如图:,Grade,Sno,Cno,Sname,Cname,关系模式可能的四种异常,关系模式Student中存在的问题:USno,Sname,Cno,Cname,Grad
11、e 数据冗余太大:浪费大量的存储空间。每一个学生的名字Sname与该学生的每门课程的成绩出现的重复次数相同。插入异常:该插的数据插不进去。如果有学生但尚未选课,我们就无法把课程的信息存入数据库。,关系模式可能的四种异常,关系模式Student中存在的问题:USno,Sname,Cno,Cname,Grade 删除异常:不该删除的数据被删了。如果某课程只有一个学生选修,该学生毕业后,如果要删除该名学生的信息,则该门课程的信息也同时被删掉了。更新异常:更新数据时维护数据完整性代价大。如果要更改课程名,则必须更改所有选修该课程的元组。,是符合某一种级别的关系模式的集合。关系数据库中的关系模式必须满足
12、一定的要求,满足不同程度要求的为不同的范式。目前主要有六种:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)。满足最低要求的叫第一范式,在第一范式基础上进一步满足一些要求的为第二范式。其余以此类推。各级范式关系:5NF 4NF BCNF 3NF 2NF 1NF如果关系满足某个范式要求,也会满足较低级别范式的要求通常将某一关系模式R为第n范式简记为RnNF,范式,定义:若关系模式R的所有属性都是不可分的基本数据项,则R 1NF。说明:1NF是关系模式的最起码要求若R 1NF,则R不是关系数据库,第一范式(1NF),如果选修课
13、系统的数据库模式仅由一个关系模式Student 构成,USno,Sname,Cno,Cname,Grade。满足第一范式,其函数依赖为F SnoSname,CnoCname,(Sno,Cno)Grade 函数依赖如图:,Grade,Sno,Cno,Sname,Cname,p,f,存在的问题:数据冗余太大:浪费大量的存储空间。若某学生选修了多门课程,则他的sname值就要重复存储多次。插入异常:该插的数据插不进去。假设某学生还未选课,因cno是主属性,因此该学生信息无法插入。删除异常:若一门课程仅被选修一次,现因某种原因,这门课程也没有被选修。因课程号cno是主属性,此操作将导致包括该课程的所有
14、信息一起整个元组都要删除。修改异常:更新数据时维护数据完整性代价大。如果要更改课程名,则必须更改所有选修该课程的元组。引起原因:sname、cname部分函数依赖于码(Sno,Cno)。,解决方法:分解关系模式,以此消除其中部分函数依赖。例如:把上述模式分成三个关系模式:S(Sno,Sname,SnoSname)SC(Sno,Cno,Grade,(Sno,Cno)Grade)C(Cno,Cname,CnoCname)这三个模式都不会发生插入异常、删除异常等,数据的冗余也得到了很好的控制。,定义:若关系模式R 1NF,且每个非主属性都完全函数依赖于R的码,则R 2NF。例S(Sno,Sname,
15、Sage,Ssex,sphone)1NF,假设姓名Sname无重名Sno(Sname,Sage,Ssex,sphone)Sname(Sno,Sage,Ssex,sphone)Sno,Sname分别为候选码 Sage,Ssex,sphone是非主属性 Sage,Ssex,sphone完全依赖于每个码S 2NF,第二范式(2NF),SC(Sno,Cno,Sdept,Ssir,Grade)1NF,(Sno,Cno)是唯一的码。非主属性对码的函数依赖有:(Sno,Cno)Grade(Sno,Cno)Sdept(Sno Sdept)(Sno,Cno)Ssir(Sno Ssir)存在非主属性对码的部分函数
16、依赖,SC 2NF,f,p,p,解决方法:分解关系模式,以此消除其中部分函数依赖。1.SC(Sno,Cno,Grade)(Sno,Cno)Grade 2.S(Sno,Sdept,Ssir)Sno Sdept,Sno Ssir,Sdept Ssir非主属性完全函数依赖于码,因此SC2NF,S2NF,Grade,Sno,Cno,f,Sno,Sdept,Ssir,(a)SC,(b)S,存在的问题:数据冗余度大:若一个系有100个学生,则该系学生的Ssir值就要重复存储100次。插入异常:如某系刚成立,暂无住校学生,该系的信息就无法插入。删除异常:如某系学生全部毕业时,删除了该系学生信息的同时该系的信
17、息也被删除了。修改异常:如学校调整某系的系主任时,必须修改该系所有学生的Ssir值。引起原因:Ssir传递函数依赖于码Sno。,定义:若R 2NF,且每个非主属性都不传递依赖于R的任何码,则R 3NF说明每个非主属性既不部分依赖,也不传递依赖于R的候选码从1NF到2NF:消除非主属性对码的部分函数依赖从2NF到3NF:消除非主属性对码的传递函数依赖,第三范式(3NF),1)SC(Sno,Cno,Grade)2NF,SC 3NF 2)S(Sno,Sdept,Ssir)2NF S中有传递依赖:SnoSdept,SdeptSsir,SnoSsir 对S分解,消除传递依赖1)SD(Sno,Sdept)
18、,SnoSdept,SD 3NF 2)DM(Sdept,Ssir),SdeptSsir,DM 3NF,Sno,Sdept,Ssir,Sno,Sdept,Sdept,Ssir,SD,DM,S,t,3NF模式存在的问题,设在关系模式STC(S,T,C)中,其中S学生,T教师,C课程,假设每一教师只教一门课,每门课由若干教师教,某学生选定某门课就确定了一个固定教师。有函数依赖:(S,C)T,(S,T)C,TC,显然(S,C)和(S,T)都为候选码,该模式没有非主属性。所以,STC3NF。,C,T,S,C,T,S,存在的问题数据冗余度较大:虽一个教师只教一门课,但每个选修该教师该门课的学生元组都要记录
19、这一信息。插入异常:如学生刚入校尚未选课,因主属性不能为空,该生信息就无法存入数据库;同样如某教师开设了新课,但尚未有学生选修,则该信息也无法存入数据库。删除异常:如选修某课的学生全部毕业时删除他们信息的同时相应教师开设该课的信息也被删除。修改异常:如某教师开设的某门课改名后,所有选修该教师该门课的学生都应进行修改。引起原因:存在(S,T)C。,p,BC范式(BCNF),定义:设关系模式R1NF,如果对于R的每个函数依赖XY,则X必为候选键,那么RBCNF。性质 若RBCNF,则R3NF。若R3NF,且R只有一个候选码,则R必属于BCNF。所有非主属性对每一个码都是完全函数依赖。所有的主属性对
20、每一个不包含它的码都是完全函数依赖。没有任何属性完全函数依赖于非码的任何一组属性。,例:关系模式SCP(S,C,P)中,S、C、P分别表示学生、课程和名次,每个学生选修每门课程的成绩都有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)。则有函数依赖(S,C)P,(C,P)S,所以(S,C)与(C,P)都可以作为候选码,SCPBCNF。,C,P,S,C,P,S,例关系模式STC(S,T,C),其中:S学生,T教师,C课程,假设每个教师只教一门课;每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。由其语义得到函数依赖:(S,C)T;(S,T)C;TC。(S,C),(S,T
21、)都是候选码。没有任何非主属性对码传递依赖或部分依赖STC 3NF TC,T是决定因素,是主属性,不是候选码(S,C)T,存在主属性对码的部分依赖和传递依赖。STC BCNF,解决办法:对STC进行分解:(1)ST(S,T);(2)TC(T,C)函数依赖:ST中有ST;TC中有TC没有任何属性对码的部分函数依赖和传递函数依赖。所以,ST BCNF,TC BCNF,C,T,S,S,T,T,C,ST,TC,BC范式存在的问题,例设学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。可以用一个关系模式Teach(C,T,B)表示课程C、教师T和参考书B之间的关系。Teach具有唯一候选码(C,T,B),即全码,因而TeachBCNF。,T,B,C,存在的问题:数据冗余度大:每一门课程的参考书是固定的,但在Teach关系中,有多少名任课教师,参考书就要存储多少次。操作复杂:当某一课程增加一名任课教师时,该课程有多少本参考书,就必须插入多少个元组。删除操作复杂:某一门课要去掉一本参考书,该课程有多少名教师,就必须删除多少个元组。修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,就必须修改多少个元组。引起的原因:参考书的取值和教师的取值是彼此独立毫无关系的,它们都只取决于课程名。,