数据库课件第4章关系数据库(RDB)规范化设计理论

上传人:我*** 文档编号:141795915 上传时间:2020-08-12 格式:PPT 页数:45 大小:613KB
返回 下载 相关 举报
数据库课件第4章关系数据库(RDB)规范化设计理论_第1页
第1页 / 共45页
数据库课件第4章关系数据库(RDB)规范化设计理论_第2页
第2页 / 共45页
数据库课件第4章关系数据库(RDB)规范化设计理论_第3页
第3页 / 共45页
数据库课件第4章关系数据库(RDB)规范化设计理论_第4页
第4页 / 共45页
数据库课件第4章关系数据库(RDB)规范化设计理论_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《数据库课件第4章关系数据库(RDB)规范化设计理论》由会员分享,可在线阅读,更多相关《数据库课件第4章关系数据库(RDB)规范化设计理论(45页珍藏版)》请在金锄头文库上搜索。

1、第4章 关系数据库(RDB)规范化理论,4.1 关系模式规范化的必要性 4.2 数值依赖 4.3 范式与规范化 、关系分解原则, ,RDB规范化理论的目的是要设计“好的”RDB模式。要设计好的关系模式,必须是关系满足一定的约束条件,此约束形成了规范。 范式(Normal Form):衡量DB规范的层次或深度,DB规范化层次由范式来决定。简记作NF. 根据关系模式满足的不同性质和规范化的程度,将关系模式分为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF),范式越高规范化程度越高。 规范化:低级关系模式通过模式分解转换为若干高级范式的关系

2、模式集合的过程。 规范化是在RDB中减少数据冗余的过程。,4.1 关系模式规范化的必要性,1. 关系模式应满足的条件 2. 关系规范化可能出现的问题 3. 模式分解是关系规范化的主要方法,1.关系模式应满足的条件,RDB是根据关系模式设计的。好的关系模式除了能满足用户对信息存储和查询的基本要求外,还应使它的DB满足以下的要求。 元组每个分量必是不可再分的数据项 RDB特别强调,关系中的属性不能是组合属性,必须是基本项。否则,会使关系结构变为多层次的混合结构,增加关系操作的表达、优化即执行的复杂度。如: 教师( 姓名,工资,所授课程名,课程号);, ,职务工资 津贴 课时补贴, DB中的数据冗余

3、应尽量少 “数据冗余”会使: DB中的数据量巨增,系统负担过重,并浪费大量存储空间; 造成数据的不完整,增加数据维护的代价。 造成数据查询和统计困难,导致错误结果。, RDB不能因为数据更新操作而引起数据不一致性即更新异常 对于“数据冗余大”的RDB,当执行数据修改时,系统要付出很大代价来维护数据库的完整性。否则会面临数据不一致的危险。影响了数据的完整性,使得DB中数据的可信度降低。如:某教师从78号宿舍搬到76号,修改量较大.,当执行数据插入时,DB中的数据不能产生插入异常现象 所谓“插入异常”是指希望插入的信息由于不能满足数据完整性的某种要求而不能正常地被插入到DB中的异常问题。 比如:上

4、例中插入一个尚未安排授课的新进教师信息. 原因: 因多种信息混合放在一个表中,可能造成因一种信息被捆绑在其他信息上而产生的信息之间相互依附存储的问题,使得信息不能独立插入。, DB中数据不能在执行删除操作时产生“删除异常”问题 “删除异常”是指在删除某种信息的同时把其它信息也删除了。 比如: 上例取消T3教师的教学任务,要删除其授课元组,则在删除其授课信息的同时将其地址和姓名信息一并删除掉了. “删除异常”是DB结构不合理产生的问题。若关系中多种信息捆绑在一起,当被删除信息中含有关系的主关键字时,因关系要满足实体完整性,整个元组将全部从DB中被删除,即出现“删除异常”。,为解决这几个问题可将关

