- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于关系数据库模式分解与范式的总结
1.关系模式设计不规范会带来一系列的问题数据冗余更新异常插入异常删除异常因此需要一个标准的模式来解决这些问题,引入模式分解来解决存在问题。2.无损连接的概念比较好懂,就是要保证模式分解后仍然可以根据分解后的关系回退回分解前。这可以保证分解过程没有丢失信息,不会破坏和更改已经存在的。而检验无损连接的方法分为两种:①当R分解为两个关系模式R1和R2时,有一种简便的方法可以测试无损连接性p={R1,R2}p是无损连接的分解当且仅当下面之一满足(R1 ∩ R2) → (R1-R2)(R1 ∩ R2) → (R2-R1)其中R1 ∩ R2指模式的交,返回公共属性R2-R1表示模式的差集,返回属于R2但不属于R1的属性集也可以理解为R1∩R2的结果是R的超码,即该结果可以推出全部R属性。②当R分解为多个关系模式时,可以使用chase算法:?举个栗子R(A,B,C,D,E)R1(A,D), R2(A,B), R3(B,E), R4(C,D,E), R5(A,E)F={A→C, B→C, C→D, DE→C, CE→A}判断R分解为p={R1,R2,R3,R4,R5}是否是无损连接的分解?第一步,构造初始表。?第二步,处理表A→C:将b23,b53改为b13B→C:将b33改为b13C→D:将b24,b34,b54改为a4DE→C:将第3行和第5行的C改为a3CE→A:将第3行和第4行的A改为a1处理后BE行将全变为a,证明为无损连接。3.函数依赖(FD)的表现形式是x→y,可以根据函数的概念理解,当x属性的值相同时,可以断定y也一定相同。在实际关系模式中,x与y会存在逻辑上的相关性,如一个学号会对应一个姓名。要理解函数依赖是关系模式的内涵,保持函数依赖才能保持关系模式中存在的关系。举个栗子:R(city, street, zip), F={(city,street)→zip, zip→city}分解为p={R1(street,zip),R2(city,zip)}在R1中插入(’a’,’100081’)和(’a’,’100082’)R2中插入(’Beijing’,’100081’)和(’Beijing’,’100082’)R1∞R2:得到?违反了(city,street)→zip,因为它被丢失了,语义完整性被破坏。4.范式是满足特定要求的模式,也就是我们追求的标准。使关系模式符合某种范式可以容易验证其合理性并解决或规避最开始提及的那些问题。1NF:对于关系模式R的任一实例,其元组的每一个属性值都只含有一个值,则R符合1NF。1NF是关系的基本要求。R不满足1NF会带来更新时的二义性。2NF:(假定R只有一个候选码,且该候选码为主码)当且仅当R属于1NF,且R的每一个非主属性都完全函数依赖于主码时,R 符合2NF。(完全函数依赖:对于函数依赖W→A,若不存在X∈W,并且X→A成立,则称W→A为完全函数依赖,否则为局部函数依赖。即非主属性只能由全部主码推出,不能由部分主码推出。)3NF:(假定R只有一个候选码,且该候选码为主码)当且仅当R属于2NF,且R的每一个非主属性都不传递依赖于主码时,R 符合3NF。(传递依赖:若Y→X,X→A,并且X→Y,A不是X的子集,则称A传递依赖于Y)BCNF:如果关系模式R的所有不平凡的、完全的函数依赖的决定因素(左边的属性集)都是候选码,则R符合BCNF。(用于解决存在多组候选码的情况)介绍几个模式分解的算法。保持函数依赖分解到3NF的算法:求出R的最小函数依赖集(仍记为F)把所有不在F中出现的属性组成一个关系模式R’,并在U中去掉这些属性(剩余属性仍记为U)若F中存在X →A,且XA=U, 则输出R(U)和R’,算法结束,否则对F按相同的左部分组,将所有X →A1, X →A2,…, X →Ak形式的FD分为一组,并将每组涉及的所有属性作为一个关系模式输出。若某个关系模式Ri的属性集是另一个关系模式的属性集的子集,则在结果中去掉Ri。设最后得到关系模式R1,R2,…,Rk,则p={R1,R2,…,Rk,R’}一个保持函数依赖的分解,并且满足3NF。举个栗子:R(ABCDEF), F={A→B,AC→E}求最小FD集F={A→B,AC→E}R’(DF)按左部分组: R1(AB), R2(ACE)p={R’(DF), R1(AB), R2(ACE)}保持函数依赖和无损连接分解到3NF的算法:首先用算法1求出R的保持函数依赖的3NF分解,设为q={R1,R2,…,Rk}?设X是R的主码,求出p=q ? {R(X)}若X是q中某个Ri的子集,则在p中去掉R(X)得到的p就是最终结果举个例子:R(S#,SN,P,C,S,Z),?F={S#→SN,S#→P,S#→C,S#→S ,S#→Z,{P,C,S}→Z, Z→P,Z
文档评论(0)