数据库原理课件-4规范化

PPT
  • 阅读 69 次
  • 下载 0 次
  • 页数 57 页
  • 大小 571.501 KB
  • 2022-12-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
数据库原理课件-4规范化
可在后台配置第一页与第二页中间广告代码
数据库原理课件-4规范化
可在后台配置第二页与第三页中间广告代码
数据库原理课件-4规范化
可在后台配置第三页与第四页中间广告代码
数据库原理课件-4规范化
数据库原理课件-4规范化
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 57
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】数据库原理课件-4规范化.ppt,共(57)页,571.501 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-92514.html

以下为本文档部分文字说明:

数据库基础规范化汤娜中山大学计算机科学系isstn@mail.sysu.edu.cn一、概述二、规范化三、反规范化关系模式Student<U,F>中存在的问题U={Sno,Sdept,Mname,Cname,Grade}⒈数据冗余太大浪费大量的存储空间例:每一个系主

任的姓名重复出现⒉更新异常(UpdateAnomalies)数据冗余,更新数据时,维护数据完整性代价大。例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组概述⒊插入异常(InsertionAnomalies)该插的数据插不进去例

,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。⒋删除异常(DeletionAnomalies)不该删除的数据不得不删例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。概述结论:•St

udent关系模式不是一个好的模式。•“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖。概述一、函数依赖二、平凡函数依赖与非平凡函数依赖三、完全函数依赖与部

分函数依赖四、传递函数依赖概述主属性:候选键中的任意一个属性元素称为主属性非主属性:不是候选键中的属性定义1设R(U)是属性集U上的关系模式,X、Y是U的一个子集。r是R(U)中任意给定的一个关系。若对于r中任意

两个元组s和t,当s[X]=t[X]时,就有s[Y]=t[Y],则称属性子集X函数决定属性子集Y或者称Y函数依赖于X(FunctionalDependence),记其为X→Y。否则就称X不函数决定Y或者称Y不函数依赖于X。一、函数依赖T1T2T3Row#ABABAB1X1Y1

X1Y1X1Y12X2Y2X2Y4X2Y43X3Y1X1Y1X1Y14X4Y1X3Y2X3Y25X5Y2X2Y4X2Y46X6Y2X4Y3X4Y4ABABABBABABA函数依赖说明:1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束

条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立3.数据库设计者可以对现实世界作强制的规定。例如规定不允许

同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。二、平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→

Y是非平凡的函数依赖若X→Y,但YX,则称X→Y是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,Cno)→Sno(Sno,Cno)→Cno平凡函数依赖

与非平凡函数依赖(续)于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。三、完全函数依赖与部分函数依赖定义2在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X

’Y,则称Y完全函数依赖于X,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XPY。完全函数依赖与部分函数依赖(续)例:在关系SC(Sno,Cno,Grade)中,由于:Sno→Gr

ade,Cno→Grade,因此:(Sno,Cno)fGrade四、传递函数依赖定义3在关系模式R(U)中,如果X→Y,Y→Z,且YX,Y→X,则称Z传递函数依赖于X。注:如果Y→X,即X←→Y,则Z直接依赖于X。例

:在关系Std(Sno,Sdept,Mname)中,有:Sno→Sdept,Sdept→MnameMname传递函数依赖于Sno规范化规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问

题。范式范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)范式各种范式之间存在联系

:某一关系模式R为第n范式,可简记为R∈nNF。NF5NF4BCNFNF3NF2NF1范式1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关

系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。什么是一个好的模式设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么这个关系模式就是一个好的模式(BCNF)。要知道的7个公式I

nclusionrule(包含律):ifYX,thenX->Y(平凡依赖)Transitivityrule(传递率):ifX->YandY->Z,thenX->ZAugmentationrule(增广率):ifX->Y,thenXZ->YZUnionRule(合并):IfXYandX

ZthenXYZDecompositionRule(分解):IfXYZthenXYandXZPseudotransitivityRule(伪传递):IfXYandWYZthenXWZsetAccumulati

onRule:IfXYZandZBthenXYZB表中那些属性可以做候选键?Def属性集的闭包GivenasetXofattributesinatableTandasetFofFDsonT,wedefinetheCLOSUREofthesetX(underF

),denotedbyX+,asthelargestsetofattributesYsuchthatX->YisinF+.Algorithm如何求闭包的算法如果某个属性集的闭包为表中的全体属性,则此属性集可以为候选键例

