第五章 关系数据库规范化_第1页
第五章 关系数据库规范化_第2页
第五章 关系数据库规范化_第3页
第五章 关系数据库规范化_第4页
第五章 关系数据库规范化_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章关系数据库规范化理论1第5章关系数据库规范化理论5.1问题的提出5.2函数依赖5.3规范化5.4函数依赖的公理系统5.5关系模式的分解25.1问题的提出关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据模式。即应该构造几个关系模式,每个关系模式应由哪些属性组成等。(不同处理,往往会导致数据管理的效率相差很远)数据库逻辑设计的工具──关系数据库的规范化理论。如何设计出“好”的关系模式呢?也即关系数据库规范化要讨论的问题35.1问题的提出(续)一、概念回顾:关系:描述实体、属性、实体间的联系。关系模式:用来描述关系。关系数据库:基于关系模型的数据库,利用关系来描述现实世界。从形式上看,它由一组关系组成。关系数据库的模式:定义这组关系的关系模式的集合。45.1问题的提出(续)二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:

R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域的集合DOM:属性向域的映象集合F:属性间数据的依赖关系集合55.1问题的提出(续)三、关系模式的简化表示简化为一个三元组:

R<U,F>当且仅当U上的一个关系r

满足F时,r称为关系模式R(U,F)的一个关系65.1.1关系模型可能存在的异常数据依赖是通过一个关系中属性间值的相等(关联)与否体现出来的数据间的相互关系是现实世界属性间相互联系的抽象是数据内在的性质是语义的体现数据依赖的类型函数依赖(FunctionalDependency,简记为FD)多值依赖(MultivaluedDependency,简记为MVD)其他75.1.1关系模型可能存在的异常(续)函数依赖普遍存在于现实生活中。例如:设计一个用于学生管理的数据库,该数据库涉及的属性包括学号(Sno)、姓名(Sname)、所在系(Sdept)、住处(Loca)、课程号(Cno)、成绩(Grade)。假设用一个单一关系模式SLC<U,F>来表示该数据库,则该关系模式为:U={Sno,Sname,Sdept,Loca,Cno,Grade}85.1.1关系模型可能存在的异常(续)假设有以下语义:(1)学生的学号是唯一的。(2)一个系有若干个学生,但一个学生只能在一个系学习。(3)同一个系的学生住在同一个区域。(4)一个学生可以选修多门课程,每门课程可以被多个学生选修。(5)每个学生选修一门课程有一个成绩。95.1.1关系模型可能存在的异常(续)关系模式SLC<U,F>U={Sno,Sname,Sdept,Loca,Cno,Grade}F={Sno→Sname,Sno→Sdept,Sdept→Loca,(Sno,Cno)→Grade}函数依赖表示方法105.1.1关系模型可能存在的异常(续)上述关系存在以下几个方面的问题:⒈数据冗余太大⒉更新异常⒊插入异常⒋删除异常结论:SLC关系模式不是一个好的关系模式好的关系模式:应该不会发生插入异常、更新异常和删除异常,并且数据库的冗余要尽可能地少。115.1.2异常原因分析在关系模式SLC中,(Sno,Cno)为主键。SLC中U上的一组函数依赖F:

F={Sno→Sname,Sno→Sdept,Sdept→Loca,(Sno,Cno)→Grade}可表示成如图5.1所示:125.1.2异常原因分析(续)在关系模式SLC中: Grade完全由主键(Sno,Cno)决定

Sname、Sdept的值由Sno(主键的一部分)决定 Loca的值由Sdept决定,与Sno无直接联系关系SLC中存在的这些函数依赖就是问题的根本所在,即关系模式中的属性并非完全是由主键确定,有一部分属性只与键的一部分有关。把无直接联系的属性放在一起构成关系模式,必然会产生上述的异常情况。135.1.2异常原因分析(续)将SLC改造为以下3个关系模式:

