【文档说明】数据结构与数据库课件.ppt,共(55)页,250.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92406.html
以下为本文档部分文字说明:
.之《数据库系统原理》数据结构与数据库.关系数据库逻辑设计问题针对具体问题,如何构造一个适合于它的数据模式?数据库逻辑设计的工具──关系数据库的规范化理论?.第4章关系数据库设计理论4.1数据依赖4.2范式4.3关系模式的规范化.关系:关系模式
:关系数据库:关系数据库的模式:描述实体、属性、实体间的联系。从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。用来定义关系。基于关系模型的数据库,利用关系来描述现实世界。定义这组关系的关系模式的全体。从形式上看,它由一组关系组成。4.1数据依赖.关
系模式的形式化定义关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向域的映象集合F:属性间数据的依赖关系集合.什么是数据依赖1.完整性约束的
表现形式限定属性取值范围:例如学生成绩必须在0-100之间定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键.2.数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系是现实世界属性间相互联系的抽象是数据内在的性质是
语义的体现.3.数据依赖的类型函数依赖(FunctionalDependency,简记为FD)多值依赖(MultivaluedDependency,简记为MVD)其他.●关系模式R(U,D,DOM,F)简化为一个三元组:R(U,F)●当且仅当U上的一个关系r满足F时,r称为
关系模式R(U,F)的一个关系.数据依赖对关系模式的影响例:描述学校的数据库:学生的学号(Sno)、所在系(Sdept)系主任姓名(Mname)、课程名(Cname)成绩(Grade)单一的关系模式:Student<U、F>U={Sno,
Sdept,Mname,Cname,Grade}.学校数据库的语义:⒈一个系有若干学生,一个学生只属于一个系;⒉一个系只有一名主任;⒊一个学生可以选修多门课程,每门课程有若干学生选修;⒋每个学生所学的每门课程都有一个成绩。.属
性组U上的一组函数依赖F:F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}SnoCnameSdeptMnameGrade.•存在的问题⒈数据冗余太大⒉更新异常(UpdateAnomalies)数据冗余,更新数据时,维护数据完整性代价大。–浪费大
量的存储空间例:每一个系主任的姓名重复出现例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组.⒊插入异常(InsertionAnomalies)无法插入新的数据⒋删除异常(DeletionAnomali
es)不该删除的数据不得不删例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。.结论:•Stude
nt关系模式不是一个“好”的模式。•“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:解决方法:模式中存在某些数据依赖通过分解关系模式来消除其中不合适的数据依赖。.规范化理论正是用来改造关系模式,通过分解关系模式来消除其
中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。.几个概念函数依赖平凡函数依赖与非平凡函数依赖完全函数依赖与部分函数依赖传递函数依赖码.定义4.1设R(U)是一个属性集
U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。X称为这个函数依赖的决
定属性集(Determinant)。1.函数依赖.说明:1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名→年龄”这个函数
依赖只有在不允许有同名人的条件下成立3.数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。.例:Stud
ent(Sno,Sname,Ssex,Sage,Sdept)假设不允许重名,则有:Sno→Ssex,Sno→Sage,Sno→Sdept,Sno←→Sname,Sname→Ssex,Sname→SageSname→Sde
pt但Ssex→Sage若X→Y,并且Y→X,则记为X←→Y。若Y不函数依赖于X,则记为X→Y。.2.平凡函数依赖与非平凡函数依赖定义4.2在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖。若X→Y,但YX,则称X→Y
是平凡的函数依赖。例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,Cno)→Sno(Sno,Cno)→Cno.对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新
的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。.3.完全函数依赖与部分函数依赖定义4.3在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y完全函数依赖于X,记作XfY。若
X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XPY。.例:在关系SC(Sno,Cno,Grade)中,由于:Sno→Grade,Cno→Grade,因此:(Sno,Cno)fGrade.
4.传递函数依赖定义4.4在关系模式R(U)中,如果X→Y,Y→Z,且YX,ZY,Y→X,则称Z传递函数依赖于X。注:如果Y→X,即X←→Y,则Z直接依赖于X。例:在关系Std(Sno,Sdept,Mname)中,有:Sno→Sdept,Sdept→MnameMname传递函数依赖于Sno.5
.码定义4.5设K为关系模式R<U,F>中的属性或属性组合。若KfU,则K称为R的一个侯选码(CandidateKey)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primarykey)。.定义关系模式R
中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey)也称外码主码又和外部码一起提供了表示关系间联系的手段。.4.2范式范式是符合某一种级别的关系模式的集合
。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF).各种范式之间存在联系:某一关系模式R为第n范式,可简记为R↔nNF。N5NF4B
CNFNF3NF2NF1.第一范式(1NF)1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R↔1NF。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
但是满足第一范式的关系模式并不一定是一个好的关系模式。.例:关系模式SLC(Sno,Sdept,Sloc,Cno,Grade),Sloc为学生住处,假设每个系的学生住在同一个地方。函数依赖包括:(Sno,Cno)fGradeSno→Sdept(Sno,Cno)PSdeptSno→Slo
c(Sno,Cno)PSlocSdept→Sloc.SLC的码为(Sno,Cno)SLC满足第一范式。非主属性Sdept和Sloc部分函数依赖于码(Sno,Cno)SnoCnoGradeSdeptSlocSLC.(
1)插入异常假设Sno=95102,Sdept=IS,Sloc=N的学生还未选课,因课程号是主属性,因此该学生的信息无法插入SLC。(2)删除异常假定某个学生本来只选修了3号课程这一门课。现在因身体不适,他连3号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。.(3)
数据冗余度大如果一个学生选修了10门课程,那么他的Sdept和Sloc值就要重复存储了10次。(4)修改复杂例如学生转系,在修改此学生元组的Sdept值的同时,还可能需要修改住处(Sloc)。如果这个学生选修了K门课,
则必须无遗漏地修改K个元组中全部Sdept、Sloc信息。.原因Sdept、Sloc部分函数依赖于码。解决方法SLC分解为两个关系模式,以消除这些部分函数依赖。SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc).函数依赖图:
SnoCnoGradeSCSLSnoSdeptSloc.第二范式(2NF)2NF的定义定义4.7若关系模式R↔1NF,并且每一个非主属性都完全函数依赖于R的码,则R↔2NF。例:SLC(Sno,Sdept,Sloc,Cno,Grade)↔1NFSLC(Sno
,Sdept,Sloc,Cno,Grade)↔2NFSC(Sno,Cno,Grade)↔2NFSL(Sno,Sdept,Sloc)↔2NF.采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。.第三范式(3NF)例:2NF关系模式SL(Sno,Sdept,Sloc)中Sno→SdeptSdept→SlocSno→SlocSloc传递函数依赖于Sno,即SL中存在非主属性对码的传递函数依赖。
.函数依赖图:SLSnoSdeptSloc.解决方法采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:SD(Sno,Sdept)DL(Sdept,Sloc)SD的码为Sno,DL的码为Sdept。.SD的码为Sn
o,DL的码为Sdept。SnoSdeptSDSdeptSlocDL.3NF的定义定义4.8关系模式R<U,F>中若不存在这样的码X、属性组Y及非主属性Z(ZY),使得X→Y,Y→Z和Y→X,成立,则称R<U,F>↔3NF。例,SL(Sno,Sdept,Sloc
)↔2NFSL(Sno,Sdept,Sloc)↔3NFSD(Sno,Sdept)↔3NFDL(Sdept,Sloc)↔3NF.若R↔3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。如果R↔3NF,则R也是2NF。采用投影分解法将一个2
NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。.BC范式(BCNF)定义4.9设关系模式R<U,F>↔1NF,如果对于
R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R↔BCNF。•每一个决定属性集(因素)都包含(候选)码•R中的所有属性(主,非主属性)都完全函数依赖于码•若R↔BCNF•R↔BCNF,则R↔3NF•若R↔3NF则R不一定↔BCNF.例:在关系模式STJ(S,T,J)中,S表示学生,
T表示教师,J表示课程。每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称:(S,J)→T,(S,T)→J,T→J.SJTSTJSTJ.STJ↔3NF(S,J)和(S,T
)都可以作为候选码S、T、J都是主属性STJ↔BCNF•T→J,T是决定属性集,T不是候选码。.解决方法:将STJ分解为二个关系模式:SJ(S,J)↔BCNF,TJ(T,J)↔BCNF没有任何属性对码的部分函数依赖和传递函数依赖。SJSTTJTJ.3NF与BCNF的关系如果关
系模式R↔BCNF,必定有R↔3NF如果R↔3NF,且R只有一个候选码,则R必属于BCNF。.⒈所有非主属性都完全函数依赖于每个候选码⒉所有主属性都完全函数依赖于每个不包含它的候选码⒊没有任何属性完全函数依赖于非码的任何一组属性.4.3关系模式的规范化关系
数据库的规范化理论是数据库逻辑设计的工具。一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。规范化程度可以有多个不同的级别。.规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在
插入异常、删除异常、修改复杂、数据冗余等问题。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。.关系模式规范化的基本步骤1NF↓消除非主属性对码的部分函数依赖消除决定属性2NF集非码的非
平↓消除非主属性对码的传递函数依赖凡函数依赖3NF↓消除主属性对码的部分和传递函数依赖BCNF↓消除非平凡且非函数依赖的多值依赖4NF↓消除不是由候选码所蕴含的连接依赖.规范化理论为数据库设计提供了理论的指南和工具也仅仅是指南和工
具并不是规范化程度越高,模式就越好必须结合应用环境和现实世界的具体情况合理地选择数据库模式