关系规范化样例_第1页
关系规范化样例_第2页
关系规范化样例_第3页
关系规范化样例_第4页
关系规范化样例_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

第三章关系规范化理论关系得规范就是关系数据模型设计中得一个非常重要得问题,它可以指导我们设计出好得关系.设计与构造合理得关系,使之能准确地反映现实世界并有利于应用与具体操作,就是关系得规范与探讨得问题。所以有人把关系得规范化理论称为设计数据库得理论.关系中得键一、候选键(candidatekey)凡在一个关系中具有主键特性得属性或属性组,均称为候选键。因为它们都具有被选为主键得条件,所以一个关系可能有多个候选键,但只能选其中得一个为主键.候选键中包含得属性,期于得属性称为非主属性.例:在职工关系ZGﻩ(姓名,性别,年龄)中,增加一个属性:职工号,即得到一个新关系:ZG (职工号,姓名,性别,年龄)又假定职工号与职工姓名就是一一对应得,即没有两个职工得姓名相同,则“职工号"与“姓名"两个都就是候选键.二、替代键(alternatekey)对于某一指定得关系可能存在多个候选键,但只能选其中得一个为主键.在确定主键后,其余得候选键都就是替代键,替代键在需要时可代替主键。外来键(foreignkey)但关系中得某些属性系由另一个关系得主键构成时,则该属性(或属性组)称为外来键.第二节函数依赖一、函数依赖定义1:设R就是一个关系,X与Y就是R中得两个属性.若R中X得任何一个值,仅有一个Y得值与之对应,则称为R得属性Y函数依赖(FD)于属性X,记作XY。例如:在描述船员得关系CREW(NO,NAME,AGE,JOB,PAY)它表示由任一船员号NO,仅能找到一个姓名、一个年龄、一个.。。定义中得属性X可以就是复合属性,例如SP(S#,P#,QTY-USED)中得(S#,P#)二、完全函数依赖与部分函数依赖定义2:如果属性Y函数依赖于复合属性X,而且不与X得任一子集X‘函数依赖(X’Y),则称属性Y完全函数依赖(FFD)于复合函数X,记作XY。若XY但不就是完全函数依赖,则称Y部分函数依赖于X。例:在关系SP(S#,P#,QTY—USED)中QTY—USED表示部件P#在S#船上使用得数量,只有同时指定S#与P#,才能说明某部件在某船上得用量,缺一不可,因此QTY-USED完全函数依赖于(S#,P#)。三、传递函数依赖定义3:如果X,Y,Z就是R中得三个属性(或属性复合)若XY,YX,YZ,则称Z对X传递函数依赖。例如:S(S#,SNAME,CITY,POSTCODE)中S#CITY,CITYS#,若CITYPOSTCODE,则称POSTCODE传递依赖于S#。例:设有下列关系GPD(零件号,零件名,设计人,设计人等级)因为零件号→零件名零件号→设计人设计人→设计人等级故零件号→设计人等级第三节规范化与范式一、规范化问题得提出关系模型得特点就是使用二维表来表示现实世界得实体集合与属性关系,这样容易历届与被用户所接受,然而并不就是所有二维表都能构成关系模型,见表农产品统计表省市总产值产量亩产小麦稻谷小麦稻谷北京河北职工情况登记表职工号姓名级别工资学历毕业时间001张技1083中专大学研究生195719681981002李技1262以上两张二维表就不能构成关系,因为出现了子项,那么具备那些条件得二维表才能称为关系呢?在关系模式中,要求二维表具有以下性质:二维表中得每一列都就是不能分割得基本数据项,且无重复组。同一关系中,没有相同得列出现。描述一个实体,不需要重复出现相同得属性名同一关系中,各行得内容不能完全相同完全相同得行,实无意义满足上述条件得关系,称为规范化得关系,否则叫非规范化形式,这种“形式"即不能被定义成关系模型,又不能被关系型得DBMS所接受,因此要对非规范化得表格(关系)进行规范化处理。所谓规范化处理,就就是逐步用更单纯、更规则得关系来取代原有关系得过程.二、规范化得意义规范化处理得目得不仅将关系得“概念”单一化,使每一个数据项使一个简单得基本项,又无重复组。还有以下意义:(1)解决冗余度问题所谓“冗余"问题就是指表格中得数据重复.]例:船与船员之间得1:N联系见表船与船员SHIPS#SNAMENSPS#SNAMENONAMEAGES1DQS1DQ1001S2XHS1DQ1004S1DQ1020SCS#NONAMES2XH1025S11001…S11004…S11020这样重复太多,一条船有多个船员,船号与船名就要重复存储多次,如果将船得有关数据分开存储,分为SHIP与SC两个表,在SC中存放船号与船名数据,则重复得仅仅就是船号,其余得重复都消除了。为了减少甚至消除重复,将关系进行分离,正就是逐步规范化得重要一步.(2)消除多义性问题多义性就是指关系中某些属性含义不清或有多种可能得含义。例:船部件这个关系SP(S#,P#,QTY)其中数量QTY到底就是说明S与P之间得联系,即某船需要某个部件多少个,还就是仅仅说明P为仓库中现存某个部件多少个呢?在这个关系中就是确定不了得,如果QTY仅仅表示部件得库存量,则将关系SP分离,使用关系PQ(P#,QTY)来描述就不再含糊不清了。(3)解决操作可行性及提高操作方便性指对数据得插入、删除与修改就是否可行,就是否方便例:职工编号,姓名,工资等级,工资假如要插入新得工资等级与工资额,例如9—110元,由于没有对应得职工编号、姓名,无法插入。假如要删除E1这一行,则10级100元也丢失。修改也随之都修改.NONAMESTATUSSALE1陈10100E2李8120E3严1280…………E9王8120引起上述问题得原因,就是非主属性之间得依赖关系所致.这个关系中各个属性之间得对应关系可用下图表示,NO为关键字,即主属性,其余属性为非主属性。EMP(NO,NAME,STATUS,SAL)箭头表示属性间得对应关系,即任意一个职工号,仅能在表中找到一个姓名NAME与之对应,任何一个非主属性SAL函数依赖于非主属性STATUS。如果要从这个关系中消除非主属性之间得依赖关系,可将表改为两个关系EMP(NO,NAME,STATUS)SS(STATUS,SAL)这样插入数据9级、110元就可在SS中进行.由上例可见,通过适当“分离”可以消除非主属性之间得依赖性,如何进行分离或合并,使得新得一组关系模式既能反映现实世界,又能排除多义性,控制冗余度,并方便实现数据操作,正就是我们研究规范化问题得目得所在。系规范化得表述所谓关系得规范化,就是指满足某些条件后得关系,通常按属性间依赖情况来区分关系规范化得程度,并义范式来表述(NORMALFORMS)范式又分为n级,有1NF,2NF,3NF等等,为了判断一个关系属于哪一级范式,引入函数依赖这一概念.所有规范化得关系起码就是第一范式,在第一范式中进一步满足一些要求得关系为第二范式,依次类推。各种形式得范式在关系数据哭系统中都允许存在,但为了更方便于数据处理,通常要把低级范式分解为若干个3NF或BCNF,下面给出各范式得概念。第一范式(1NF)关系R中,每个分量都就是不可分割得。第二范式(2NF)若关系R满足1NF,且每个非主属性完全函数依赖于关键字。第三范式(3NF)若关系R满足2NF,且每个非主属性非传递依赖于关键字。加强第三范式(BCNF)若关系R满足3NF,且所有主属性与非主属性既非部分依赖关键字,也非传递依赖于关键字。下面举例说明逐步规范化得方法与过程.例:已知一张购物登记表,要求规范到BCNF范式得程度,以便被关系型DBMS所接受。购物登记顾客姓名商品名称数量单价付款工作单位顾客地址电话A彩电11400元1400元××厂L市38540B手电筒钢笔12035元2、2元47、50元××学校P市28266C电冰箱手电筒钢笔1121530元3、5元2、2元1537、9元××机关L市53834分析已知表,来决定就是否需要进行规范化处理通过观察可知,表不能直接被关系型DBMS所接受,因为它存在许多问题.在关系模型中对关系得最起码要求,应该满足第一范式,表显然不满足这个条件。在数据操作上将会出现下列问题:删除异常假如顾客A不购买彩电,那么表中得记录A删除时就会将商品名称、单价等同时删除,此时彩电价格也无从查找。插入异常如顾客A想要购买洗衣机,不但要填上洗衣机得名称与价格,还要填上有关顾客A得信息(工作单位、地址、电话)显然就是重复得。数据得冗余量大在有多个顾客购买同一商品得情况下,就使这一商品得名称与单价多次重复出现在数据库中,造成数据得大量冗余.非独立数据存在付款项目就是由数量*单价得来得,在此可以去掉,基于上述情况,必须对表进行规范化处理。(2)利用规范化工具逐步解决表中得数据结构所存在得问题首先,去掉表中得非独立项,变成满足第一范式得要求得关系命名为RR购物登记表顾客姓名商品名称数量单价工作单位顾客地址电话A彩电11400元××厂L市38540B手电筒135元××学校P市28266B钢笔202、2元××学校P市28266C电冰箱11530元××机关L市53834C手电筒13、5元××机关L市53834C钢笔22、2元××机关L市53834显然R就是1NF,从而解决了第1)个问题进一步规范化过程如下步骤进行:第一步语义分析每一名顾客有一个工作单位、住址、电话;每种商品有一种价格每个顾客所购物品有一定数量;付款=单价*数量(非独立项可去掉)为了讨论方便,将表种属性用字母简记顾客姓名A单价D商品名称B顾客工作单位E数量C顾客地址F顾客电话G第二步找出函数依赖集FD有语义分析,根据函数依赖得含义,可以得出下面一组函数依赖关系。AE,AF,AGBDABC故FD={AE,AF,AG,BD,ABC}第三步画出函数依赖图首先从函数依赖集中,选出一组属性作为关键字,这里选关键字AB,分析非主属性对关键字依赖得情况。(A,B)—f->C表明属性C对关键字(A,B)为函数依赖(A,B)-P-〉E表明属性E对关键字(A,B)为部分函数依赖(A,B)-P-〉F(A,B)-P—>G(A,B)—P->D(理由同上)画出关系R得函数依赖图EECACAFFGDBGDB从图中瞧出,非主属性与关键字得关系,哪些就是完全函数依赖,哪些就是部分函数依赖,根据范式得定义,下面可以逐步再进行规范化。E第四步去掉非主属性对关键字得部分依赖关系,得到一组新得关系函数依赖图。EDBACDBACAFAFGGBB于就是R得到一组新得关系R1R2R3得集合三个关系表R1顾客关系顾客姓名工作单位顾客地址电话A××厂L市38540B××学校P市28266C××机关L市53834R2商品关系商品名称单价彩电1400元手电筒35元钢笔2、2元电冰箱1530元R3购物关系顾客姓名商品名称数量A彩电1B手电筒1B钢笔20C电冰箱1C手电筒1C钢笔2R1得关键字为顾客姓名R2得关键字为商品姓名R3得关键字为顾客姓名商品姓名得组合关系R1R2与R3均属于BCNF,这就是因为所有主属性与非主属性既非部分依赖关键字,也非传递依赖关键字。至此,规范化处理完毕上述得规范化处理结果,事实上已消除了前面提到得删除异常、插入异常与数据冗余得问题。、假如顾客不购买彩电,只就是合理地删除R3中一个记录,不会影响R1中得顾客信息,也不会影响R2中得商品信息。、假如顾客A购买洗衣机时,在R3中填写数量,而价格在R2中填写,与顾客信息无关。、在多个顾客购买同一种商品得情况下,因商品名称与价格R2在中,不会重复出现多次,消除了冗余关系模式得分解分解就是提高关系范式等级得重要方法,以下通过一个事例说明模式分解得一般方法与对分解得要求。例:已知关系S(学号,班级,班主任)∈2NF下图显示了它包含得内容与属性间得依赖关系,试将S分解为3NF得新关系学号班级班级班主任班级5101520253035财9241财9241管9235管9235电9241电9241电9241李力李力学号李力学号李力班主任丁一班主任丁一丁一这里有三种不同得分解法,即SS-C(学号,班级)C-M(班级,班主任)SS—C(学号,班级)S-M(学号,班主任)SS—M(学号,班主任)C-M(班级,班主任)三种方案得出得新关系全就是3NF.但分解得质量却大有差异.以下结合对分解质量得要求,对这三种方案作一比较.1、分解必须就是无损得,即不应在分解丢失信息在上例中,第③种方案就不能保证无损分解,下图显示了这一方案得出得两个关系.由于财9241班与管9335班得班主任就是同一个人,分解后将无法分辨5,10,15,20号各属于哪一个班。学号班主任班级班主任5101520253035李力李力李力李力丁一丁一丁一财9241管9235电9241李力李力丁一分解后得新关系应相互独立,对一个关系得更改,不会影响另一关系试比较一上得①、②两种方案,设15好同学从管9235转入财9241,按第①翻案,仅修改关

温馨提示

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

评论

0/150

提交评论