S(Sno,Sname,Sdept,Sno→Sname,Sno→Sdept)

L(Sdept,Loca,Sdept→Loca)

SC(Sno,Cno,Grade,(Sno,Cno)→Grade)这3个关系模式都不会发生插入异常、更新异常和删除异常的情况,并且数据的冗余也得到了较好的控制。145.2.1函数依赖的定义定义5.1设R(U)是属性集U上的关系模式。X和Y是U的子集。若对于R(U)上的任意一个可能的关系r,如果r中不可能存在两个元组,它们在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作X→Y。其中X称为这个函数依赖的决定属性组,或称为决定因素,Y称作被决定因素。若Y不函数依赖于X,记作X→Y。若X→Y,且Y→X,则记作X←→Y。155.2.1函数依赖的定义(续)对于函数依赖,有以下几点具体说明:(1)函数依赖不是指关系模式R的某个或某些关系满足的约束条件,而是指R的所有关系均要满足的约束条件。(2)函数依赖是语义范畴的概念,只能根据语义来确定一个函数依赖。例如,Sname→Sno这个函数依赖只有在学生不重名的情况下才能成立。如果允许有重名,则Sno就不能函数依赖Sname。(3)现实中,设计者可以作出强制性的规定以满足需要的函数依赖关系。例如,可以规定不允许同名学生存在,从而保证Sname→Sno成立。165.2.2几种特殊的函数依赖一、平凡函数依赖与非平凡函数依赖定义5.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任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。175.2.2几种特殊的函数依赖(续)二、完全函数依赖与部分函数依赖定义5.3在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'Y,则称Y完全函数依赖于X,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XP

Y。例:在关系SC(Sno,Cno,Grade)中,由于:SnoGrade,CnoGrade,因此:(Sno,Cno)fGrade185.2.2几种特殊的函数依赖(续)三、传递函数依赖定义5.4在关系模式R(U)中,如果X→Y,Y→Z,且YX,Y→X,则称Z传递函数依赖于X,记作XtZ。注:如果X→Y,Y→X,则X←→Y,实际上X→Z就是直接函数依赖,而不是传递函数依赖。例如,在关系模式SLC(Sno,Sname,Sdept,Loca,Cno,Grade)中,(Sno,Cno)fGrade是完全函数依赖;(Sno,Cno)pSname是部分函数依赖;由于Sno→Sdep,Sdept→Loca,所以SnotLoca是传递依赖依赖。195.2.3键定义5.5设K是关系模式R<U,F>中的属性或属性组合,若KfU,则K为R的候选键(CadidateKey)。若候选键多于一个,则选定其中的一个为主键(PrimaryKey)。主属性:包含在任何一个候选键中的属性全键:整个属性组是键205.2.3键(续)定义5.6关系模式R中属性或属性组X并非R的键,但X是另一个关系模式的键,则称X是R的外部键(ForeignKey),简称外键。关系间的联系,可以通过同时存在于两个或多个关系中主键和外键的取值来建立。所以,主键和外键提供了一个表示关系间联系的途径。215.3规范化规范化的基本思想减少关系模式中存在的数据冗余消除数据依赖中存在的不合理的部分解决插入异常、更新异常和删除异常问题。这就要求在数据库设计时,关系模式应满足一定的条件。225.3.1范式及其类型范式:为不同程度的规范化设立的不同标准。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。范式的种类:

第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF)“第几范式”是表示关系的某一种级别,所以称某一关系模式R为第几范式

235.3.1范式及其类型(续)现在把范式理解成是符合某一种级别的关系模式的集合。某一关系模式R为第n范式,可简记为R∈nNF。各种范式之间存在以下的关系:规范化:

