1、1第第6章章 关系数据理论关系数据理论 6.1问题的提出问题的提出6.2规范化规范化25.1 问题的提出问题的提出关系数据库逻辑设计关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数针对具体问题,如何构造一个适合于它的数据模式据模式数据库逻辑设计的工具数据库逻辑设计的工具关系数据库的规关系数据库的规范化理论范化理论3关系模式简记为:关系模式简记为:R(A1,A2,An)形式化表示为:形式化表示为:五元组五元组 R(U,D,dom,F)关系名关系名属性集合属性集合 域集合域集合属性向域的属性向域的映象集合映象集合属性间数据的属性间数据的依赖关系集合依赖关系集合例子:选修关系例子:选修关系
2、可可简记为简记为:SC(Sno,Cno,G)形式化表示为形式化表示为:SC(U,D,dom,F)U=Sno,Cno,G D=字符型字符型,数值型数值型dom(Sno)=dom(Cno)=字符型;字符型;dom(G)=数值型;数值型;F(Sno,Cno)G三元组三元组 R(U,F)4数据依赖数据依赖是通过一个关系中属性间值的相等与否体现出来的数是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系据间的相互关系是现实世界属性间相互联系的抽象是现实世界属性间相互联系的抽象是数据内在的性质是数据内在的性质是是语义的体现语义的体现数据依赖的类型数据依赖的类型函数依赖(函数依赖(Functiona
3、l Dependency,简记为简记为FD)多值依赖(多值依赖(Multivalued Dependency,简记为简记为MVD)例如例如:p1795实例实例:要求设计一个教学管理数据库要求设计一个教学管理数据库,面临的对象有面临的对象有:学生学生:用学号用学号Sno描述描述.系系:用系名用系名Sdept描述描述系主任系主任:用姓名用姓名Mn描述描述.课程课程:用课程名用课程名Cname描述描述成绩成绩:用分数用分数G描述描述U=Sno,Sdept,Mn,Cname,G由现实世界已知由现实世界已知:一个系有若干学生一个系有若干学生,但一个学生只属于一个系但一个学生只属于一个系.一个系只有一名系
4、主任一个系只有一名系主任.一个学生可以选修多门课程一个学生可以选修多门课程,每门课程有若干学生选修每门课程有若干学生选修.每个学生学习每一门课程有一个成绩每个学生学习每一门课程有一个成绩.F=SnoSdept,SdeptMn,(Sno,Cname)G6SnoCnameSdeptMnG函数依赖图函数依赖图:这个教学管理数据库模式这个教学管理数据库模式S(U,F)有以下三个有以下三个“毛病毛病”:p171(1)插入异常插入异常(2)删除异常删除异常(3)冗余太大冗余太大把模式把模式S(U,F)分解为三个模式分解为三个模式:(称为规范化的过程称为规范化的过程)S(Sno,Sdept,SnoSdept
5、)Sg(Sno,Cname,G,(Sno,Cname)G)Dept(Sdept,Mn,SdeptMn)76.2规范化规范化6.2.1函数依赖函数依赖1.属性间的联系属性间的联系 一对一联系一对一联系一对多联系一对多联系多对多联系多对多联系例如例如:S(U,F)U=Sno,Sdept,Mn,Cname,G82.函数依赖函数依赖定义定义:设设R(U)是属性集是属性集U上的关系上的关系.X,Y是是U的子集的子集.若对于若对于R(U)的任意的任意一个可能的关系一个可能的关系r,r中不可能存在两个元组在中不可能存在两个元组在X上的属性值相等上的属性值相等,而在而在Y上的属性值不等上的属性值不等,则称则称
6、X函数确定函数确定Y或或Y函数依赖于函数依赖于X,记为记为XY.例子例子:R(Sno,Sdept,Mn,Cname,G)SnoSdept SdeptMn(Sno,Cname)GMnSdeptSnoGCname G在一个关系模式中设有属性集在一个关系模式中设有属性集X,Y:如果如果X与与Y是是一对一联系一对一联系XY,YX一对多联系一对多联系YX多对多联系多对多联系XY,YX9一些符号一些符号:XY,但但YX则称则称XY是是非平凡的函数依赖非平凡的函数依赖.例子例子:R(Sno,Sdept,Mn,Cname,G)(Sno,Cname)Cname(Sno,Cname)GXY,但但YX则称则称XY是
7、是平凡的函数依赖平凡的函数依赖.平凡函数依赖平凡函数依赖非平凡函数依赖非平凡函数依赖若若XY,则则X称为称为决定因素决定因素.若若XY,YX,则记为则记为XY例子例子:SdeptMn 若若Y函数不依赖于函数不依赖于X,则记为则记为XY例子例子:SnoGCname G10Sc(Sno,Cno,Grade)定义定义:在在R(U)中中,如果如果XY,并且对于并且对于X的任何一个真子集的任何一个真子集 ,都有都有 Y,则称则称Y对对X完全函数依赖完全函数依赖,记为记为 若若XY,但但Y不完全函数依赖于不完全函数依赖于X,则称则称Y对对X部分函部分函 数依赖数依赖,记为记为XXYXFYXP例子例子:Gr
8、adeCnoSnoGradeCnoGradeSnoF),(R(Sno,Sname,Sage,Sdept)SageSnameSnoSageSnoP),(11定义定义:在在R(U)中中,如果如果XY,(Y X),YX,YZ,则称则称Z对对X 传递函数依赖传递函数依赖.记为记为:ZX传递 在在R(U)中中,如果如果XY,(Y X),YX,YZ,则称则称Z对对X 直接函数依赖直接函数依赖.记为记为:ZX直接例子例子1:R(Sno,Sname,Sage,Sdept)如果姓名没有重复如果姓名没有重复:SnoSname SnameSno SnameSageSageSno直接例子例子2:R(Sno,Sdept
9、,Mn,Cname,G)SnoSdept SdeptSno sdeptMnMnSno传递12定义定义:设设K是是R(U,F)中的属性组合中的属性组合,若若 则则K为为R的的侯选码侯选码.若侯若侯选码多于一个则选取其中一个为选码多于一个则选取其中一个为主码主码.包含在任何候选码中的属性包含在任何候选码中的属性,称为称为主属性主属性.不包含在任何一个侯选码中的属性不包含在任何一个侯选码中的属性,称为称为非主属性非主属性.UKF例子例子:R(Sno,Sdept,Mn,Cname,G)(Sno)U(Sno,Sdept)U(Sno,Sdept,Mn)U(Sno,Sdept,Mn,Cname)U (存在存
10、在部分函数依赖部分函数依赖)(Sno,Sdept,Mn,Cname,G)U (存在部分函数依赖存在部分函数依赖)(Sno,Cname)U(Sno,Cname,G)U(存在部分函数依赖存在部分函数依赖)侯选码侯选码:(Sno,Cname)(Cno)U13例子例子1:关系关系 S(S#,SN,SD,SA)关系关系S的候选码:的候选码:(S#)(SN)关系关系S的主码:的主码:(S#)关系关系S的主属性:的主属性:S#SN关系关系S的非主属性:的非主属性:SD SA例子例子2:关系关系SC(S#,C#,G)关系关系SC的候选码:的候选码:关系关系SC的主码:的主码:关系关系SC的主属性:的主属性:关
11、系关系SC的非主属性:的非主属性:(S#,C#)(S#,C#)S#C#G例子例子3:关系关系R(P,W,A)关系关系R的候选码的候选码:(P,W,A)关系关系R的主码的主码:(P,W,A)关系关系R的主属性:的主属性:P W A关系关系R的非主属性:的非主属性:全码全码14定义定义:关系模式关系模式R中属性或属性组中属性或属性组X并非并非R的码的码,但但X是另一是另一个关系模式的码个关系模式的码,则称则称X是是R的的外部码外部码,也称外码也称外码.例子例子:Sc(sno,cno,G)S(Sno,Sname,Sdept,Sage)属性属性Sno是是SC的外码的外码例子:例子:Dept(Sdept
12、,Mn,SdeptMn)S(Sno,Sname,Sdept,Sage)属性属性Sdept是是S的外码的外码155.2.2 范式范式1NF2NF3NF4NFBCNF5NF规范化规范化:一个低一级范式一个低一级范式的关系模式的关系模式,通过模式通过模式分解转换为若干个高分解转换为若干个高一级范式的关系模式一级范式的关系模式的集合的集合.5NF 4NF BCNF 3NF 2NF 1NF165.2.3 1NF1NF的定义的定义如果一个关系模式如果一个关系模式R的所有属性都是的所有属性都是不可分的基不可分的基本数据项本数据项,则,则R1NF。第一范式是对关系模式的最起码的要求。不满足第一范式是对关系模式
13、的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好但是满足第一范式的关系模式并不一定是一个好的关系模式。的关系模式。例子例子:S(U,F)U=Sno,Sdept,Mn,Cname,GF=SnoSdept,SdeptMn,SnoMn,(Sno,Cname)G175.2.4 2NF定义定义:若若R1NF,且每一个非主属性完全函数依赖于码且每一个非主属性完全函数依赖于码,则则R 2NF例子例子1:判定关系模式判定关系模式SC(Sno,Cno,G)是否属于是否属于2NF.(1)SC 1NF(2)候选码:候选码
14、:(Sno,Cno)主属性主属性:Sno,Cno 非主属性非主属性:G SnoG CnoG GCnoSnoF),(SC 2NF18例子例子2:判定关系模式判定关系模式S-L-C(Sno,Sdept,Sloc,Cno,G)是否属是否属 于于2NF.注注:Sloc为学生住处,假设每个系的学生住在同一个地方。为学生住处,假设每个系的学生住在同一个地方。S-L-C的函数依赖有的函数依赖有:SnoSdeptSdeptSlocSnoSloc(Sno,Cno)GSnoCnoGSdeptSloc函数依赖图函数依赖图:19(1)S-L-C 1NF(2)候选码:候选码:(Sno,Cno)主属性主属性:Sno,Cn
15、o 非主属性非主属性:Sdept,Sloc,G SnoG CnoG GCnoSnoF),(SnoSdept SdeptCnoSnoP),(SnoSLoc SlocCnoSnoP),(S-L-C2NF解解:20关系模式关系模式S-L-C(Sno,Sdept,Sloc,Cno,G)存在以下问题存在以下问题:(1)插入异常插入异常(2)删除异常删除异常(3)修改复杂修改复杂解决的方法解决的方法:分解模式分解模式把关系模式把关系模式S-L-C分解为分解为:SC(Sno,Cno,G)S-L(Sno,Sdept,Sloc)(例例:Sno95102,SdeptIS,SlocN的插入的插入)(例例:Sno95
16、001,SdeptCS,Cno=3的删除的删除)(例例:Sno95004,SdeptIS,SlocN 转系转系)原因原因 Sdept、Sloc部分函数依赖于码部分函数依赖于码(Sno,Cno)。215.2.5 3NF定义:若定义:若R2NF,且每一个非主属性都且每一个非主属性都 不传递依赖于码不传递依赖于码,则则R3NF。例例:分析关系模式:分析关系模式SC是否是是否是3NF。解解 :SC(SNO,CNO,G)(1)SC2NF (2)候选码候选码:(SNO,CNO)非主属性:非主属性:G 无无 传递依赖存在传递依赖存在 SC3NF SnoCnoGSC22例例:分析关系模式:分析关系模式S-L是
17、否是是否是3NF。解解 :S-L(SNO,SDEPT,SLOC)(1)S-L2NF (2)候选码候选码:SNO 非主属性:非主属性:SDEPT,SLOC SNOSDEPT SDEPTSNO,SDEPTSLOC S-L3NFSNO SLOC传递传递SnoSdeptSloc23关系模式关系模式S-L(SNO,SDEPT,SLOC)不属于不属于3NF,它它存在下列问题:存在下列问题:(1)插入异常插入异常 (2)删除异常删除异常 (3)修改复杂修改复杂解决的方法:将解决的方法:将S-L分解:分解:S-L(SNO,SDEPT,SLOC)S-D(SNO,SDEPT)D-L(SDEPT,SLOC)3NF
18、3NF(例例:SdeptMA,Sloc4A的插入的插入)(例例:Sno95001,SdeptCS,Sloc=D的删除的删除)(例例:SdeptIS,SlocN 系换地址系换地址)原因原因 Sloc传递函数依赖于码传递函数依赖于码(Sno)。24S-L-CS-LS-D(SNO,SDEPT)D-L(SDEPT,SLOC)SC(SNO,CNO,G)3NF 3NF 3NF关系模式关系模式S-L-C S(Sno,Sdept,Sloc,Cno,G)经过经过2次分解后:次分解后:(1)插入无异常)插入无异常(2)删除无异常)删除无异常(3)修改不复杂)修改不复杂3NF消除了非主属性对候选码的:消除了非主属性
19、对候选码的:(1)部份函数依赖)部份函数依赖 (2)传递函数依赖)传递函数依赖25例:关系模式例:关系模式STJ(S,T,J)S表示学生,表示学生,T表示教师,表示教师,J表示课程。表示课程。每一个教师只教一门课。每门课有若干教师,某一学生选每一个教师只教一门课。每门课有若干教师,某一学生选定某门课程,就对应一个固定的教师。定某门课程,就对应一个固定的教师。某个学生选修某个某个学生选修某个教师的课就确定了所选课的名称教师的课就确定了所选课的名称。J与与T是一对多联系:是一对多联系:TJS与与J是多对多联系:是多对多联系:S与与T是多对多联系:是多对多联系:(S,J)T(S,T)J如图:如图:S
20、JTSTJ26分析模式分析模式STJ(S,T,J):):(1)STJ1NF(2)候选码候选码:(:(S,T)(S,J)非主属性:无非主属性:无 STJ3NF存在问题:存在问题:(1)插入异常)插入异常(2)删除异常)删除异常(3)数据冗余)数据冗余(例:(例:T=张三,张三,J=物理的插入)物理的插入)(例:(例:S=95001,T=张三,张三,J=物理的删除)物理的删除)(例:(例:T=张三,张三,J=物理物理 老师换课)老师换课)273NF还隐含还隐含主属性主属性对候选码:对候选码:(1)部份函数依赖)部份函数依赖(2)传递函数依赖)传递函数依赖285.2.6 BCNF(扩展的第三范式)扩
21、展的第三范式)定义:若定义:若R3NF,且每一个决定因素都包含码。则且每一个决定因素都包含码。则 R BCNF例例1:分析关系模式:分析关系模式 S(SNO,SNAME,SDEPT,SAGE)(1)S 1NF (2)候选码:候选码:SNO 非主属性:非主属性:SNAME,SDEPT,SAGE S 2NFFFFSNO SNAME SNOSDEPT SNOSAGE29(3)非主属性无传递函数依赖于码)非主属性无传递函数依赖于码 S 3NF(4)决定因素只有)决定因素只有SNO S BCNF例例2:分析关系模式分析关系模式 SC(SNO,CNO,G)(1)SC 3NF (2)()(SNO,CNO)G
22、 决定因素决定因素(SNO,CNO)是码是码 SC BCNF30例例3 SJP(S,J,P)中,中,S是学生,是学生,J 表示课程,表示课程,P表示表示 名次。每一个学生选修每门课程的成绩有一定的名名次。每一个学生选修每门课程的成绩有一定的名 次,每门课程中每一名次只有一个学生(即没有并次,每门课程中每一名次只有一个学生(即没有并 列名次)。由语义可得到下面的函数依赖:列名次)。由语义可得到下面的函数依赖:(S,J)P (J,P)S分析分析:(1)SJP1NF (2)候选码:(候选码:(S,J)(J,P)非主属性:无非主属性:无 SJP3NF (3)决定因素(决定因素(S,J)(J,P)是码是
23、码 SJPBCNF31 (1)STJ3NF (2)候选码:(候选码:(S,J)(S,T)TJ 决定因素决定因素T不包含码不包含码STJBCNFSJTSTJ例例4:分析关系模式分析关系模式 STJ(S,T,J)32STJ存在下列问题:存在下列问题:(1)插入异常)插入异常 (2)删除异常)删除异常 (3)数据冗余)数据冗余解决的方法:解决的方法:分解分解STJ(S,T,J)STJ(S,T,J)ST(S,T)TJ(T,J)BCNF BCNFSTSTTJTJ33小结:小结:(1)如果只考虑函数依赖,则属于)如果只考虑函数依赖,则属于BCNF的关系模式规的关系模式规 范化程度已经是最高的了。范化程度已
24、经是最高的了。(2)如果考虑多值依赖,则属于)如果考虑多值依赖,则属于4NF的关系模式规范化的关系模式规范化 程度已经是最高的了。程度已经是最高的了。(3)函数依赖是多值依赖的一种特殊情况,而多值依赖)函数依赖是多值依赖的一种特殊情况,而多值依赖 又是连接依赖的一种特殊情况。又是连接依赖的一种特殊情况。34小结小结:规范化的基本思想是规范化的基本思想是:P182 消除不合适的数据依赖消除不合适的数据依赖各关系模式达到某种程度的各关系模式达到某种程度的“分离分离”采用采用“一事一地一事一地”的模式设计原则的模式设计原则 让一个关系描述一个概念、一个实体或者实体间的一种联让一个关系描述一个概念、一
25、个实体或者实体间的一种联 系。若多于一个概念就把它系。若多于一个概念就把它“分离分离”出去出去所谓规范化实质上是概念的单一化所谓规范化实质上是概念的单一化35不能说规范化程度越高的关系模式就越好不能说规范化程度越高的关系模式就越好在设计数据库模式结构时,必须对现实世界的实际情况和在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式现实世界的模式上面的规范化步骤可以在其中任何一步终止上面的规范化步骤可以在其中任何一步终止361NF2NF3NFBCNF4NF消除非主属性对码的部分消除非主
26、属性对码的部分函数依赖函数依赖消除非主属性对码的传递消除非主属性对码的传递函数依赖函数依赖消除主属性对码的部分和传递消除主属性对码的部分和传递函数依赖函数依赖消除非平凡且非函数依赖的消除非平凡且非函数依赖的多值依赖多值依赖37(5)若)若R.AR.B,R.BR.C,则则R.AR.C。(6)若)若R.AR.B,R.AR.C,则则R.AR.(B,C)。(7)若)若R.BR.A,R.CR.A,则则R.(B,C)R.A。(8)若)若R.(B,C)R.A,则则R.BR.A,R.CR.A。(4)当且仅当函数依赖)当且仅当函数依赖AB在在R上成立上成立,关系关系R(A,B,C)等于其投影等于其投影R1(A,B)和和R2(A,C)的连接。的连接。