:描述学校的数据库:学生的学号(Sno)、所在系(Sdept)系主任姓名(Mname)、课程名(Cname)成绩(Grade)单一的关系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}判断是否是一个好

模式的例子(1)学校数据库的语义:⒈一个系有若干学生,一个学生只属于一个系;⒉一个系只有一名主任;⒊一个学生可以选修多门课程,每门课程有若干学生选修;⒋每个学生所学的每门课程都有一个成绩。属性组U上的一组函数依赖F:F={Sno→Sdept,Sdept→Mname,(Sno,Cnam

e)→Grade}判断是否是一个好模式的例子(1)判断是否是一个好模式的例子(1)Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}属性组U上的一组函数依赖F:F={Sno→Sdept,Sdept→Mnam

e,(Sno,Cname)→Grade}不是好模式判断是否是一个好模式的例子(2)例:在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选

课的名称:(S,J)→T,(S,T)→J,T→J不是好模式如何分解?1.求出函数依赖集合的最小覆盖集whenwelistasetofFDs,wenormallytrytolistaMINIMALset,soth

atasmallersetdoesn'texistthatwillimplythese.ItwillturnoutthatfindingaminimalsetofFDsisveryimportantinfindingtherightrelationaldesignbyNorma

lization.2.进行无损分解T——〉T1,T2步骤一:求解最小覆盖Step1.用decompositionrule.将所有的函数依赖的右边只有一个属性xyzxy和xzF:(1)AB,(2)CB,(3)DABC,(4)ACDH:(1)AB,(2)CB,(3)DA,

(4)DB,(5)DC,(6)ACDStep2.去除多余的函数依赖RemoveinessentialFDsfromthesetHtogetthesetJ.DetermineinessentialXAifAisinX+underFD

swithoutX->A.(1)AB,(2)CB,(3)DA,(4)DB,(5)DC,(6)ACDA+=ABC+=BCD+=ABCDAC+=ACDBH=(1)AB,(2)CB,(3)DA,(4)DC,(5)AC

D(Renumber)Step3.去除左边多余的属性SuccessivelyreplaceFDsinHwithFDsthathaveasmallernumberofFDsontheleft-hands

idesolongasH+remainsthesame:changingXAtoYA,thencheckingifY+undernewFDsetisunchanged.如果第三步函数依赖有改变要回到第二步(1)AB,(2)CB,(3)DA,(4)DC,(5)ACDA+=A

BC+=BCD+=ABCDAC+=ACDBStep4.ApplyUnionrulestobringthingsbacktogetherontherightforcommonsetsofattributeso