一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的集合,这个过程就叫规范化。245.3.2第一范式(1NF)定义5.7如果关系模式R的所有属性都是不可分的数据项,则称R属于第一范式,记为R∈1NF。在关系数据库中,第一范式是对关系模式的最低要求,不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。255.3.2第一范式(1NF)(续)关系模式SLC(Sno,Sname,Sdept,Loca,Cno,Grade),由于每个属性不可再分,所以SLC∈1NF。我们知道,该模式存在着数据冗余、插入异常、更新异常和删除异常。

原因是含有不合适的函数依赖:265.3.2第一范式(1NF)(续)(Sno,Cno)fGrade(Sno,Cno)pSname,Sno→Sname(Sno,Cno)pSdept,Sno→Sdept(Sno,Cno)pLoca,Sno→Loca

函数依赖中,只有属性Grade对键(Sno,Cno)是完全函数依赖,而其它非主属性对键都是部分函数依赖,导致数据操作中出现了异常问题。所以需要对关系模式SLC进行投影分解,向高一级范式转化。函数依赖:275.3.3第二范式(2NF)定义5.8若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则

R∈2NF。关系模式SLC中,Sno、Cno为主属性,Sname、Sdept、Loca、Grade均为非主属性。只有Grade对键是完全函数依赖,其余非主属性对键均为部分函数依赖,所以SLC∈2NF。285.3.3第二范式(2NF)(续)采用投影分解法,将部分函数依赖从SLC中分离出来,得到以下两个关系模式: SC(Sno,Cno,Grade) SL(Sno,Sname,Sdept,Loca)

其中,SC的键为(Sno,Cno),SL的键为Sno。295.3.3第二范式(2NF)(续)分解后关系模式SC和LC中的非主属性对键都是完全函数依赖,所以:

SC∈2NF,SL∈2NF。显然,在SLC模式中存在的一些异常问题在一定程度上得到了解决。

但是,将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。305.3.3第三范式(3NF)定义5.9关系模式R<U,F>

中若不存在这样的键X、属性组Y及非主属性Z(ZY),使得X→Y,Y→Z,成立,且Y→X,则称R∈3NF。可以证明:若R∈3NF

,则每一个非主属性既不部分函数依赖于码,也不传递函数依赖于码。315.3.3第三范式(3NF)(续)由定义5.9可知: SC(Sno,Cno,Grade,(Sno,Cno)→

Grade)∈3NF SL(Sno,Sname,Sdept,Loca)∈3NF函数依赖图:SLSnoSdeptSlocSname325.3.3第三范式(3NF)(续)解决方法采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:

S(Sno,Sname,Sdept)∈3NF

L(Sdept,Loca)∈3NFS的码为Sno,L的码为Sdept。335.3.3第三范式(3NF)(续)若R∈3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。如果R∈3NF,则R也是2NF。采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。34

5.3.5BC范式(BCNF)定义5.10设关系模式R<U,F>∈1NF,若X→Y,且YX,则X必是键,那么R∈BCNF。若R∈BCNF每一个决定属性集(因素)都是(候选)键R中的所有属性(主,非主属性)都完全函数依赖于键R∈3NF(证明)若R∈3NF则R不一定∈BCNF355.3.5BCNF(续)例:关系模式City(Cname,Street,Code),Cname--城市名称Street--街道名Code--邮政编码函数依赖:(Cname,Street)→Code, Code→Cname候选键:(Cname,Street)、(Code,Street)不存在非主属性,故City∈3NF。但决定因素Code不是键,所以City∈BCNF。365.3.5BCNF(续)例:在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称:(S,J)→T,(S,T)→J,T→J375.3.5BCNF(续)STJ∈3NF

(S,J)和(S,T)都可以作为候选键

S、T、J都是主属性STJ∈BCNF T→J,T是决定属性集,T不是候选键385.3.5BCNF(续)

解决方法:将STJ分解为二个关系模式:

SJ(S,J)∈BCNF,TJ(T,J)∈BCNF

