资源描述:
《数据库原理10-第4章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、管理学院信息管理系肖洁数据库原理及应用第4章关系数据库规范化理论本章要点函数依赖范式及其类型关系模式分解关系模式规范化步骤一、问题的提出不合理的关系模式到底存在什么问题,下面举一个实例讨论一下。首先给出一个关系模式:学生S(学号,姓名,性别,年龄系名,系主任姓名,课程名,成绩)具体问题描述如下:(1)一个系有若干名学生,但一名学生只属于一个系;(2)一个系只有一名系主任(正职);(3)一名学生可以选修多门课程,每门课程有若干学生选修(4)每名学生学习一门课程有一个成绩。学号姓名性别年龄所在系系主任姓名
2、课程名成绩010125曲波男20计算机周勇数据库原理96010125曲波男20计算机周勇C语言92010125曲波男20计算机周勇程序设计90010138张新女19信息系王甸软件工程90010138张新女19信息系王甸数据库原理88000234关笑男21计算机周勇操作系统89000234关笑男21计算机周勇数据库原理85020308王乐女22自动化李冰自动化设计85020308王乐女22自动化李冰电路原理82学生关系在对数据库操作的时候,会出现以下问题:(1)冗余太大(2)更新异常(3)插入异常(4)
3、删除异常由于该关系模式存在如上毛病,因此它是一个"不好"的关系模式。一个"好"的关系模式应该不会产生插入异常和删除异常、冗余度应尽可能的小。该关系模式之所以会产生上述问题,是因为这个关系模式中的函数依赖存在某些不好的性质。如果把它改造一下,分成三个关系模式:S1(学号,姓名,年龄,性别,系名)学号为主键;S2(系名,系主任姓名)系名为主键;S3(学号,课程名,成绩)(学号,课程名)为主键。这样就不会产生上述问题。如何改造一个"不好"的关系模式,使之成为一个"好的",合理的关系模式,就是下面要讨论的问题
4、——关系规范化。数据依赖:通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。1、函数依赖假设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作:X→Y。二、函数依赖几点说明:(1)注意函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。(2)若X→Y,则称X为这个函数依赖的决定因素(Determinant
5、)。(3)若X→Y,并且Y→X,则记为X←→Y。(4)若Y不函数依赖于X,则记为X→Y。2、平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但Y不包含于X,则称X→Y是非平凡函数依赖。若Y包含于X,则称X→Y为平凡函数依赖。若不特别说明,讨论的都是非平凡的函数依赖。3、完全函数依赖与部分函数依赖(1)如果X→Y,并且对于X的任何一个真子集X’,都有fX’→Y,则称Y完全函数依赖于X,记作X→Y。(2)如果X→Y,但Y不完全函数依赖于X,则称Y部分函数p依赖于X,记作X
6、→Y。4、传递函数依赖在关系模式R(U)中,如果X→Y,Y→Z,且Y不包含于X,Z不包含于Y,Y→X,则称Z传递函数依赖于X。例如:在上面提出的学生关系:学生(学号,姓名,系名,系主任姓名,课程名,成绩)中存在以下函数依赖:学号→姓名学号→系名系名→系主任姓名(学号,课程名)→成绩传递学号→系主任姓名规范化:通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合,这一过程称为规范化(Normalization)。三、范式与规范化1、第一范式如果关系模式R的所有属性都是不可分的基本数据项
7、,则这个关系属于第一范式(1NF)。注:不满足第一范式的数据库模式,不能称为关系数据库。三、范式与规范化2、第二范式如果关系模式R属于第一范式,且每个非主属性都完全函数依赖于主关键字,则这个关系属于第二范式(2NF)。注:第二范式不允许部分函数依赖。例:关系模式学生(学号,姓名,系名,系主任姓名,课程名,成绩)存在以下部分函数依赖:p(学号,课程名)→姓名,系名,系主任姓名∈2NF模式分解:(1)把R的属性分开,以构成两个新的关系模式;(2)通过对R的元组进行投影而产生两个新的关系。模式分解后,学生关
8、系分解成S1和S2:S1(学号,姓名,系名,系主任姓名)∈2NF学号→姓名,系名,系主任姓名系名→系主任姓名S2(学号,课程名,成绩)∈2NF(学号,课程名)→成绩3、第三范式若关系模式R属于第一范式,且每个非主属性都不传递依赖于主关键字,则R属于第三范式(3NF)。注:属于第三范式的关系模式,必然属于第二范式,因为可以证明部分函数依赖中含有传递依赖。举例:S1(学号,姓名,系名,系主任姓名)∈3NF模式分解后,学生关系分解成S11和S12:S11(学号