ntheleftofFDs,renamedM.(Xyandxzthenxyz(1)AB,(2)CB,(3)DA,(4)DC,(5)ACD(1)AB,(2)CB,(3)DAC,

(4)ACDOtherexampleABDAC,CBE,ADBF,BE1.ABDA,ABDC,CB,CE,ADB,ADF,BE(ABD+=ABDECFABC+=ABCEAD+=ADBFECB+=BE)2.ABDA是

平凡依赖,CE不关键只留下了ABDC,CB,ADB,ADF,BE3.ADC,CB,ADB,ADF,BE重返第2步得到ADC,CB,ADF,BE4.ADCF,CB,BE如果第二步先,做完第三步如果有改变,则要重新作第二步

注意第二步骤和第三步可以调换次序。如何分解什么是无损分解?使得分解后的表进行连接运算后等于原来的表例1例2算法假设表T具有函数依赖集合F,如果要将表T无损分解为{T1,T2},则要满足以下

两个条件:(1)Head(T)=Head(T1)Head(T2)(2)在函数依赖集合F包含了以下的函数依赖:Head(T1)Head(T2)->Head(T1),orHead(T1)Head(T2)->Hea

d(T2)假设给定一个表,以及函数依赖F,算法产生T的一个符合3NF且保持F中函数依赖的无损分解。例子已知表T,head(T)=ABCDEF,函数依赖集包括ABC,AD,BE分解结果:T1(ABF)T2(ABC)T3(AD)T4(BE)ReplaceFwithminima

lcoverofFS=FORALLXYINFIFFORALLZS,XYZTHENS=SHERDING(XY)ENDFOR‘如果没有任何表包括XY,则在s集合中添加一个新的表头(xy)IFFORALLCAND

IDATEKEYSKFORTFORALLZS,KZTHENCHOOSEACANDIDATEKEYKANDSETS=SHERDING(K)‘如果T表中的候选键没有在任何表中,则在s集合中添加一个新的表头(候选键)例

一:r=(SNO,CNO,GRADE,SDEPT,Mname)F={Sno→Sdept,Sdept→Mname,(Sno,Cno)→Grade}SC(Sno,Cno,Grade)SD(Sno,Sdept)DL(Sdept,M

name)例二:(S,J)→T,(S,T)→J,T→JS表示学生,T表示教师,J表示课程1NF2NF3NFBCNF消除非主属性对码的部分函数依赖消除非主属性对码的传递函数依赖消除主属性对码的部分和传递函数依

赖消除决定因素非码的非平凡函数依赖例二:(S,J)→T,(S,T)→J,T→JBCNF具有函数依赖的数据库设计目标:BCNF无损连接(数据等价)保持依赖(语义等价)有些情况很难达到所有的三个目标,通常舍弃目标

3而选择目标1和2BCNFT表如何分解,首先将非码依赖x→Y分解出去,将剩余的属性+x形成另一个表模式例子:(S,J)→T,(S,T)→J,T→J(TJ)和(S,T)如何保留函数依赖?定义一个物化视图,将表连接起来,对于没有保留的依赖x→Y,在视图上定义unique(x

)例如要定义一个物化视图(s,t,j),(S,J)→T,(S,T)→J由于没有保留,则要在sj和st上定义唯一性规范化的其他例子(1)1.假设一个医生可以在几家医院工作并从每家医院领取工资。关系(doctor,hospital,salary)规范吗?规范2.如果在上例的关系中加

入一个address字段,每个医生只有一个地址,但一个地址对应了几个医生,请问关系规范吗?不规范3.在例2的基础上,禁止医生同时在多家医院工作,其他不变。关系(doctor,hospital,salary,address

)规范吗?规范规范化的其他例子(2)在例3假设的基础上,加入医院的hospital-address信息,关系(doctor,hospital,hospital-address,salary,address)规范吗?不规范规范化总结关系数据库的规范化理论是数据库逻辑设计的工具。规

范化程度可以有多个不同的级别一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。(1NF表示可以入库)规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、修改复杂、

数据冗余等问题规范化总结(续)一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化所谓规范化实质上是概念的单一化,采用“一事一地”的模式设计原则让一个关系描

述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去采用case工具用e-r图确定实体和关系的方法就不容易出现非规范化。例子医生doctor_IDnamespecialty医院hospital

_IDnameaddressWorks-inDoctor(doctor_ID,name,specialty,hospital_ID,……)hospital(hospital_ID,name,address)规范化总结(续)不能说规范化程度越

高的关系模式就越好当一个应用的查询中经常涉及到两个或多个关系模式的属性时,系统必须经常地进行联接运算,而联系运算的代价是相当高的,可以说关系模型低效的主要原因就是做联接运算引起的,因此在这种情况下,第二范式甚至第一范式也许是最好的。规范化总结(续)在设计数据库模式结构

时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式上面的规范化步骤可以在其中任何一步终止NormalFormsBoyce-CoddNormalForm,orBCN

F.AtableTinadatabaseschemawithFDsetFisinBCNFiff,foranyFDX->AinF+thatliesinT(allattributesofXandAinT),AisasingleattributenotinX

,thenXmustbeasuperkeyforT.Inanotherwords,EveryattributeinTisdeterminedbyakey(definition),thewholekey(nosubsetofit)andnothing

butthekeyiftheBCNFpropertyfails,thentwocasearepossiblex是key的子集x是非key的属性集PrimeAttributeofatableTisanyattributethatispartofakeyf

orthattable(notnecessarilyaprimarykey).ThirdNormalForm(3NF).AtableTinadatabaseschemawithFDsetFisin3NFiff,foranyFDX->AimpliedbyFthatliesinT,ifAisas

inglenon-primeattributenotinX,thenXmustbeasuperkeyforT.(A是非主属性,X一定是超键)SecondNormalForm(2NF).AtableTwithFDsetFisin2NFiff:foranyX->AimpliedbyFt

hatliesinT,whereAisasinglenon-primeattributenotinX,XisnotproperlycontainedinanykeyofT.(X不是任何key的子集)有基于非码的函数依赖—x—〉y是能否找到y是非

主属性的依赖有X是码的子集1NFX不是码的子集2NF否3NF否BCNF例子(1)R(A,B,C,D),F={(A,D)->C,C->B}(2)R(A,B,C)AB--->CC---->B(3)R({A,B,C},

{(A,C)->B,(A,B)->C,B->C})答案(1)码AD,2NF(2)码:AB,AC,3NF(3)码:AB,AC,3NF采用规范化的方法设计表,然后判断与E-R图设计方法的不同。Gateshas_seatSeatsFlightsPassen

gersseat_assignseatnoflightnoticketnogatenodepart_timedtimeddate(1,N)(1,1)(0,1)(1,1)marshallstravels_on(1,1)(0,N)(1,N)(1,1)逆(反)规范化反规范化的必要性对

于一个具体应用来说,到底规范化进行到什么程度,需要权衡响应时间和潜在问题两者的利弊才能决定。一般说来,BCNF范式就足够了。“分离”越深,产生的关系越多,结构越复杂。关系越多,连接操作越频繁,而连接操作是最费时间的,在数据库设计中

特别对以查询为主的数据库设计来说,频繁的连接会严重影响查询速度。反规范化的好处是降低连接操作的需求、降低外码和索引数目,减少表的个数,从而提高查询速度,这对于性能要求相对较高的数据库系统来说,能有效地改善系统的性能,

但相应的问题是可能影响数据的完整性,加快查询速度的同时降低修改速度逆规范化的利弊总结数据冗余的代价空间代价管理代价(主要是增删改异常),维护数据的完整性好处:减少查询所要连接表的个数,减少了I/O和CPU时间,加速了查询做反规范时,一定要权衡利弊,仔细分析应用的数据存取需求

和实际的性能特点。逆(反)规范化优化策略数据应当按访问和修改的频率和重要性进行组织原则:查询带来的收益应该大于两次查询之间进行维护所需要的额外时间常用的反规范技术有增加冗余列、增加派生列、重新连接表和分割表逆规范化增加冗余列增加冗余列是指在多个表中具有相

同的列,它常用来在查询时避免连接操作例子:填写发票的明细项。报价单通常用于挑选客户订购的商品。我们可以只存储报价单ID,而ID指向包含产品说明、价格和其他详细信息的报价单。但是,产品说明和价格会随着时间而改变。如

果不将数据从报价单复制到明细表中,将来则无法准确地重新打印原始发票。如果您尚未收到付款,问题将非常严重。增加派生列预计算和派生数据的存储,如求和、平均值、统计例如银行存款余额,超市的各类商品销售总额等主要用于频繁的报表统计或重复的计算重新连接表避免多表连接,对于

经常更新的关系,这种逆规范化会降低性能。但在低更新率的情况下,逆规范化可能会提高性能。一般采用逆规范化设计档案数据的模式,而使用规范化设计在线数据的模式如数据仓库分割表垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放

到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。其缺点是需要管理冗余列,查询所有数据需要join操作。逆(反)规范化水平分割:根

据一列或多列数据的值把数据行放到两个独立的表中。表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度。满足“80/20原则”的应用80/20原则:一个大关系中,经常被使用的数据只是关系的一部分,约20%把经常使用的数据分解出

来,形成一个子关系,可以减少查询的数据量。例如法规表law就可以分成两个表active-law和inactive-law。activea-law表中的内容是正生效的法规,是经常使用的,而inactive-law表则使已经作废的法规,不常被查询。并发事务

经常存取不相交的数据如果关系R上具有n个事务,而且多数事务存取的数据不相交,则R可分解为少于或等于n个子关系,使每个事务存取的数据对应一个关系。水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要union操作建立统一视图。在许多数据库应用中,这种复杂性会超过它带来的优点

,因为只要索引关键字不大,则在索引用于查询时,表中增加两到三倍数据量,查询时也就增加读一个索引层的磁盘次数。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?