没有任何属性对键的部分函数依赖和传递函数依赖SJSTTJTJ393NF与BCNF的关系如果关系模式R∈BCNF,必定有R∈3NF如果R∈3NF,且R只有一个候选键,则R必属于BCNF。40BCNF的关系模式所具有的性质⒈所有非主属性都完全函数依赖于每个候选键⒉所有主属性都完全函数依赖于每个不包含它的候选键⒊没有任何属性完全函数依赖于非键的任何一组属性

一个关系模式如果达到了BCNF,那么,在函数依赖范畴内,它就已经实现了彻底的分离,消除了数据冗余、插入和删除异常。但是对于不是BCNF的关系模式,仍然存在异常问题。415.3.6多值依赖与第四范式(4NF)例:关系模式Teaching(C,T,B) C—课程、T—教师、B—参考书语义:学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个老师可以讲授多门课程,每本参考书可以供多门课程使用。42表5.3未规范化的关系Teaching

课程C教师T参考书B数据库原理及应用邓宇孙泽数据库系统概论SQLServer2000离散数学数据结构孙泽曹鹏数据结构与算法数据结构离散数学………43用二维表表示Teaching

课程C教师T参考书B数据库原理及应用邓宇数据库系统概论数据库原理及应用邓宇SQLServer2000数据库原理及应用邓宇离散数学数据库原理及应用孙泽数据库系统概论数据库原理及应用孙泽SQLServer2000数据库原理及应用孙泽离散数学数据结构孙泽数据结构与算法数据结构孙泽数据结构数据结构孙泽离散数学数据结构曹鹏数据结构与算法数据结构曹鹏数据结构数据结构曹鹏离散数学………445.3.6多值依赖与4NF(续)Teaching∈BCNF:Teach具有唯一候选键(C,T,B),即全键Teaching模式中存在的问题(1)数据冗余度大:有多少名任课教师,参考书就要存储多少次(2)插入操作复杂:当某一课程增加一名任课教师时,该课程有多少本参照书,就必须插入多少个元组(3)删除操作复杂:某一门课要去掉一本参考书,该课程有多少名教师,就必须删除多少个元组(4)修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,就必须修改多少个元组产生原因 存在多值依赖455.3.6多值依赖定义5.11

设R(U)是属性集U上的一个关系模式,X、Y和Z是U的子集,并且Z=U-X-Y,多值依赖X→→Y成立当且仅当对R的任一关系r,r在(X,Z)上的每对值(x,z)对应一组Y的值,这组值仅仅决定于x值而与z值无关例Teaching(C,T,B)对于C的每一个值,T有一组值与之对应,而不论B取何值,则C→→T465.3.6多值依赖(续)平凡多值依赖和非平凡的多值依赖

若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖 否则称X→→Y为非平凡的多值依赖475.3.6多值依赖的性质(1)对称性:若X→→Y,则X→→Z,其中Z=U-X-Y多值依赖的对称性可以用完全二分图直观地表示出来。XiZi1Zi2…ZimYi1Yi2…Yin数据结构数据结构与算法数据结构离散数学孙泽曹鹏485.3.6多值依赖的性质(续)(2)传递性 若X→→Y,Y→→Z,则X→→Z-Y(3)合并性 若X→→Y,X→→Z,则X→→YZ(4)分解性 若X→→Y,X→→Z, 则X→→Y∩Z,X→→Y-Z,X→→Z-Y(5)函数依赖是多值依赖的特殊情况。 若X→Y,则X→→Y495.3.6第四范式(4NF)定义5.12 关系模式R<U,F>∈1NF,如果对于R的每一个非平凡多值依赖X→→Y(YX),X都是候选键,则称R∈4NF。

如果R∈4NF,则R∈BCNF

不允许有非平凡且非函数依赖的多值依赖,

允许的是函数依赖(是非平凡多值依赖)

X→Y505.3.6第四范式(续)例:Teach(C,T,B)∈4NF存在非平凡的多值依赖C→→T,且C不是候选键用投影分解法把Teac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论