《关系范式规范化理论.ppt》由会员分享,可在线阅读,更多相关《关系范式规范化理论.ppt(97页珍藏版)》请在金锄头文库上搜索。
1、1第三章关系数据库规范化理论21. 关系代数概述传统的集合运算专门的关系运算3概述1.关系代数关系代数:一一种种抽抽象象的的查查询询语语言言,用用对对关关系系的的运算运算来表达查询来表达查询3.关系代数运算的三个要素:关系代数运算的三个要素:2.运算的三要素:运算的三要素:运算对象,运算符,运算结果运算对象,运算符,运算结果4.关系代数运算的分类:关系代数运算的分类:运算对象关系,运算结果关系,运算符运算对象关系,运算结果关系,运算符四类四类传统的集合运算传统的集合运算并、差、交、广义笛卡尔积并、差、交、广义笛卡尔积专门的关系运算专门的关系运算选择、投影、连接、除选择、投影、连接、除4集合集合
2、运算运算符符-并并差差交交比较比较运算运算符符大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于不等于运算符运算符含义含义运算符运算符含义含义表表1关系代数运算符关系代数运算符专门专门的关的关系运系运算符算符广义笛卡尔积广义笛卡尔积选择选择投影投影连接连接除除逻辑逻辑运算运算符符 非非与与或或51.1 关系代数概述传统的集合运算专门的关系运算并并交交差差广义笛卡尔积广义笛卡尔积61.并(Union)设关系R 和S:u具有相同的目n(即两个关系都有n 个属性)u相应的属性取自同一个域则:1)关系R 和S的并记为: RS=t |t R t S 结果仍为n 目关系,由属于R 或者属于S
3、的元组组成 7并(续)ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR S82.差(Difference)u设关系设关系R 和和S:具具有有相相同同的的目目n(即即两两个个关关系系都都有有n 个属性)个属性)相应的属性取自同一个域相应的属性取自同一个域则:则:2)关系)关系R 和和S的的差差记为:记为: R -S=t |t R t S结结果果仍仍为为n 目目关关系系,由由属属于于R 而而不不属于属于S 的元组组成的元组组成 9差(续)ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABC
4、a1b2c2a1b3c2a2b2c1RSR-S103.交(Intersection)设关系R 和S:u具有相同的目n(即两个关系都有n 个属性)u相应的属性取自同一个域则:3)关系R 和S的交记为:RS=t |t R t S 用差表示:RS=R(R-S)仍为n 目关系,由既属于R 又属于S 的元组组成 11交(续)ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR S124.广义笛卡尔积(广义笛卡尔积(ExtendedCartesianProduct)有2个关系R和S,若关系R:n 目关系(有n个属性),有k1个元组关系S:
5、m目关系(有m个属性),有k2个元组则:关系R和S的广义笛卡尔积记作: RS=trts|trRtsS共有k1k2个元组(行),每个元组有nm列:前n 列是关系R 的一个元组后m 列是关系S 的一个元组13广义笛卡尔积(续)ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR SABCa1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1141.2 专门的关系运算概述传统的集合运算专门的关系运
6、算选择选择投影投影连接连接除除15常用的几个记号(1)R,tR,tAi设关系模式为R(A1,A2,An),它的一个关系设为R。tR 表示t 是R 的一个元组,tAi则表示元组t 中相应于属性Ai 的一个分量关系关系R:学生(学号,学生(学号,姓名,性别,院系姓名,性别,院系)R的一个元组的一个元组t:(1001,李明,男,信息学院),李明,男,信息学院)tA1表示分量表示分量1001,tA2表示分量表示分量李明李明16常用的几个记号(2)A,tA,A若若A=Ai1,Ai2,Aik,其中,其中Ai1,Ai2,Aik是是A1,A2,An中的一部分,则中的一部分,则A称为称为属属性列性列或或域列域列
7、;tA=(tAi1,tAi2,tAik)表示)表示元组元组t在属性列在属性列A上诸分量的集合上诸分量的集合。A则表示则表示A1,A2,An中去掉中去掉Ai1,Ai2,Aik后剩余的属性组。后剩余的属性组。17例如:R的一个元组的一个元组t:(1001,李明,男,信息学院),李明,男,信息学院)tA=(1001,李明,李明)关系关系R:学生(学号,学生(学号,姓名,性别,院系姓名,性别,院系)A=学号学号, , 姓名姓名 ,则称,则称A为为属性列属性列或或域列域列。=性别性别, , 院系院系 A18常用的几个记号R 为n 目关系,S 为m 目关系,trR,tsS,称为元组的连接。(3)trts
8、trts它是一个它是一个n+m 列列的元组,前的元组,前n 个分量为个分量为R 中的一个中的一个n 元组,后元组,后m 个分量为个分量为S 中的中的一个一个m 元组。(元组。(R和和S的广义笛卡尔积的广义笛卡尔积)19ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1b2c2a1b3c2a2b2c1RSABCa1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1trts201.选择(Selection)选择:指的是在关系R中选
9、择满足给定条件的元组,记作:F(R)=t |tR F(t)=真这里,F是逻辑表达式。选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。是从行的角度进行的运算:21选择(续)举例设有一个学生-课程数据库,包括:学生关系Student课程关系Course选修关系SC22选择(续)学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage所所在在系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS(a)Student23选择(续)(b)Course课程号课程号课程名课程名先行课先行课学分学分CnoCname
10、CpnoCcredit1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言6424选择(续)(c)SC学学号号课课程程号号成成绩绩SnoCnoGrade950011929500128595001388950022909500238025选择(续)例1查询信息系(IS系)全体学生SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95004张立张立男男19ISSdept=IS(Student)或或5=IS(Student)结果:结果:26选择(续)例2查询年龄小于20岁的学生。SnoSnam
11、eSsexSageSdept95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19ISSage20(Student)或或420(Student)结果:结果:272.投影(Projection)投影:从R 中选择出若干属性列组成新的关系,A(R)=tA|t RA:R中的属性列是从列的角度进行运算:28投影(续)即求Student关系在学生姓名和所在系两个属性上的投影。SnameSdept李勇李勇CS刘晨刘晨IS王敏王敏MA张立张立ISu例例3查询查询学生的学生的姓名姓名和和所在系:所在系:结果:结果:Sname,Sdept(Student)或或2,5(Studen
12、t)29投影(续)例4查询学生关系Student中都有哪些系。SdeptCSISMA结果:结果:Sdept(Student)即查询即查询Student关系在关系在所在系所在系属性上的属性上的投影投影:注意:注意:投影结果中,投影结果中,取消重复的元组。取消重复的元组。30投影(续)例5查询开设了哪些课程(课程名)。课程名课程名Cname数据库数据库数学数学信息系统信息系统操作系统操作系统数据结构数据结构数据处理数据处理PASCAL语言语言即查询查询Course关系关系在在课程名课程名上的投影:上的投影:Cname(Course)313.连接(Join)也称为连接,是从两个关系的笛卡尔积中选取属
13、性间满足一定条件的元组,记作: ABtrtsR S=|tr R ts S trAtsB其中,A 和和B 分别为分别为R 和和S 上上度数相等度数相等且可比的属性组且可比的属性组,为比较运算符为比较运算符( (四类四类) )连接运算从运算从R 和和S 的广义笛卡尔积的广义笛卡尔积RS 中中选取选取R 关系在关系在A 属性组上的值属性组上的值与与S 关系在关系在B 属性组上值属性组上值满足比较关系的元组满足比较关系的元组。32连接的分类等值连接等值连接(equijoin)u是指为“”的连接运算u从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:A=BtrtsR S=|tr
14、R ts S trA=tsB33连接的分类自然连接自然连接(Naturaljoin)u是一种特殊的等值连接u要求两个关系中进行比较的分量必须是相同的属性组u并且在结果中把重复的属性列去掉u若R 和S 具有相同的属性组B,则自然连接表示如下:trtsR S=|tr R ts S trB=tsB34连接(续)关系R和关系S如下ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS35连接(续)AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310 CERS例例6把满足条件把满足条件“R中中C属性值属性值Sname,
15、SnoSdept类似于函数,自变量x确定后,函数值f(x)也确定了。五、数据依赖对关系模式的影响例:描述学校及其学生的数据库:学生的学号(Sno)、所在系(Sdept)系主任姓名(Mname)、课程名(Cname)成绩(Grade)U Sno, Sdept, Mname, Cname, Grade 三元组的关系模式:S(U,F)数据依赖对关系模式的影响(续)由于该数据库中存在以下情况:一个系有若干学生,一个学生只属于一个系一个系只有一名主任(正主任)一个学生可以选修多门课程,每门课程有若干学生选修每个学生所学的每门课程都有一个成绩。数据依赖对关系模式的影响(续)得到属性组U上的一组函数依赖F:
16、SnoCnameSdeptMnameGradeFSnoSdept,SdeptMname,(Sno,Cname)Grade关系模式S中存在的问题1.数据冗余太大在每个学生元组中,系主任姓名重复出现浪费大量存储空间2. 插入异常如果一个系刚成立尚无学生(没有Sno),就无法把这个系及其系主任的信息存入数据库另外,如果某个系的系主任换人了,就要更改每个学生的元组,维护代价很大3. 删除异常如果某个系的学生全部毕业了,Sno将被全部删除,同时也把该系及系主任的资料删除了数据依赖对关系模式的影响(续)结论:关系模式S不是一个好的模式,因为某些属性之间存在着一些数据依赖关系解决方法:通过分解关系模式来消除
17、其中不合适的数据依赖。一个好的模式:不会发生插入异常、删除异常,数据冗余应尽可能少。数据依赖对关系模式的影响(续)解决方法如下:把关系模式S分解为3个关系模式:S(Sno,Sdept,SnoSdept);SG(Sno,Cname,Grade,(Sno,Cname)Grade);Dept(Sdept,Mname,SdeptMname)2.2规范化规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常,和数据冗余问题。规范化:通过分析关系(关系模式)中存在的弱点,将该关系分解为若干个高一级的关系。范式:关系规范化的程度称为范式,1NF,2NF,3NF,
18、BCNF2.3函数依赖一、函数依赖二、平凡函数依赖与非平凡函数依赖三、完全函数依赖与部分函数依赖四、传递函数依赖一、函数依赖定义2.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。一、函数依赖例如:学生(Sno,Sname,Sdept,Sage)由于在所有的元组中,Sno都是唯一的,因此,Sno函数确定Sname和Sdept。如果规定Sname不能重复,那么在所有的元组中Sname也都是唯一的,可以说,Sname函数确定Sdept,
19、或者说,Sdept函数依赖于Sname记作:SnameSdept或者说,Sname和Sdept函数依赖于SnoSnoSname,SnoSdept几个术语和符号l如果XY,则X叫做决定因素(Determinant)l如果XY,YX,则记作:XYl如果Y不函数依赖于X,则记作:XY二、平凡函数依赖与非平凡函数依赖l如果XY,但YX,则称XY是非平凡的函数依赖l如果XY,但YX,则称XY是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)Grade平凡函数依赖:(Sno,Cno)Sno(Sno,Cno)Cno三、完全函数依赖与部分函数依赖定义2.2在关系
20、模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有XY,则称Y完全函数依赖于X,记作:XFY若XY,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作:XPY三、完全函数依赖与部分函数依赖例:在关系SC(Sno,Cno,Grade)中,用X表示(Sno,Cno),用Y表示Grade,那么,(Sno,Cno)Grade但是SnoGrade,CnoGrade,因此(Sno,Cno)FGrade四、传递函数依赖定义定义2.32.3在关系模式R(U)中,如果XY,YZ,且YX,YX,则称Z传递函数依赖于X。注:如果YX,即XY,则称Z直接函数依赖于X。例:在关系Std(Sno,Sdept,
21、Mname)中,有:SnoSdept,SdeptSno,SdeptMnameMname传递函数依赖于Sno2.4码定义2.4设K为关系模式R中的属性或属性组合。若KU,则K称为R的一个侯选码(CandidateKey)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primarykey)。主属性与非主属性全码(ALLKEY)外部码定义定义2.52.5 关系模式 R 中的属性或属性组 X 不是R 的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。主码和外部码一起提供了表示关系间联系的手段SC(Sno,Cno,Grade)Student(Sno,
22、Sname,Sdept,Sage)Course(Cno,Cname,Cpno,Ccredit)2.5 范式关系数据库中的关系必须满足一定的要求。把满足不同程度要求的关系称为不同的范式。范式的种类第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)2.5范式各种范式之间存在联系:若某一关系模式R为第n范式,可简记为RnNF例:R1NF,R3NF2.61NF的定义1NF的定义如果一个关系模式R的所有属性都是不可再分的基本数据项,则R1NF。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库不能称为关系数据库但是满足第一范式的关系模式
23、并不一定是一个好的关系模式。例:SLC(Sno,Cno,Sdept,Sloc,Grade)1NFSnoCnoSdeptSlocGrade95001数据库数据库信息系信息系1号楼号楼9095001英语英语信息系信息系1号楼号楼852.61NF的定义例:SLC(Sno,Sdept,Sloc,Cno,Grade)1NF码为(Sno,Cno)函数依赖如下:SnoSdept(Sno,Cno)FGradeSnoSloc(Sno,Cno)PSdeptSnoSloc(Sno,Cno)PSlocSdeptSloc2.61NF的定义SLC(Sno,Cno,Sdept,Sloc,Grade)1NF,但其中存在很多问
24、题:1.插入异常一个新生刚报道,学号是2004100,在信息系,住在5楼,但是他还没有选课,即没有Cno属性。由于码(Sno,Cno)不存在,就不能把该学生的信息插入数据库。2.删除异常学生2004101只选了一门课C1,现在又退选了,那么就要删除C1属性,由于C1是主属性,就必须把C1所在元组全部删除。因此,学生2004101的其他信息也被删除了。2.61NF的定义3.修改复杂学生2004100从信息系转到了数学系(MA),只需修改Sdept即可。但是,由于SdeptSloc,同时要修改Sloc属性,即将学生改变住处。另外,如果该学生选了10门课,那么就要把这10个元组中的Sdept和Slo
25、c全部修改,使得修改操作复杂,而且容易出错。因此SLC(Sno,Sdept,Sloc,Cno,Grade)1NF是不够的,必须进一步规范化。2.62NF的定义定义2.6若关系模式R1NF,并且每一个非主属性都完全函数依赖于R的码,则R2NF。例:SLC(Sno,Cno,Sdept,Sloc,Grade)1NF例:SLC(Sno,Cno,Sdept,Sloc,Grade)2NF因为:非主属性Sdept部分依赖于码(Sno,Cno)SdeptP模式分解将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余通过模式分解,将一个低一级范式的关系模式转换为若干个高一级范
26、式的关系模式的集合,这个过程称为规范化。SC(Sno,Cno,Grade)2NFSL(Sno,Sdept,Sloc)2NF将SLC(Sno,Sdept,Sloc,Cno,Grade)分解:2.7第三范式3NF3NF的定义定义2.7关系模式R 中若不存在这样的码X、属性组Y 及非主属性Z(Z Y), 使得XY(YX),YZ,成立,则称R 3NF即:若R 1NF ,并且每个非主属性都不传递依赖于R的码,则R 3NF若R 3NF ,则在R中不存在非主属性对码的传递依赖和部分函数依赖。2.73NF 例,SL(Sno,Sdept,Sloc)2NF1)由于SnoSdept,SdeptSloc,即存在非主属
27、性Sloc对码Sno的传递依赖,因此,SL(Sno,Sdept,Sloc)3NF2)一个关系模式若不属于3NF,同样会出现很多问题,因此将SL分解为2个3NF的关系模式:SD(Sno,Sdept)3NFDL(Sdept,Sloc)3NF规范化理论小结关系模式规范化的基本步骤1NF消除非主属性对码的部分函数依赖消除决定属性2NF集非码的非平消除非主属性对码的传递函数依赖凡函数依赖3NF消除主属性对码的部分和传递函数依赖BCNF第三章小结1.掌握以下概念:关系,关系模式,关系数据库,数据库模式,码,外码,主属性,非主属性,范式,规范化关系模式的五元组和三元组表示方法2.掌握函数依赖的有关内容:函数
28、依赖的定义,平凡函数依赖与非平凡函数依赖,完全函数依赖与部分函数依赖,传递函数依赖3.掌握范式有关内容:1NF,2NF,3NF,BCNF的定义及其特点1NF2NF,2NF3NF的转化关系模式分解的标准三种模式分解的等价定义分解具有无损连接性分解要保持函数依赖分解既要保持函数依赖,又要具有无损连接性模式的分解(续)例:SL(Sno,Sdept,Sloc)F=SnoSdept,SdeptSloc,SnoSlocSL2NF存在插入异常、删除异常、冗余度大和修改复杂等问题分解方法可以有多种模式的分解(续)SLSnoSdeptSloc95001CSA95002ISB95003MAC95004ISB950
29、05PH B模式的分解(续)1.SL分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)分解后的关系为:SNSDSOSnoSdeptSloc95001CSA95002ISB95003MAC95004PH95005模式的分解(续)分解后的数据库丢失了许多信息例如无法查询95001学生所在系或所在宿舍。如果分解后的关系可以通过自然连接恢复为原来的关系,那么这种分解就没有丢失信息模式的分解(续)2.SL分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)分解后的关系为:NLDLSnoSlocSdeptSloc95001ACSA95002BISB95003C
30、MAC95004BPHB95005B模式的分解(续)NLDLSnoSlocSdept95001ACS95002BIS95002BPH95003CMA95004BIS95004BPH95005BIS95005BPH模式的分解(续)NLDL比原来的SL关系多了3个元组无法知道95002、95004、95005究竟是哪个系的学生元组增加了,信息丢失了第三种分解方法3.将SL分解为下面二个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)分解后的关系为:模式的分解(续)NDNLSnoSdeptSnoSloc95001CS95001A95002IS95002B95003MA95003C9500
31、4IS95004B95005PH95005B模式的分解(续)NDNLSnoSdeptSloc95001CSA95002ISB95003MAC95004CSA95005PHB与SL关系一样,因此没有丢失信息具有无损连接性的模式分解关系模式R的一个分解=R1,R2,Rn若R与R1、R2、Rn自然连接的结果相等,则称关系模式R的这个分解具有无损连接性(Losslessjoin)具有无损连接性的分解保证不丢失信息无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题模式的分解(续)第三种分解方法具有无损连接性问题:这种分解方法没有保持原关系中的函数依赖SL中的函数依赖SdeptSloc没有
32、投影到关系模式ND、NL上第四种分解方法将SL分解为下面二个关系模式:ND(Sno,Sdept)DL(Sdept,Sloc)这种分解方法就保持了函数依赖。模式的分解(续)如果一个分解具有无损连接性,则它能够保证不丢失信息。如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。模式的分解(续)第一种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解第二种分解方法保持了函数依赖,但不具有无损连接性第三种分解方法具有无损连接性,但未持函数依赖第四种分解方法既具有无损连接性,又保持了函数依赖小结(续)规范化理论为数据库设计提供了理论的指南和工具u也仅仅是指南和工具并不是规范化程度越高,模式就越好u必须结合应用环境和现实世界的具体情况合理地选择数据库模式