[计算机]规范化理论

上传人:油条 文档编号:49560469 上传时间:2018-07-30 格式:PPT 页数:43 大小:407KB
返回 下载 相关 举报
[计算机]规范化理论_第1页
第1页 / 共43页
[计算机]规范化理论_第2页
第2页 / 共43页
[计算机]规范化理论_第3页
第3页 / 共43页
[计算机]规范化理论_第4页
第4页 / 共43页
[计算机]规范化理论_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《[计算机]规范化理论》由会员分享,可在线阅读,更多相关《[计算机]规范化理论(43页珍藏版)》请在金锄头文库上搜索。

1、规范化理论本节主要教学内容:“不好的”关系模式可能引发的问题关系的形式化定义数据依赖的基本概念范式的概念及各级别范式存在的问题问题的提出关系数据库逻辑设计q 针对具体问题,如何构造一个适合于它的数据模式q 数据库逻辑设计的工具关系数据库的规范化理论基本概念回顾1. 关系:描述实体、属性、实体间的联系。v 从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。2.关系模式:用来定义关系。 3. 关系数据库:基于关系模型的数据库,利用关系来描述现实世界。v 从形式上看,它由一组关系组成。4. 关系数据库的模式:定义这组关系的关系模式的全体。注:现实世界许多已有事实限定了关系模式所有可能的关

2、系 必须满足一定的完整性约束条件。(1)属性的取值范围的限定;(2)属性值间的相互关联;数据依赖关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:R(U, D, DOM, F)q R:关系名q U:组成该关系的属性名集合q D:属性组U中属性所来自的域q DOM:属性向域的映象集合q F: 属性间数据的依赖关系集合注:由于D、DOM对模式设计的关系不大,因此在本节中 把关系模式定义为一个三元组:R(U,F)关系模式的简化 表示数据依赖1. 完整性约束的表现形式q 限定属性取值范围:例如学生成绩必须在0-100之间q 定义属性值间的相互关连(主要体现于值的相等与否), 这就是数据依赖,

3、它是数据库模式设计的关键2. 数据依赖q 是通过一个关系中属性间值的相等与否体现出来的数据间 的相互关系q 是现实世界属性间相互联系的抽象q 是数据内在的性质q 是语义的体现举例:一个学生关系: Student(Sno,Sname,Sdept)一个学号对应一个学生,一个学生只在一个系学习。因 此学号(Sno)确定后,该学生姓名(Sname)和所在的系(Sdept) 就唯一被确定,称学号函数决定姓名和所在系。记为: Sno Sname, Sno Sdept 3. 数据依赖的类型q 函数依赖(Functional Dependency,简记为FD)q 多值依赖(Multivalued Depend

4、ency,简记为MVD)q 其他数据依赖对关系模式的影响例:描述学校的数据库:学生的学号(Sno)、所在系( Sdept)、系主任姓名(Mname)、课程名(Cname) 、成绩(Grade)单一的关系模式 : Student U Sno, Sdept, Mname, Cname, Grade 由现实世界的已知事实得知,学校数据库的语义:1. 一个系有若干学生, 一个学生只属于一个系;2. 一个系只有一名主任;3. 一个学生可以选修多门课程, 每门课程有若干学生选修;4. 每个学生所学的每门课程都有一个成绩。得到属性组U上的一组函数依赖F:F Sno Sdept, Sdept Mname, (

5、Sno, Cname) Grade 如下图所示:SnoCnameSdeptMnameGrade上述学校的数据库模式有以下几个问题: 数据冗余太大 浪费大量的存储空间例:每一个系主任的姓名重复出现 更新异常 数据冗余 ,更新数据时,维护数据完整性代价大。例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组 插入异常 该插的数据插不进去例:如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。 删除异常 不该删除的数据不得不删例:如果某个系的学生全部毕业了, 我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。结论: Student关系模式不是一个好的模式。

6、 “好”的模式:不会发生插入异常、删除异常、更新异常 ,数据冗余应尽可能少。 原因:由存在于模式中的某些数据依赖引起的。解决方法:通过分解关系模式来消除其中不合适的数据依赖。单一的关系模式 : Student U Sno, Sdept, Mname, Cname, Grade 分解S(SNO,SDEPT,SNO SDEPT)SG(SNO,CNAME,G,(SNO,CNAME) G)DEPT(SDEPT,MN,SDEPT MN)规范化 规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。定义 设R(U)是一个属性集U上的关

7、系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作XY。 X称为这个函数依赖的决定属性集, Y=f(x) 。函数依赖说明:1. 函数依赖不是指关系模式R的某个或某些关系实例满足的 约束条件,而是指R的所有关系实例均要满足的约束条件。2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定 函数依赖。例如“姓名年龄”这个函数依赖只有在不允许有同名人的条 件下成立。3. 数据库设计者可以对现实世界作强制的规定。例如规定不 允许同名人出现,函数依赖“姓名年龄”成立。所

