Chapter6关系数据理论6.1问题的提出6.2规范化6.3数据依赖的公理系统6.4模式的分解回顾关系模式的形式化定义:关系模式是一个五元组:R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向域的映象集合F:属性组U上的一组数据依赖在模式设计阶段,将关系模式R(U,D,DOM,F)简化为一个三元组:R(U,F)。6.1问题的提出数据依赖的含义:关系内部属性和属性间的约束现实世界属性间相互联系的抽象语义的体现数据依赖的类型:函数依赖(FunctionalDependency,FD)多值依赖(MultivaluedDependency,MVD)其他函数依赖的例子:Student(sno,sname,sdept)分析:学号确定了,姓名和所在系也就被唯一确定,类似数学函数y=f(x)。即sno函数确定sname,sno函数确定sdept,记作sno-sname,sno-sdept。关系模式设计中可能出现的问题例:建立一个描述学校教务的数据库,从中可以得到如下信息:学生的学号(Sno)、所在系(Sdept)、系主任(Mname)、课程号(Cno)和成绩(Grade)最简单的情况,设计单一的关系模式:Student(Sno,Sdept,Mname,Cno,Grade)分析函数依赖:分析该关系模式存在的问题:数据冗余、更新异常、插入异常、删除异常结论:•Student关系模式不是一个好的模式。•“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。产生问题的原因:由模式中的某些函数依赖引起。解决方法:通过分解关系模式消除其中不合适的数据依赖。Student(Sno,Sdept,Mname,Cno,Grade)回顾:在进行数据库模式设计的时候,设计不合理会带来哪些问题?为什么会产生上述问题?如何解决上述问题?6.2规范化6.2.1函数依赖6.2.2码6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF讨论如何根据属性间依赖情况来判断关系是否具有不合适的性质。6.2.1函数依赖一、函数依赖二、平凡函数依赖与非平凡函数依赖三、完全函数依赖与部分函数依赖四、传递函数依赖一、函数依赖定义6.1设R(U)是一个属性集U上的关系模式,不可肯能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。;称X为这个函数依赖的决定因素或决定属性组。例:Employees(Eno,Ename,Eage)X,YU若X→Y,并且Y→X,则记为X←→Y。若Y不函数依赖于X,则记为X→Y。二、平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖;若X→Y,但YX,则称X→Y是平凡的函数依赖。例:分析关系SC(Sno,Cno,Grade)中的函数依赖。非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,Cno)→Sno(Sno,Cno)→Cno•若不特别声明,我们讨论的都是非平凡的函数依赖。恒成立,没有任何语义有关函数依赖的几点说明函数依赖是语义范畴的概念。我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖。函数依赖与属性间的联系类型有关。如果属性X与Y有1:1的联系:如果属性X与Y有1:n的联系:如果属性X与Y有m:n的联系:X--YY-X不存在函数依赖三、完全函数依赖与部分函数依赖定义6.2在关系模式R(U)中,如果X→Y,并且对都有X’Y,则称Y对X完全函数依赖,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XY。例:在关系S(Sno,Sname,Sdept,Cno,Grade)中,分析其中的完全函数依赖和部分函数依赖。XX注意:只有当决定因素是组合属性时,讨论部分函数依赖才有意义;当决定因素是单属性时,只能是完全函数依赖。p四、传递函数依赖定义6.3在关系模式R(U)中,如果X→Y(YX),Y→X,Y→Z,则称Z传递函数依赖于X。注:如果Y→X,即X←→Y,则Z直接依赖于X。例:在关系Std(Sno,Sdept,Mname)中,分析其中的传递函数依赖。6.2.2码定义6.4设K为关系模式RU,F中的属性或属性组合。若KfU,则K称为R的一个侯选码(CandidateKey)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primarykey)。主属性与非主属性ALLKEY6.2.3范式关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。满足最低要求的叫第一范式。第一范式中满足进一步要求的为第二范式,其余以此类推。某一关系模式R为第n范式,可简记为R∈nNF。通过模式分解,将一个低一级范式的关系模式转化为若干个高一级范式的关系模式的集合,这个过程叫做规范化。1NF如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。1NF例子分析关系模式Activities(sid,activity,fee)表示“学生交纳一定的费用参加某项活动”。其中,每个学生可以参加多项活动。分析该关系模式的主码、可能存在的问题、导致问题的原因,并解决该问题。存在的问题:数据冗余,插入异常,删除异常,修改异常分析问题原因:fee对主码的部分依赖。解决办法:通过模式分解,消除部分依赖。练习:分析下列关系模式是否属于2NF。SLC(Sno,Sdept,Sloc,Cno,Grade)SLC(Sno,Sdept,Sloc,Cno,Grade)SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)2NF定义定义5.6若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。∈1NF∈2NF∈2NF∈2NF2NF是否完美?Housing(sid,building,fee)表示“学生住在某个大楼及其支付的费用”。其中,一个大楼只收一种费用。分析主码存在的问题原因解决方法3NF定义定义5.8关系模式RU,F中若不存在这样的码X、属性组Y及非主属性Z(ZY),使得X→Y,Y→Z成立,Y→X,则称RU,F∈3NF。•即:若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。•例:分析SL(Sno,Sdept,Sloc),SD(Sno,Sdept)各属于哪种范式?回顾:函数依赖(FD)FD和属性间的联系有何关系平凡的FD,非平凡的FD完全FD,部分FD,传递FD1NF,2NF,3NF3NF是否完美考虑关系模式adviser(sid,major,tname)表示学生选择喜爱的专业进行研究,并受该专业下某教师的指导;一个学生可选多个专业;一个教师只负责一个专业,一个专业有多名教师。分析主码,adviser是第几范式;存在的问题;分析原因;解决方法;BCNF定义5.9关系模式RU,F∈1NF,若X→Y且YX时X必含有候选码,则R∈BCNF。等价于:每一个决定因素都包含候选码。特点:R中的所有属性(主,非主属性)都完全函数依赖于码;若R∈BCNF,则R∈3NF;若R∈3NF,则R不一定∈BCNF;练习:分析下列关系模式各属于第几范式。1.C(Cno,Ccredit,Pcno)。2.S(Sno,Sname,Sdept,Sage)。假设约定无重名。3.SCP(S,C,P),其中S表示学生,C表示课程,P表示名次。4.STC(S,T,C),其中S表示学生,T表示教师,C表示课程。每位老师只负责一门课程,每门课有多位老师,学生选定某门课,对应一个固定老师。关系规范化小结关系模式规范化的思想逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的分离概念的逐步单一化,采用投影的方法关系规范化在实际应用中应适可而止关系规范化的步骤关系规范化小结1)3NF必定为2NF和1NF,反之不一定;2)BCNF必为3NF,反之不一定;3)3NF已在很大程度上控制了数据冗余;4)3NF已在很大程度上消去了插入和删除操作异常;5)3NF分解仍不够彻底(可能存在主属性对候选码的部分依赖和传递依赖);6)在函数依赖范围内,BCNF已完全消去了插入和删除异常;7)范式并非越高越好;范式越高,异常越少,但查询操作越麻烦;8)关系规范化应适可而止。理论上:一般到3NF应用上:连接开销。9)分解不唯一。练习:1:关系模式中,满足2NF的模式,______。A.可能是1NFC.必定是1NFB.必定是3NFD.必定是BCNF考虑如下的关系定义和样本数据:Project(Pid,Ename,Esal),其中Pid是项目名,Ename是该项目的雇员名,Esal是雇员的薪水。假定所有的函数依赖和约束都显示在数据中,则以下哪个陈述是对的?PidEnameEsal100AJones64K100ASmith51K100BSmith51K200AJones64K200BJones64K200CParks28K200CSmith51K200DParks28K回答如下问题:1)Project的候选码是什么?2)非主属性依赖于整个关键字吗?3)Project在哪个范式中?4)Pid是决定因素吗?5)Ename是决定因素吗?6)重新设计该关系,消除更新异常。1)Pid-Ename2)Pid-Esal3)(Pid,Ename)-Esal4)Ename-Esal5)Esal-Pid