资源预览内容
第1页 / 共137页
第2页 / 共137页
第3页 / 共137页
第4页 / 共137页
第5页 / 共137页
第6页 / 共137页
第7页 / 共137页
第8页 / 共137页
第9页 / 共137页
第10页 / 共137页
亲,该文档总共137页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库技术及应用 第4章 关系数据理论,机械工业出版社,1,绪论,关系数据库是由一系列关系组成的,因此关系数据库的设计归根结底是如何构造关系。要建立一个关系数据库,首先要设计关系模式,然后将若干关系模式构成关系数据库模式。然而,针对一个具体问题,应该如何构造一个适合它的数据库模式,即应该构造几个关系模式,每个关系模式由哪些属性组成,这些关系的完整性如何确定等。在构造的关系中,有时会出现数据冗余和更新异常等现象,这是由关系中各属性之间的相互依赖性和独立性造成的。这些就是关系数据库的设计问题,关系数据库的规范化理论,为我们设计出合理的数据库提供了有利的工具。,机械工业出版社,2,本章将从一个“不好”的数据库模式实例出发,阐明关系模式规范化理论研究的实际背景,然后介绍规范化理论的有关概念和方法,包括关系可能存在的插入、删除等异常问题和解决方法,函数依赖定义及其推理规则,各种范式及其相互关系,关系模式的分解特性等内容。,机械工业出版社,3,目录,机械工业出版社,4,4.1 规范化问题的提出,数据库的逻辑设计为什么要遵循一定的规范化理论?什么是好的关系模式?某些“不好”的关系模式会导致哪些问题?可以通过一个具体的例子加以分析。 例4.1 已知一个教学管理数据库,其中用于描述学生的关系模式如下: STUDY(SNO,SNAME,SDEPT,MNAME,CNAME,SCORE),机械工业出版社,5,4.1 规范化问题的提出,其中,SNO表示学生的学号,SNAME表示学生姓名,SDEPT表示学生所在的系名,MNAME表示系主任的姓名,CNAME表示课程名称,SCORE表示课程成绩。 由现实世界的已知事实可知: 一个学号只对应一个学生; 一个学生只属于一个系,一个系有若干学生; 一个系只有一名系主任; 一个学生可以选修多门课程,每门课程可以有若干学生选修; 每个学生所选的每门课程只有一个成绩。,机械工业出版社,6,4.1 规范化问题的提出,在此关系模式中填入一些具体的数据, 可得到STUDY关系模式的实例,如表4-1所示。 表4-1 关系STUDY,机械工业出版社,7,4.1 规范化问题的提出,上述关系虽然看起来简单明了,但在实际使用过程中却会出现数据冗余和操作异常问题。 (1) 数据冗余 数据冗余是指如果某个学生选修了多门课程,那么该学生姓名、所在的系名和系主任的姓名就要重复出现,它们重复出现的次数等于该系的学生人数乘以每个学生所选修的课程数,这将造成存储空间的浪费。,机械工业出版社,8,4.1 规范化问题的提出,由于关系模式STUDY存在上述三个异常问题,因此关系模式 STUDY是一个“不好”的关系模式。一个“好”的模式应当不会发 生插入异常和删除异常,且数据冗余应尽可能少。那么,关系模式 STUDY为什么会出现以上异常问题呢?产生上述问题的原因在于该 关系模式的结构中,属性之间存在过多的“数据依赖”。一个好的 关系模式应当可以通过分解来消除其中不合适的数据依赖。 (2) 更新异常 在关系STUDY中,如果某个学生改名,则该学生对应的所有记录都要修改属性SNAME的值,如有不慎漏改某些记录,就会造成数据的不一致,破坏数据的完整性。,机械工业出版社,9,4.1 规范化问题的提出,(3) 插入异常 假如一个刚刚成立的系,其行政机构已经建立但尚未招收学生,则因为属性SNO的取值为空,导致诸如系名和系主任姓名之类的信息无法存入数据库;同样,没被学生选修的课程信息也无法存入数据库;没有选课的学生信息也无法存入数据库。 (4) 删除异常 假如一个系的学生毕业了,要删除这些学生的记录,则系名和系主任的姓名也将被一起删除,而事实上这个系和系主任依然存在,但在数据库中却无法找到该系的信息。,机械工业出版社,10,4.1 规范化问题的提出,由于关系模式STUDY存在上述三个异常问题,因此关系模式STUDY是一个“不好”的关系模式。一个“好”的模式应当不会发生插入异常和删除异常,且数据冗余应尽可能少。 那么,关系模式STUDY为什么会出现以上异常问题呢?产生上述问题的原因在于该关系模式的结构中,属性之间存在过多的“数据依赖”。一个好的关系模式应当可以通过分解来消除其中不合适的数据依赖。,机械工业出版社,11,4.1 规范化问题的提出,例4.2 将关系模式STUDY分解为如下三个新的关系模式: STUDENT (SNO, SNAME, SDEPT) GRADE (SNO, CNAME, SCORE) DEPARTMENT (SDEPT, MNAME) 相应的关系实例如表4-2、表4-3、表4-4所示。 表4-2 关系STUDENT,机械工业出版社,12,4.1 规范化问题的提出,表4-3 关系GRADE,机械工业出版社,13,4.1 规范化问题的提出,表4-4 关系DEPARTMENT 分解之后,这三个关系模式都不会发生插入异常和删除异常的问题,数据冗余也得到了控制。模式分解是规范化设计的一条原则:如果关系模式有冗余问题就应该分解它。那么,如何来确定关系的分解是否益?分解后是否仍然存在数据冗余和更新异常等问题?什么样的关系模式才算是一个比较好的关系模式?这些都是后面几节将要介绍的关系模式的函数依赖、关系模式规范化等所涉及的内容。,机械工业出版社,14,4.2 函数依赖,我们知道,关系是元组的集合,关系模式是对这个集合中元组的数据组织方式的结构性描述。一个关系模式一般简记为R(U,F),其中,R为关系名,U为一组属性,且U=A1,A2,An,F为关系R在U上满足的一组函数依赖。有时,在所讨论的问题不涉及F时,关系模式简记为R(U)。本节将讨论关系模式的函数依赖、候选码、主码、函数依赖的推理规则等问题。,机械工业出版社,15,4.2 函数依赖,关系与关系模式是两个联系十分紧密但又有区别的概念。关系实质上是一张二维表,表的每一行为一个元组,因此,关系是元组的集合,它其实是笛卡尔积的一个子集。从一张二维表的角度来看,关系模式其实是把所有元组删去以后的一张空表,它是对元组的数据组织方式的结构性描述。当把若干元组填入关系模式后,所得到的二维表就是一个关系,且是一个具体的关系,即关系是关系模式的一个取值实例。,机械工业出版社,16,4.2 函数依赖,一般来说,关系模式是相对稳定的,比如关系模式STUDENT,而关系却是不断变化的,如表4-2所示的关系STUDENT,它仅仅是关系模式STUDENT的一个取值实例,称为具体关系。在表4-2中不管是增加一个元组或是减少一个元组,就得到一个新的关系虽然其关系名可以不变,但它已是关系模式STUDENT的另一个具体关系了。因此,每一个关系都对应一个关系模式,而一个关系模式可以对应多个关系即在数据库中,关系模式是相对稳定的、静态的而关系却是动态变化的、不稳定的,而关系的每一次变化结果,都是关系模式对应的一个新的具体关系。在以后的一般讨论中,一个关系模式R(U)对应的具体关系(取值实例)通常用小写字母r来表示。,机械工业出版社,17,4.2 函数依赖,4.2.1 函数依赖,定义 4.1 设R(U)是属性集U=A1,A2,An上的关系模式,X和Y是U的 子集。若对R(U)的任一具体关系r,如果r中的任意两个元组t1和t2,只要 t1X= t2X就有t1 Y= t2 Y,则称“X函数确定Y”或“Y函数依赖X” (Functional Dependency,简称FD),记作XY。,机械工业出版社,18,4.2 函数依赖,在以上定义中,tiX和tiY分别表示元组t在属性X和Y上的取值。“X函数确定Y”的含义是:对关系r中的任一个元组,如果它在属性集X上的值已经确定,则它在属性集Y上的值也随之确定。也就是说,对于r的任意两个元组t1和t2,只要有t1X= t2X,就不会出现t1Y t2Y的情况。因此,定义4.1说明, 在关系模式R(U)的任一个具体关系r中,不可能存在这样的两个元组,它们在X上的属性值相等,而在Y上的属性值不等。,机械工业出版社,19,4.2 函数依赖,对于函数依赖,需要注意以下几点: (1) 函数依赖不是指关系模式R(U)的某个或某些具体关系满足的约束条件,而是指R(U)的一切具体关系r都要满足的约束条件。 (2) 函数依赖和其他数据依赖一样,是一个语义范畴的概念。只能根据属性的语义来确定一个函数依赖。例如上述关系模式STUDY,当学生不存在重名的情况下,可以得SNAMESDEPT,这个函数依赖只有在没有同名学生的条件下才成立。如果允许有重名的学生,则系名就不再函数依赖于姓名了。,机械工业出版社,20,4.2 函数依赖,数据库设计者应在定义数据库模式时,指明属性之间的函数依赖,使数据库管理系统根据设计者的意图来维护数据库的完整性。因此,设计者可以对现实世界中的一些数据依赖做强制性规定,例如,为了使SNAMESDEPT这个函数依赖成立,用户可以强制规定关系中不允许同名同姓的人出现。这样当输入某个元组在SNAME上的值与关系中已有元组在SNAME上的值相同,则数据库管理系统就拒绝接受该元组。,机械工业出版社,21,4.2 函数依赖,(3) 函数依赖存在的时间无关性。由于函数依赖是指关系中的所有元组应该满足的约束条件,而不是指关系中某个或某些元组所满足的约束条件。关系中元组的增加、删除或更新都不能破坏这种函数依赖。因此,必须根据语义来确定属性之间的函数依赖,而不能单凭某一时刻关系中的实际数值来判断。例如,对于上述关系模式STUDY,根据语义只能存在函数依赖SNOSNAME,而不应该存在SNAMESNO,因为如果新增加一个重名的学生,函数依赖SNAMESNO必然不存在。,机械工业出版社,22,4.2 函数依赖,若XY,则称X为这个函数依赖的决定(Determinant)因素,简称X是决定因素。 若XY,并且YX,则记作XY。 (6) 若Y不函数依赖于X,则记作XY。,机械工业出版社,23,4.2 函数依赖,定义 4.2 设R(U)是属性集U=A1,A2,An上的关系模式,X和Y是U的子集。若XY,但YX,则称XY是平凡函数依赖。否则称XY是非平凡函数依赖。 对于任一关系模式,平凡函数依赖都是必然成立的,但它不反映新的语义。因此,在下面的讨论中,若没有特别声明,“XY”都表示非平凡的函数依赖。,机械工业出版社,24,4.1 规范化问题的提出,例4.3 在例4.1的关系STUDY中存在函数依赖: SNOSNAME SDEPTMNAME 因为任意两行中只要学号SNO相同,学生姓名 SNAME必然相同,同理任意两行中只要系名SDEPT相 同,系主任姓名MNAME也必然相同。,机械工业出版社,25,4.2 函数依赖,SNO和SDEPT是决定因素,SNAME和MNAME是被决定 因素。 反过来,在关系STUDY中并不存在以下函数依 赖: SNAMESNO MNAMESDEPT 因为有可能出现两位学生姓名相同或两个系主任 姓名相同的情况。,机械工业出版社,26,4.2 函数依赖,除了前面两个函数依赖之外,在关系STUDY中还有许多其 它的函数依赖,如: (SNO,SDEPT)(SNAME) (SNO,SDEPT)(MNAME) (SNO,SDEPT)(SNO) (SNO,SDEPT)(SDEPT) (SNO,SDEPT)(SNO,SNAME) (SNO,SDEPT)(SDEPT,MNAME) (SNO,SDEPT)(SNO,SNAME,SDEPT, MNAME) 上面的函数依赖中(SNO,SDEPT)(SNO)、 (SNO,SDEPT)(SDEPT)就是平凡函数依赖。,机械工业出版社,27,4.2 函数依赖,4.2.2 函数依赖的基本性质,(1)投影性 由平凡函数依赖的定义可知,一组属性函数决定它的所有子集。例如,在关系STUDY中,(SNO,CNAME)SNO和(SNO,CNAME)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号