5、系模式 教师 分解为两个模式R,S。这样数据冗余度变小,不存在插入、更新和删除异常情况了。,关系R,关系S,关系 教师, DB设计应考虑查询要求,数据组织应合理 在DB设计时,不仅要考虑到数据自身的结构完整性,还要考虑到数据的使用要求。 为使数据查询和数据处理高效简洁,特别是对查询实时性要求高、操作频度大的数据,有必要通过视图、索引和适量增加数据冗余的方法,增加DB的方便性和可用性。,2. 关系规范化可能出现的问题,如果一个关系没有经过规范化,可能会出现数据冗余大、数据更新造成不一致、数据插入异常和删除异常。 例6:学生关系存在的问题:数据冗余(系主任名)、更新异常(换系主任)、插入异常(系没

6、有招生系主任名不能插入)、删除异常(学生毕业)。,3. 模式分解是关系规范化的主要方法,对于有问题的关系模式,可通过模式分解的方法使之规范化。 原学生关系(学号,姓名,所在系,系主任姓名,课程名,成绩)可分解为以下三个关系: 学生(学号,姓名,所在系) 系(所在系,系主任姓名) 考试(学号,课程名,成绩) 新关系克服了学生关系存在的问题,更加合理和实用。,4.2 数据依赖,1. 函数依赖 2. 平凡函数依赖与非平凡函数依赖 3. 完全函数依赖与部分函数依赖 4. 传递函数依赖, ,在DB中,数据属性之间存在着密切的联系。在DB技术中,把数据之间存在的联系称为“数据依赖”。 DB中出现的数据异常

7、现象与数据依赖有着紧密的关联。在数据依赖中,函数依赖是最基本的一种依赖形式。 认识和掌握函数依赖知识,对于DB的约束设计和规范化设计具有重要意义。,1. 函数依赖,假设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。 例如:学生(学号,姓名,所在系,课程名,成绩)关系模式中,学号姓名 学号所在系 (学号,课程名)成绩, ,注意:X和Y都是属性组,如果XY,表示X中取值确定时,Y中的取值惟一确定,即X决定Y或Y函数依赖于X,X是

8、决定因素。 函数依赖类似于数学中的单值函数,函数的自变量确定时,应变量的值惟一确定。反映了关系模式中属性间的决定关系,体现了数据间的相互关系。,例7:学生(学号,姓名,性别,年龄,班级号) 存在以下的函数依赖: 学号姓名 学号性别 学号年龄 学号班级号,说明: 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 函数依赖是RDB用以表示数据语义的机制。人们只能根据数据的语义来确定函数依赖。 例:“姓名年龄”这个函数依赖只有在没有相同姓名人的条件下成立。若有相同姓名的人,则“年龄”就不再函数依赖于“姓名”了。,2. 平凡函数依赖与非平凡函数依赖

9、,在关系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡函数依赖。若Y X,则称XY为平凡函数依赖。 例如:学号姓名 (学号,姓名)姓名 对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。,3. 完全函数依赖与部分函数依赖,完全函数依赖: 在关系模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y完全函数依赖于X,记作X Y。 部分函数依赖: 若XY,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X Y。, ,例8: 学生(学号,姓名,所在系,系主任姓名,课程号,成绩) 学生关系模式

10、存在的部分函数依赖: (学号,课程号) 姓名 (学号,课程号) 所在系 (学号,课程号) 系主任姓名 思考: 此关系模式中是否存在完全函数依赖?,4. 传递函数依赖,在关系模式R(U)中,如果XY,YZ,且Y X,Z Y,Y X,则称Z传递函数依赖于X。 例9:学生(学号,姓名,所在系,系主任姓名,课程名,成绩),存在如下的函数依赖: 学号所在系 所在系系主任姓名 学号系主任姓名,传递,4.3 范式与规范化,1. 第一范式(1NF) 2. 第二范式(2NF) 3. 第三范式(3NF) 4. BC范式,1. 第一范式(1NF),若一个关系模式R的所有属性都是不可分的基本数据项,则该关系属于1NF

