数据库系统概论第六章(1).ppt

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库原理与应用数据库系统概论第四版王珊萨师煊第6章关系数据理论数据库设计的一个最基本的问题是怎样建立一个好的数据库模式。Codd提出了一套关系数据库设计理论—关系的规范化理论,根据现实世界存在的数据依赖进行关系模式的规范化处理,从而得到一个好的数据库设计。6.1问题的提出1、问题的提出关系的描述:R(U,D,DOM,F)关系是一个五元组。R为关系名,U为属性集合,D为属性组U中属性所来自的域,DOM为属性到域的映射集合,F为属性间数据的依赖关系集合。6.1问题的提出(续)2、数据依赖属性间数据的依赖关系集合F是描述关系的元组语义,限定关系内部属性与属性间必须满足的约束条件。数据依赖是通过一个关系中属性间值的依赖与否体现出来的数据间的相互关系。最重要的数据依赖是函数依赖(FD)和多值依赖(MVD)6.1问题的提出(续)实例:建立一个数据库,涉及的对象包括:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mn)、课程名(Cname)、成绩(Grade)。要求如下:(1)一个系有若干学生,但一个学生只属于一个系;(2)一个系只有一个系主任;(3)一个学生可以选多门课程,每门课程有若干学生选修;(4)每个学生学习每一门课程有个成绩。建立关系模式:Student(SNO,SDEPT,MN,CNAME,GRADE)SNOCNAMESDEPTMNGrade这个关系模式存在4个问题:(1)数据冗余:一个学生选修多门课程,所在系和系主任就重复存储多次。(2)更新异常:当更新某些数据时,容易造成存储数据的不一致性。如换系主任了,则必须修改与该系学生有关的每一个元组。(3)插入异常:若某个学生未学习课程,则他的信息就无法插入。(4)删除异常:当要删除学生所有成绩时,将所有关于该学生的信息都删除了。F={SNOSDEPT,SDEPTMN,(SNO,CNAME)G}SNOCNAMESDEPTMNGrade原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖F={SNOSDEPT,SDEPTMN,(SNO,CNAME)G}S(SNO,SDEPT)SG(SNO,CNAME,Grade)DEPT(SDEPT,MN)6.2规范化规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。1、函数依赖定义设R(U)是属性集U上的关系模式,X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作XY。几点说明:(1)函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。(2)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。我们只能根据数据的语义来确定函数依赖。(3)数据库设计者可以对其做出强制的规定。6.2规范化(续)1、函数依赖基本术语和符号若XY,但YX,则称XY是非平凡的函数依赖,反之称为平凡的函数依赖。若XY,则X叫做决定因素若XY,YX,则记作XY若Y不函数依赖于X,则记作XY6.2规范化(续)1、函数依赖三种函数依赖•完全函数依赖:在R(U)中,如果XY,并且对于X的任何一个真子集X’,都有X’Y,则称Y对X完全函数依赖,记作:XFY6.2规范化(续)如关系SC(SNO,CNO,GRADE),(SNO,CNO)GRADESPJ(SNO,PNO,JNO,QTY),(SNO,PNO,JNO)QTYFF1、函数依赖三种函数依赖•部分函数依赖:若XY,但Y不完全依赖于X,则称Y对X部分函数依赖,记作:XPY6.2规范化(续)如:SC(SNO,CNO,SNAME,GRADE)(SNO,CNO)SNAMESNOSNAMEP1、函数依赖三种函数依赖•传递函数依赖:在R(U)中,如果XY(YX),YX,YZ,则称Z对X传递函数依赖。记作:XZ6.2规范化(续)传递如:S(SNO,SDEPT,MNAME)SNOSDEPT,SDEPTMNAMESNOMNAME传递候选关键字:学号FD{学号姓名,学号出生日期,学号班号,班号系名,系名宿舍区}传递函数依赖:学号班号系名,学号系名班号系名宿舍区,班号宿舍区学号系名宿舍区,学号宿舍区传递传递传递分析关系模式:STUDENT(学号,姓名,出生日期,系名,班号,宿舍区),学生属于某个班级,班级属于某个系,其中一个系的学生分在一个宿舍区,指出其候选关键字,函数依赖关系和存在的传递函数依赖。6.2规范化(续)2、码定义:设K为R(U,F)中的属性或属性组合,若KU,则K为R的候选码。若候选码多于一个,则选定其中的一个为主码。主属性:包含在任何一个候选码中的属性(Primeattribute)。非主属性:不包含在任何码中的属性称为非主属性或非码属性。定义:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码。F关系模式S(Sno,Sdept,Sage),单个属性Sno是码,SC(Sno,Cno,Grade)中,(Sno,Cno)是码关系模式R(P,W,A),其中:P为演奏者,W为作品,A为听众。(1)一个演奏者可以演奏多个作品(2)某一作品可被多个演奏者演奏(3)听众可以欣赏不同演奏者的不同作品码为(P,W,A),即全码(All-Key)举例:6.2规范化(续)3、范式(NF)关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式,目前主要有六种范式:5NF4NFBCNF3NF2NF1NF一个低一级的范式,通过分解,可以转换为若干个高一级范式的关系模式的集合,这个过程就叫规范化。6.2规范化(续)3、范式(NF)第一范式如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF。•即当表中每一行的每一列只具有唯一值时,表被认为是符合第一范式(1NF)的。•1NF是对关系的最低要求,不满足1NF的关系是非规范化的关系。分解方法:非规范化关系转化为满足1NF的规范化关系方法很简单,只要将表分别从横向、纵向展开即可。举例:规范化练习练习答案:6.2规范化(续)3、范式(NF)第二范式若R1NF,且每一个非主属性完全函数依赖于码,则R2NF。分解方法:•找出并抹去函数依赖于码的一部分而不是整个码的属性,将它们放到不同的表中。•组合剩余的属性。规范化过程:消除非主属性对码的部分函数依赖关系S(学号,系名,宿舍区,课程号,成绩)举例:码(学号,课程号)函数依赖集:(学号,课程号)成绩学号系名学号宿舍区(学号,课程号)P系名(学号,课程号)P宿舍区解决:SC(学号,课程号,成绩)S-L(学号,系名,宿舍区)将下面的R关系规范化到第二范式练习:答案:练习:6.2规范化(续)SC(学号,课程号,成绩)S-L(学号,系名,宿舍区)仍然存在问题:(1)插入异常,若某个系因种种原因,还未有学生,则无法将该系的信息存入数据库。(2)删除异常,如果某个系的学生全部毕业了,在删除该系学生的信息的同时,该系的信息也丢掉了。(3)数据冗余度大,每个系的学生都住在同一个地方,关于系的住处的信息却重复出现。(4)修改复杂,当调整学生住处时,需要更改大量学生的属性。出现上述问题的原因是因为在关系模式中仍然存在有传递函数依赖关系。6.2规范化(续)3、范式(NF)第三范式关系模式R(U,F)中若不存在这样的码X、属性组Y及非主属性Z(ZY),使得XY,YZ成立,则称R(U,F)3NF。分解方法:•发现和抹去函数依赖于不是主属性的非主属性。把它们放入不同的表格;•组合剩余的属性。3NF消除2NF的非主属性的传递函数依赖2NF关系模式S-L(学号,系名,宿舍区)中函数依赖:学号→系名,系名→学号学号→宿舍区学号→宿舍区,S-L中存在非主属性对码的传递函数依赖,则S-L∈3NF举例:传递对S-L(SNO,SDEPT,SLOC)分解SD(SNO,SDEPT)DL(SDEPT,SLOC)将下面的R关系规范化到第三范式练习:答案:练习:6.2规范化(续)但是满足3NF的关系模式也未必就是好的关系模式。如:关系模式STC(S,T,C)中,S表示学生,T表示教师,C表示课程。假设每个教师只教一门课,每门课由若干教师教,某一学生选定某门课,就对应一个固定的教师。函数依赖集:(S,T)C,(S,C)T,TC,SC(S,T)、(S,J)都是候选码。T,S只是主属性,既不是候选码,也不包含候选码,原因是TC,SC,即主属性C部分函数依赖于(S,T)。解决办法是将STC分解。因此,引入一个新的范式,BCNF范式,称为修正的或扩充的第三范式。6.2规范化(续)3、范式(NF)Boyce-Codd(BCNF)范式关系模式R(U,F)∈1NF,若X→Y且YX时X必包含码,则R(U,F)∈BCNF。即:关系中的每一个决定因素都包含码。一个满足BCNF的关系模式有:•所有非主属性对每个码都是完全函数依赖•所有的主属性对每一个不包含它的码,也是完全函数依赖•没有任何属性完全函数依赖于非码的任何一组属性6.2规范化(续)3、范式(NF)Boyce-Codd(BCNF)范式解决办法:•发现和抹去具有函数依赖关系主属性•把候选键的一部分和与它有函数依赖关系的属性放入另外的表中•组合剩余的项为一个表将关系STC分解为ST(S,T)TJ(T,C)配件管理表如下,其中一个仓库由若干名管理员管理,一个管理员只管理一个仓库,他们管理所在仓库的所有商品。练习:答案:函数依赖集包括:职工编号→仓库编号,(仓库编号,配件编号)→数量,(职工编号,配件编号)→数量(职工编号,配件编号)→仓库编号码为:(职工编号,配件编号)练习:答案:练习:6.2规范化(续)3、范式(NF)多值依赖设关系模式R(U),X,Y,Z是U的子集,并且Z=U-X-Y。若对于R(U)的任一关系r,给定的一对(X,Z)值,存在一组Y的值与之对应,并且这组值仅仅决定于X值而与Z值无关,称为Y多值依赖于X或者X多值决定Y,记作X→→Y。若X→→Y,若Z≠,则X→→Y是非平凡的多值依赖;若Z=,则是平凡的多值依赖。6.2规范化(续)3、范式(NF)多值依赖多值依赖与函数依赖的区别:(1)函数依赖中,x→y的有效性由x,y两个属性集决定;多值依赖x→→y不仅与x,y两个属性集有关,而要检查其余属性z。因此,多值依赖的有效性与属性集的范围有关。(2)若函数依赖x→y成立,则对于y的任一子集y’均有x→y’成立。而多值依赖却不能确定。6.2规范化(续)3、范式(NF)第四范式关系模式R(U,F)1NF,如果对于R的每个非平凡多值依赖X→→Y(YX),X都含有码,则称R(U,F)∈4NF。4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。关系模式仓库管理(仓库号,管理员,商品名)中,(仓库号,商品名)→→管理员,仓库号→→管理员对于仓库号→→管理员,决定因素仓库号不包含码,仓库管理4NF缺点:数据冗余度大举例:解决:分解为仓库管理1(仓库号,管理员)仓库管理2(仓库号,商品名)4、规范化小结规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的分离,即“单一化”的模式设计原则。让一个关系去描述一个概念、一个实体或实体间的一种联系。若多于一个概念就把它“分离”出去。分解的基本原则:无损分解6.2规范化(续)6.2规范化(续)规范化过程概括:指出下列关系模式是第几范式(1)R(X,Y,Z)FD={XYZ}(2)R(X,Y,Z)FD={YZ,XZY}(3)R(X,Y,Z)FD={YZ,YX,XYZ}(4)R(X,Y,Z)FD={XY,XZ}(5)R(W,X,Y,Z)FD={XZ,WXY}(6)R(A,B,

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功