CS&TInformationCourse2007BeyondTechnology数据库原理与应用东软信息学院计算机系信息化课程CS&TInformationCourse2007第5章关系数据库理论东北大学东软信息学院计算机系CS&TInformationCourse2007目录•5.1问题的提出•5.2函数依赖•5.3关系规范化•5.4多值依赖•5.5第四范式•5.6模式分解CS&TInformationCourse20075.1问题的提出•问题:•面对一个实际应用的项目,如何构造出一个好的数据库关系模式呢?即应该构造几个关系模式,每个关系模式又由哪些属性组成呢?•有没有检验的标准呢?•而不好的数据库关系模式又能够产生哪些问题呢?CS&TInformationCourse2007实例姓名系别办公地点课程名成绩赵一计算机A3DB67赵一计算机A3DS80孙三计算机A3DB65李四信管A7电子商务87李四信管A7会计学77吴六英语A2基础听力90郑七英语A2大学英语85在操纵这张表的时候会产生哪些问题呢?CS&TInformationCourse2007问题•(1)如果某名学生已经入学,分配了所在的系,但是这名学生并没有选课,这种情况下我们能否将学生信息插入到表中?•(2)如果某名学生只选修了一门课程,而由于某种原因,这门课程后来也不选了,因此要删除该名学生选修这门课程的记录,但能否直接删除该名学生的选课记录而仍保留该名学生的其他基本信息呢?•(3)如果某个学生从计算机系转到了英语系,我们要修改此学生的系别,但修改后的系别能否正确的对应该系所在的办公地点呢?CS&TInformationCourse2007四大问题•(1)数据插入异常•(2)数据删除异常•(3)数据更新异常•(4)数据冗余•问题:麻烦!麻烦!!好麻烦!!!唉!剪不断,理还乱!!!CS&TInformationCourse2007解决问题•解决之道:分解!分解!!再分解!!!哇,原来生活可以如此简单!姓名系别赵一计算机孙三计算机李四信管吴六英语郑七英语姓名课程名成绩赵一DB67赵一DS80孙三DB65李四电子商务87李四会计学77吴六基础听力90郑七大学英语85系别办公地点计算机A3信管A7英语A2CS&TInformationCourse20075.2函数依赖•5.2.1函数依赖基本概念•5.2.2基本术语CS&TInformationCourse20075.2.1函数依赖基本概念•定义:•设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不可能存在两个元组在X上的属性值相同,而在Y上的属性值不同,(换句话说,就是对于关系r中的任意一个X值,都只有一个Y值与之对应)则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。CS&TInformationCourse2007例:对于关系模式:图书(图书编号,图书名,出版社,定价)有以下的依赖关系:图书编号→图书名图书编号→出版社图书编号→定价例:学生(学生号,姓名,年龄,性别)有以下的依赖关系:学生号→姓名学生号→年龄学生号→性别CS&TInformationCourse20075.2.2基本术语设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。如果果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖。若Y包含于X,则称X→Y为平凡函数依赖。如果X→Y,则称X为决定因子。如果X→Y,并且Y→X,则记作X←→Y。如果X→Y,并且对于X的一个任意真子集X’,都有X’-/→Y,则称Y完全函数依赖于X,记作X-f→Y;如果X’→Y成立,则称Y部分函数依赖于X,记作X-p→Y。如果X→Y(非平凡函数依赖,并且Y—/→X)、Y→Z,则称Z传递函数依赖于X。CS&TInformationCourse2007例1:有关系模式:SC(Sno,Sname,Cno,Credit,Grade)其中各属性分别为:学号、姓名、课程号、学分、成绩,主码为(Sno,Cno)。函数依赖关系有:Sno→Sname姓名函数依赖于学号(Sno,Cno)p→Sname姓名部分函数依赖于学号和课程号(Sno,Cno)f→Grade成绩完全函数依赖于学号和课程号CS&TInformationCourse2007例2:有关系模式:S(Sno,Sname,Dept,Dept_master)其中各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一个主任),主码为Sno。则函数依赖关系有:Snof→Sname由于:Snof→DeptDeptf→Dept_master所以有:Sno传递→Dept_master系主任传递依赖于学号CS&TInformationCourse20075.3关系规范化•5.3.1范式介绍•5.3.2第一范式•5.3.3第二范式•5.3.4第三范式•5.3.5BC范式CS&TInformationCourse20075.3.1范式介绍关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同的范式。满足最低要求的为第一范式,简称1NF(FirstNormalForm)。在第一范式中进一步满足一些要求的为第二范式,简称2NF,依此类推,还有3NF,BCNF,4NF,5NF。对于上述的几种范式之间,有如下的联系:5NF包含于4NF包含于BCNF包含于3NF包含于2NF包含于lNF。CS&TInformationCourse20075.3.2第一范式定义如果一个关系模式R的所有属性都是不可再分的数据项,也即一张表格R中所有的列都不能再分解了,则称R满足第一范式,记为R∈1NF。CS&TInformationCourse2007请大家分析下面的关系是否满足第一范式,如果不满足,如何进行分解?系名称高级职称人数教授副教授计算机系610信息管理系35电子与通讯系48系名称教授副教授计算机系610信息管理系35电子与通讯系48CS&TInformationCourse20075.3.3第二范式定义若关系模式R满足第一范式,即R∈1NF,且R中不存在非主属性对于候选码的部分依赖,则R∈2NF。CS&TInformationCourse2007请大家分析下面的关系模式是否满足第二范式,如果不满足,如何将其分解为满足第二范式的关系模式?【例5.4】关系模式:学生(姓名,系别,办公地点,课程名,成绩)判断该关系模式是否满足第二范式?如果不满足第二范式应该如何进行处理?CS&TInformationCourse2007解:1.首先找到此关系模式的候选码,根据5.1的语义分析,该关系模式的候选码是(姓名,课程名)2.找出非主属性并判断对于候选码的依赖关系。课程名、办公地点、成绩为非主属性。则有:(姓名,课程名)f→成绩(姓名,课程名)p→系别(姓名,课程名)p→办公地点3.结论:由于关系模式中存在非主属性对于候选码的部分依赖,因此该关系模式不满足第二范式的定义。CS&TInformationCourse20074.为了达到第二范式的要求,我们采用分解的原则。相应的分解过程如下:第一步:用候选码的每一个非空子集作为码构造几个子表学生(姓名,…)课程(课程名…)选课(姓名,课程名…)第二步:对于每一个子表,将依赖于此码的属性放置到此表中。学生(姓名,系别,办公地点)选课(姓名,课程名,成绩)CS&TInformationCourse2007第三步:我们来判断分解之后的两个关系模式是否满足第二范式。其中,学生(姓名,系别,办公地点)候选码是姓名,单个属性做候选码,不存在非主属性对于候选码的部分依赖,满足第2NF。选课(姓名,课程名,成绩),(姓名,课程名)f→成绩,也不存在非主属性对于候选码的部分依赖,满足第2NF。第四步:根据前三步的分解能够使原有的关系模式满足第二范式。CS&TInformationCourse20075.3.4第三范式定义若R∈2NF,且R中不存在非主属性对于候选码的传递依赖,则R∈3NF。CS&TInformationCourse2007【例5.5】判断例4中的分解结果两个关系模式:学生(姓名,系别,办公地点)选课(姓名,课程名,成绩)是否满足第三范式?如果不满足第三范式应该如何进行分解?CS&TInformationCourse20071.首先讨论选课(姓名,课程名,成绩)关系模式,其中候选码为(姓名,课程名)(姓名,课程名)f→成绩所以不存在非主属性对于候选码的传递依赖,满足第三范式。2.学生(姓名,系别,办公地点)关系模式,其中候选码为姓名。∵姓名f→系别系别f→办公地点∴姓名传递→办公地点所以存在非主属性办公地点传递函数依赖于候选码姓名,不满足第三范式。CS&TInformationCourse20073.将不满足第三范式的关系模式进行分解,相应的分解过程:第一步:删除候选码以外的决定因子的依赖属性‘办公地点’。组成新的关系模式:学生(姓名,系别)第二步:将决定因子作为另一个新的关系模式的候选码,同时将删除掉的依赖属性加入:系(系别,办公地点)第三步:对于分解之后的两个新的关系模式进行验证,单个属性做主码,而又分别只有一个非主属性,因此,新的关系模式一定满足第三范式。CS&TInformationCourse20075.3.5BC范式我们首先分析一下3NF中存在的问题。【例5.6】关系模式STC(S,T,C)中,S表示学生,T表示教师,C表示课程。每一教师只教一门课,每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。(S,C)→T;(S,T)→C;T→C。这里(S,C),(S,T)都是候选码。请大家分析此关系模式是不是3NF,有没有一些问题?CS&TInformationCourse2007STC是3NF。因为三个属性S、C、T均是候选码的属性,也即主属性,所以在这个关系模式中不存在非主属性对码的部分依赖和传递依赖。但是这个关系模式也存在一些问题:1.插入异常。如果某个学生刚刚入校,尚未选修课程,则因受主属性不能为空的限制,有关信息不能存入数据库。同样原因,如果某个教师开设某门课程,但尚未有学生选修,则有关信息也无法存入数据库。2.删除异常。如果选修某门课程的学生全部毕业了,在删除这些学生的记录的同时,相应教师开设这门课程的信息也一并删除了。3.数据冗余大。虽然一个教师只教一门课,但每个选修该教师该门课程的学生元组都要记录这一信息。4.修改复杂。某个教师开设的某门课程改名后,所有选修了该门课程的学生元组都要进行相应的修改。CS&TInformationCourse2007范式定义:若关系模式R∈1NF,且能决定其它属性取值的属性(组)必定包含码,则R∈BCNF。或者,我们也可以说:如果一个关系的每个决定因子都是候选码,则其是BCNF。或者:如果R∈3NF,并且不存在主属性对非码的函数依赖,则其是BCNF。如果一个模型中的所有关系模式都属于BCNF,那么在函数依赖范畴内,就实现了彻底的分离,消除了操作异常。也就是说,在函数依赖的范畴。BCNF达到了最高的规范化程度。CS&TInformationCourse20075.4多值依赖【例5.8】一位教师可以教授多门课程,同时又可以在多个系教课,而且在每个系都是教同样的几门课。即每位教师无论在那个系都对应一组自己所教授的课程。设计关系模式TSC(T,S,C),T表示教师,S表示系,C表示课程。在这个关系中,假定每一位教师在不同的系教授的课程如下所示:教师T授课系S教授课程C赵{计算机,嵌入式}{数学}钱{计算机,嵌入式,英语}{英文}孙{计算机,嵌入式}{c语言,数据结构}CS&TInformationCourse2007把这些数据组成规范化的二维表如下表所示:教师T系S课程C赵计算机数学赵嵌入式数学钱计算机英文钱嵌入式英文钱英语英文孙计算机c语言孙嵌入式数据结构孙嵌入式c语言孙计算机数据结构CS&TInformationCours