11、 。 在任何一个RDBS中,1NF是对关系模式的一个必须的要求,不满足1NF的DB模式不能称为RDB。 满足1NF的关系模式并不一定是好的关系模式。,例如:学生(学号,姓名,所在系,系主任姓名,课程名,成绩) 它显然满足1NF,但本身存在插入异常、删除异常、更新异常和数据冗余问题,所以它不是一个好的关系模式。 例如:教师(教师号,姓名,性别,年龄,家庭地址(城市、街道、门牌号)则非1NF,可将它改为 教师(教师号,姓名,性别,年龄, 城市,街道,门牌号) 则为1NF 了,2. 第二范式(2NF),若关系模式R属于1NF,且每个非主属性都完全函数依赖于主关键字,则R属于2NF 。 2NF不允许关

12、系模式中的非主属性部分函数依赖于主关键字。, ,例10:学生(学号,姓名,所在系,系主任姓名,课程名,成绩) 学生关系模式存在部分依赖: (学号,课程名)姓名 (学号,课程名)所在系 (学号,课程名)系主任姓名 不满足“每个非主属性都完全函数依赖于主关键字”的条件。故不属于2NF。 对学生关系模式进行分解,使其满足2NF的条件,即要消除非主属性对主关键字的部分依赖。,关系分解 把R的属性分开,以构成两个新的关系模式; 通过对R的元组进行投影而产生两个新的关系。 学生关系模式分解成: 学生-系(学号,姓名,所在系,系主任姓名) 考试(学号,课程名,成绩) 学生-系、考试属于2NF。,学生关系模式

13、:学生-系(学号,姓名,所在系,系主任姓名) 存在: 学号所在系 所在系系主任姓名 学号系主任姓名 仍有数据冗余(从学生-系关系模式的实例可以看出,当一个系有很多学生时,“系主任姓名”会大量重复出现)和更新异常。所以应进一步对其进行规范化。,传递,习题9: 关系模式R(ABCD),F是R上成立的函数依赖集,F=AB-CD,A-D (1) 试说明R不是2NF的理由 (2) 试把R分解成2NF模式集. R1(ABC) R2(AD),3. 第三范式(3NF),若关系模式R属于1NF,且每个非主属性都不传递依赖于主关键字,则R属于3NF。 将学生-系(学号,姓名,所在系,系主任姓名) 关系模式分解为:

14、 学生(学号,姓名,所在系) 系(所在系,系主任姓名) 关系模式学生与系均已满足3NF。, ,3NF是一个可用的关系模式应满足的最低范式。 一个关系模式如果不满足3NF,实际上是不能使用的。 把关系模式分解到3NF,可在相当程度上减轻原关系中的异常和信息冗余,但也不能保证完全消除关系模式中的各种异常和信息冗余。 要想使DB性能得到进一步的改善,就要把关系模式进一步规范化。,习题10: 设关系模式R(ABC),F是R上成立的函数依赖集,F=C-B,B-A (1) 试说明R不是3NF的理由 (2) 试把R分解成3NF. R1(CB) R2(BA),4. BC范式,若关系模式R属于第一范式,且每个非

15、平凡依赖的左边必须包含主关键字;或称每个决定因素必须包含主关键字。则称R属于BC范式。 分析如下关系是否属于BC 范式: 学生(学号,姓名,所在系); 系(所在系,系主任姓名) 成绩(学号,课程名,成绩);,思考习题:,设有关系模式:R(职工名,项目名,工资,部门号,部门经理) 如果规定每个职工可参加多个项目,每个项目领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。要求: (1)试写出关系模式R的基本函数依赖和主关键字; (2)说明R不是2NF模式的理由,并把R分解成2NF模式集; (3)进而把R分解成3NF模式集,并说明理由。,(1) (职工名,项目名) 工资 项目名 部门名

16、部门名 部门经理 (2) R1(职工名,项目名,工资) R2(项目名,部门名,部门经理) (3) R11(职工名,项目名,工资) R21(项目名,部门名) R31(部门名,部门经理),4.4 关系分解原则,1. 无损连接 2. 保持依赖, ,对关系模式进行分解的目的: 使关系模式更加规范化,从而减少以至消除数据冗余和更新异常。 要使关系模式的分解有意义,模式分解需要满足一些约束条件是分解不能破坏原来的语义,即模式分解要符合无损连接和保持函数依赖的原则。,1. 无损连接,如果对新的关系进行自然连接得到的元组的集合与原关系完全一致,则称为无损连接。 无损连接保证分解前后关系模式的信息不能丢失和增加,保持原有的信息不变。 反映了模式分解的数据等价原则。, ,例11:工人(工号,工种,定额) 工人关系中存在的函数依赖如下: 工号工种 工种定额 工号定额

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号