资源描述
数据库原理与应用人民邮电出版社2第5章 关系数据库规范化理论v什么是规范化理论?什么是规范化理论?v 部门表(部门号部门号,部门名),部门名)v 职工表(职工号职工号,职工名,工资,职工名,工资,部门部门号,工种号,工种)n1职工职工部门部门工工作作部门名部门名部门号部门号职工号职工号职工名职工名工资工资工种工种v 部门表(部门号部门号,部门名),部门名)v 职工表(职工号职工号,职工名,工资),职工名,工资)v 工作表(职工号职工号,部门号,工种),部门号,工种)v XX表(职工号职工号,职工名,工资,部门号,部门名,工种),职工名,工资,部门号,部门名,工种)3第5章 关系数据库规范化理论v5.1 5.1 函数依赖函数依赖 5.1.1 函数依赖基本概念 5.1.2 一些术语和符号 5.1.3 为什么要讨论函数依赖 v5.2 5.2 关系规范化关系规范化 5.2.1 关系模式中的键 5.2.2 范式 45.1 函数依赖v针对一个实际应用业务,如何构造合适的针对一个实际应用业务,如何构造合适的关系模式,应构造几个关系模式,每个关关系模式,应构造几个关系模式,每个关系模式由哪些属性组成等,这些都是数据系模式由哪些属性组成等,这些都是数据库设计问题,确切地讲是关系数据库的库设计问题,确切地讲是关系数据库的逻逻辑设计辑设计问题。问题。v数据的语义不仅表现为完整性约束,对关数据的语义不仅表现为完整性约束,对关系模式的设计也提出了一定的要求。系模式的设计也提出了一定的要求。55.1.1 基本概念 v省省=f(城市城市):只要给出一个具体的城市值,就会有唯:只要给出一个具体的城市值,就会有唯一一个省值和它对应,一一个省值和它对应,v如如“武汉市武汉市”在在“湖北省湖北省”,这里,这里“城市城市”是自变量是自变量X,“省省”是因变量或函数值是因变量或函数值Y。v把把X函数决定函数决定Y,或,或Y函数依赖于函数依赖于X表示为:表示为:XYv如果有关系模式如果有关系模式R(A1,A2,An),X和和Y为为A1,A2,An的子集,则对于关系的子集,则对于关系R中的任意一中的任意一个个X值,都只有一个值,都只有一个Y值与之对应,则称值与之对应,则称X函数决定函数决定Y,或或Y函数依赖于函数依赖于X。6示例例例1 1:对学生关系模式:对学生关系模式 Student Student(Sno,SName,Sdept,SageSno,SName,Sdept,Sage)v有以下依赖关系:有以下依赖关系:SnoSName,SnoSdept,SnoSage 例2:SC(Sno,Cno,Grade)(Sno,Cno)Grade 7函数依赖定义v 设有关系模式设有关系模式R(A1,A2,An),X和和Y均为均为A1,A2,An的子集,的子集,r是是R的任一具体关系,的任一具体关系,t1、t2是是r中的任意两个元组;中的任意两个元组;v 如果由如果由t1X=t2X可以推导出可以推导出t1Y=t2Y,则称,则称X函数决定函数决定Y,或,或Y函数依赖于函数依赖于X,记为,记为XY。v 在以上定义中特别要注意,只要在以上定义中特别要注意,只要 t1X=t2X t1Y=t2Y成立,就有成立,就有XY。也就。也就是说只有当是说只有当t1X=t2X为真,而为真,而t1Y=t2Y为假为假时,函数依赖时,函数依赖XY不成立;而当不成立;而当t1X=t2X为假时,为假时,不管不管t1Y=t2Y为真或为假,都有为真或为假,都有XY成立。成立。85.1.2 一些术语和符号(1 1)如果)如果X XY Y,但,但Y Y不包含于不包含于X X,则称,则称X XY Y是非平凡的函数依赖是非平凡的函数依赖。(2)如果)如果X XY Y,但,但Y Y包含于包含于X X,则称,则称X XY Y是平凡的函数依赖是平凡的函数依赖。若无特别声明,我们讨论的都是非平凡的函若无特别声明,我们讨论的都是非平凡的函数依赖。数依赖。(3 3)如果)如果X XY Y,则,则X X称为称为决定因子决定因子。(4 4)如果)如果X XY Y,并且,并且Y YX X,则记作,则记作X XY Y。9术语和符号(续)(5 5)如果)如果XYXY,并且对于,并且对于X X的一个任意真子的一个任意真子集集X X都有都有 ,则称,则称Y Y完全函数依赖完全函数依赖于于X X,记作记作 ;如果;如果 成立,则称成立,则称Y Y部分部分函数依赖函数依赖于于X X,记作,记作10示例v例例1 1:有关系模式:有关系模式SCSC(Sno,Sname,Cno,Credit,GradeSno,Sname,Cno,Credit,Grade),主键为),主键为(Sno,CnoSno,Cno),则函数依赖关系有:),则函数依赖关系有:11术语和符号(续)(6 6)如果)如果XYXY(非平凡函数依赖,并(非平凡函数依赖,并且且 )、)、YZYZ,则称,则称Z Z传递函数依赖传递函数依赖于于X X。12示例v例例2 2:有关系模式:有关系模式S(Sno,Sname,Dept,Dept_master)S(Sno,Sname,Dept,Dept_master),各属性分别为:学号、姓名、所在系和系主任(假各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一个主任),主键为设一个系只有一个主任),主键为SnoSno,则函数依,则函数依赖关系有:赖关系有:135.1.3 为什么要讨论函数依赖?SnoSnameSsexSdeptSlocCnoGrade0611101李勇男计算机系2公寓C001960611101李勇男计算机系2公寓C002800611101李勇男计算机系2公寓C003840611101李勇男计算机系2公寓C005620611102刘晨男计算机系2公寓C001920611102刘晨男计算机系2公寓C002900611102刘晨男计算机系2公寓C004840621102吴宾女信息管理系1公寓C001760621102吴宾女信息管理系1公寓C004850621102吴宾女信息管理系1公寓C005730621102吴宾女信息管理系1公寓C0070621103张海男信息管理系1公寓C001500621103张海男信息管理系1公寓C004800631103张珊珊女通信工程系1公寓C004780631103张珊珊女通信工程系1公寓C005650631103张珊珊女通信工程系1公寓C00714存在问题v数据冗余问题数据冗余问题 v数据更新问题数据更新问题 v数据插入问题数据插入问题 v数据删除问题数据删除问题15结论v此关系模式不是一个好的模式。此关系模式不是一个好的模式。v“好好”的模式:的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。v原因原因:由存在于模式中的:由存在于模式中的某些数据依赖某些数据依赖引起引起v解决方法解决方法:通过:通过分解分解关系模式来消除其中不合适关系模式来消除其中不合适的数据依赖的数据依赖165.2 关系规范化v关系规范化是指导将有“不良”函数依赖的关系模式转换为良好的关系模式的理论。v这里涉及到范式的概念,不同的范式表示关系模式遵守的不同的规则。175.2.1 关系模式中的键v候选键候选键:设:设K K为为R R(U U,F F)中的属性或属性组,中的属性或属性组,若若K K完全决定完全决定U U,则,则K K为为R R的的候选键候选键。v主键主键:关系:关系R R(U U,F F)中可能有多个候选键,中可能有多个候选键,则选其中一个作为主键。则选其中一个作为主键。v全键全键:候选键为整个属性组。:候选键为整个属性组。v包含在任一候选键中的属性称为包含在任一候选键中的属性称为主属性主属性,不包含在任一候选键中的属性称为不包含在任一候选键中的属性称为非主属非主属性性。18示例例例1 1:学生表:学生表(学号学号,姓名姓名,性别性别,身份证号身份证号,年龄年龄,所在系所在系)候选键:学号,身份证号,主键:学号或身份证号候选键:学号,身份证号,主键:学号或身份证号主属性:学号,身份证号主属性:学号,身份证号例例2 2:学生选课表:学生选课表(学号学号,课程号课程号,考试次数考试次数,成绩成绩)候选键:(学号,课程号,考试次数),也为主键候选键:(学号,课程号,考试次数),也为主键主属性:学号,课程号,考试次数,非主属性:成绩主属性:学号,课程号,考试次数,非主属性:成绩例例3 3:教师:教师_ _课程表课程表(教师号教师号,课程号课程号,学年学年)候选键候选键:(:(教师号,课程号,学年教师号,课程号,学年),也为主键),也为主键主属性:教师号,课程号,学年,非主属性:无主属性:教师号,课程号,学年,非主属性:无 是全键表是全键表195.2.1 关系模式中的键(续)外键外键:用于关系表之间建立关联的属性:用于关系表之间建立关联的属性(组)。(组)。定义:若定义:若R R(U U,F F)的属性(组)的属性(组)X X(X X属于属于U U)是另一个关系是另一个关系S S的主键,则称的主键,则称X X为为R R的外键。的外键。(X X必须先被定义为必须先被定义为S S的主键。)的主键。)205.2.2 范式v关系数据库中的关系要满足一定的要求,满足不同程度要求的为不不同的范式(Normal Form)。v范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)21第一范式第一范式(1NF):不包含重复组的关系22第二范式第二范式(2NF):如果R(U,F)1NF,并且R中的每个非主属性都完全函数依赖于主键,则R(U,F)2NF。例例:有关系模式:有关系模式:S-L-C(Sno,Sname,Ssex,Sdept,Sloc,Cno,Grade)(Sno,Cno)是主键,且SnoSname,因此(Sno,Cno)Sname,不是第二范式 p 23分解方法v(1)用组成主键的属性集合的每一个子)用组成主键的属性集合的每一个子集作为主键构成一个表。集作为主键构成一个表。v(2)将依赖于这些主键的属性放置到相)将依赖于这些主键的属性放置到相应的表中。应的表中。v(3)最后去掉只由主键的子集构成的表。)最后去掉只由主键的子集构成的表。24分解S-L-C表v(1)将该表分解为如下的三张表(下划线)将该表分解为如下的三张表(下划线部分表示主键):部分表示主键):S-L(Sno,)C(Cno,)S-C(Sno,Cno,)例例:对于上面的关系模式对于上面的关系模式S-L-C(Sno,Sname,Ssex,Sdept,Sloc,Cno,Grade)25分解S-L-C表(续)v(2)将依赖于这些主键的属性放置到相应)将依赖于这些主键的属性放置到相应的表中,形成如下三张表:的表中,形成如下三张表:S-L(Sno,Sname,Ssex,Sdept,Sloc)C(Cno)S-C(Sno,Cno,Grade)v(3)去掉只由主键的子集构成的表,也就)去掉只由主键的子集构成的表,也就是去掉是去掉C(Cno)表。)表。S-L-C关系模式最终关系模式最终被分解的形式为:被分解的形式为:S-L(Sno,Sname,Ssex,Sdept,Sloc)S-C(Sno,Cno,Grade)26分解后的函数依赖关系v分解后的关系模式的函数依赖关系:分解后的关系模式的函数依赖关系:vS-L:SnoSdept,Sno Sname SnoSsex,SnoSLOC 是2NFvS-C:(Sno,Cno)Grade:是2NFfffff27S-L关系模式存在问题SnoSnameSsexSdeptSloc0611101李勇男计算机系2公寓0611102刘晨男计算机系2公寓0621102吴宾女信息管理系1公寓0621103张海男信息管理系1公寓0631103张珊珊女通信工程系1公寓28第三范式第三范式(3NF):如果R(U,F)2NF,并且所有非主属性都不传递依赖于主键,则R(U,F)3NF。v对对S-L(Sno,Sname,Ssex,Sdept,SLOC)vSnoSdept,SdeptSloc v Sno传递SLOC,不是3NF29分解方法v(1)对于不是候选键的每个决定因子,)对于不是候选键的每个决定因子,从表中删去依赖于它的所有属性。从表中删去依赖于它的所有属性。v(2)新建一个表,新表中包含原表中所)新建一个表,新表中包含原表中所有依赖于该决定因子的属性。有依赖于该决定因子的属性。v(3)将决定因子作为新表的主键。)将决定因子作为新表的主键。30分解S-L关系模式vS-L分解后的关系模式如下:vS-D(Sno,Sname,Ssex,Sdept),主键为Sno。vS-L(Sdept,Sloc),主键为Sdept。S-L(Sno,Sname,Ssex,Sdept,SLOC)31小结v规范化的过程实际上是通过把范式程度低规范化的过程实际上是通过把范式程度低的关系模式分解为若干个范式程度高的关的关系模式分解为若干个范式程度高的关系模式来实现的。系模式来实现的。v分解的最终目的是使每个规范化的关系只分解的最终目的是使每个规范化的关系只描述一个主题。描述一个主题。v如果某个关系描述了两个或多个主题,则如果某个关系描述了两个或多个主题,则它就应该被分解为多个关系,使每个关系它就应该被分解为多个关系,使每个关系只描述一个主题。只描述一个主题。32小结(续)v规范化的方法是进行模式分解,且确保分规范化的方法是进行模式分解,且确保分解后产生的模式与原模式等价,解后产生的模式与原模式等价,v即模式分解不能破坏原来的语义,同时还即模式分解不能破坏原来的语义,同时还要保证不丢失原来的函数依赖关系。要保证不丢失原来的函数依赖关系。
展开阅读全文