8、插入的元组必 须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元 组。常用术语和记号:例:在关系SC(Sno, Cno, Grade)中,非平凡函数依赖: (Sno, Cno) Grade平凡函数依赖:(Sno, Cno) Sno , (Sno, Cno) Cnoq 在关系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡的函数依赖(*)若XY,但Y X, 则称XY是平凡的函数依赖q 若X Y,则X叫做决定因素q 若X Y,Y X,则记作X Yq 若Y不函数依赖于X,则记作X Y例: Student(Sno, Sname, Ssex, Sage, Sdept)假设

9、不允许重名,则有:Sno Ssex, Sno Sage , Sno Sdept, Sno Sname, Sname Ssex, Sname SageSname Sdept但Ssex Sage定义4.2 在关系模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有X Y, 则称Y完全函数依赖于X,记作X Y。 若XY,但Y不完全函数依赖于 X,则称Y部分函数依赖于X,记作X P Y。例: 在关系SC(Sno, Cno, Grade)中,由于:Sno Grade,Cno Grade, 因此:(Sno, Cno) Grade定义 在关系模式R(U)中,如果XY,YZ,且Y X, XZ,则称Z传

10、递函数依赖于X。注意: 如果YX, 即XY,则Z直接依赖于X。例: 在关系Std(Sno, Sdept, Mname)中,有: Sno Sdept,Sdept MnameMname传递函数依赖于Sno码定义 设K为关系模式R中的属性或属性组合。若K U,则K称为R的一个候选码(Candidate Key)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。q 包含在任何一个候选码中的属性,称为主属性。 q 不包含在任何一个候选码中的属性,称为非主属性。 q 整个属性组是码,称为全码。定义 关系模式R 中属性或属性组X 并非R 的主码,但X 是另一个关系模式的主码,则

11、称X 是R 的外部码(Foreign key)也称外码。例:在SC(SNO,CNO,G)中,SNO不是主码,但SNO 是关系模式S(SNO,SDEPT,SAGE)的主码,则SNO是 关系模式SC的外部码。主码又和外部码一起提供了表示关系间联系的手段。范式q 范式是符合某一种级别的关系模式的集合。 q 关系数据库中的关系必须满足一定的要求。满足不同程 度要求的为不同范式。 q 范式的种类:第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)各种范式之间存在联系:一个低一级的范式, 通过模式分解可以转换为 若干个高一级范式的关系

12、模式的集合,这种过程就 称为规范化。第一范式(1NF)定义:如果一个关系模式R的所有属性都是不可分的基本数 据项,则R1NF。说明: q第一范式是对关系模式的最起码的要求。不满足第一范 式的数据库模式不能称为关系数据库。 q 但是满足第一范式的关系模式并不一定是一个好的关系 模式。第二范式(2NF)定义 若关系模式R1NF,并且每一个非主属性都完全函数 依赖于R的码,则R2NF。例: 关系模式 SLC(Sno, Sdept, Sloc, Cno, Grade)Sloc为学生住处,假设每个系的学生住在同一个地方。函数依赖包括:(Sno, Cno) f GradeSno Sdept(Sno, Cn

13、o) P SdeptSno Sloc(Sno, Cno) P SlocSdept SlocSnoCnoGradeSdeptSlocSLC说明:q SLC的码为(Sno, Cno)q SLC满足第一范式。q 非主属性Sdept和Sloc部分函数依赖于码(Sno, Cno) SLC 2NFSLC 2NF,会产生以下几个问题:(1) 插入异常假设Sno95102,SdeptIS,SlocN,但学生还未 选课,因课程号是主属性,因此该学生的信息无法插入SLC。 (2) 删除异常假定某个学生本来只选修了3号课程这一门课。现在他连3号 课程也不选修了。因课程号是主属性,此操作将导致该学生信息 的整个元组都

14、要删除。(3) 数据冗余度大如果一个学生选修了10门课程,那么他的Sdept和Sloc值就 要重复存储了10次。(4) 修改复杂例如学生转系,在修改此学生元组的Sdept值的同时,还可能 需要修改住处(Sloc)。如果这个学生选修了K门课,则必须无遗 漏地修改K个元组中全部Sdept、Sloc信息。q 原因Sdept、 Sloc部分函数依赖于码。q 解决方法SLC分解为两个关系模式,以消除这些部分函数依赖 SC(Sno, Cno, Grade)SL(Sno, Sdept, Sloc)分解后的函数依赖图:SnoCnoGradeSCSLSnoSdeptSloc说明: q采用投影分解法将一个1NF的

15、关系分解为多个2NF的关系 ,可以在一定程度上减轻原1NF关系中存在的插入异常、 删除异常、数据冗余度大、修改复杂等问题。 q 将一个1NF关系分解为多个2NF的关系,并不能完全消 除关系模式中的各种异常情况和数据冗余。第三范式(3NF)定义 关系模式R 中若不存在这样的码X、属性组Y 及非主属性Z(Z Y), 使得XY,YZ,成立,则称R 3NF。说明:q 若R3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。q 如果R3NF,则R也是2NF。q 采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。q 将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。例:2NF关系模式SL(Sno, Sdept, Sloc)中函数依赖:SnoSdept SdeptSloc SnoSloc函数依赖图 :SLSnoSdeptSlocSloc传递函数依赖于Sno,即SL中存在非主属性对码的传递 函数依赖。 SL 3NF解决方法采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:SD(Sno,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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