第8章 数据库设计理论 V2.1解析.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关系模式分解的两个特性实际上涉及两个数据库模式的等价问题,这种等价包括数据等价和依赖等价两个方面。 数据等价是指两个数据库实例应表示同样的信息内容,用“无损分解”衡量。如果是无损分解,那么对关系反复的投影和连接都不会丢失信息。 依赖等价是指两个数据库模式应有相同的依赖集闭包。在依赖集闭包相等情况下,数据的语义是不会出错的。 违反数据等价或依赖等价的分解很难说是一个很好的设计模式。 但是要同时达到无损分解和保持函数依赖的分解也不是一件容易的事情,需要认真对待。 Click to add Title 1 关系模式设计问题 1 Click to add Title 2 函数依赖 2 Click to add Title 2 模式分解 3 Click to add Title 1 规范化 4 Click to add Title 1 *多值依赖 5 Click to add Title 2 *连接依赖 6 范式(Normal Forma,NF)是一种关系的状态,也是衡量关系模式好坏的标准。 范式的种类( 1NF,2NF,3NF,BCNF )与数据依赖有着直接的联系。在关系模式中存在函数依赖时就有可能存在数据冗余,引出数据操作异常现象。 例如:就诊关系模式R(Dname,Dlevel,Dsal,Pname,Fsum)不是一个好的设计,因为存在冗余信息(重复存储的职称和工资)。数据冗余不仅浪费存储空间,而且会使数据库难以保持数据的一致性。 范式可以用于确保数据库模式中没有各种类型的异常和不一致性。为了确定一个特定关系是否符合范式要求,需要检查关系中属性间的函数依赖,而不是检查关系中的当前实例。 一个规范化的模式有最小的数据冗余,它要求除了与元组进行连接的外键(在另一个关系中是主键的属性组)之外,数据库实例中的其他属性的值都不能被复制。 规范化主要作为验证和改进逻辑数据库设计的工具,使得逻辑设计能够满足特定约束并避免不必要的数据重复。 定义:在关系模式R的每个关系r中,如果每个属性值都是不可再分的原子值,那么称R是第一范式(1NF)的模式。 1NF不允许每个元组的每个属性对应一组值、一行值或两个值的组合。简单地说,1NF中不允许出现“表中有表”的现象。 1NF是关系模式应具有的最起码的条件。满足1NF的关系称为规范化的关系;否则称为非规范化的关系。关系数据库研究的关系都是规范化的关系。 例如,就诊关系模式R(Dno,Pno,Dlevel,Dsal,Fsum)中每个属性都不可再分,因此R满足1NF。 但在医生关系模式D(Dno,Dname,Dresume)中,如果Dresume包括工作单位和工作时间两列信息,在某个医生可能曾经工作过多个单位而出现多值,则D不满足1NF。将D修改为D1(Dno,Dname,Dorganise,Ddate),则D1就满足了1NF。 如果关系模式中存在部分函数依赖,那么它就不是一个好的关系模式,因为它很可能出现数据冗余和操作异常现象。因此,需要对这样的关系模式进行分解,以排除局部函数依赖,使模式达到2NF的标准。 2NF定义: 如果关系模式R∈1NF,且每个非主属性(不是组成候选码的属性)完全函数依赖于候选码,那么称R属于2NF的模式。 2NF是基于完全函数依赖的,只有在主键是复合属性下才可能不符合2NF。 2NF是通往更高范式的中间步骤,它消除了1NF存在的部分问题。 2NF举例 设有关系模式R(Dno,Pno,Dlevel,Dsal,Fsum)的属性分别表示医生编号、患者编号、医生职称级别、医生工资和诊疗费用。(Dno,Pno)是R的候选码。 如果R上有两个FD:(Dno,Pno)→(Dlevel,Dsal)和Dno→(Dlevel,Dsal),因此前面一个FD是局部依赖,所以R不是2NF。此时R会出现冗余和异常。例如,某个医生为N个病人看病,则在关系中会出现N个元组,而医生的职称级别和工资就会重复N次。 如果将R分解为R1(Dno,Dlevel,Dsal)和R2(Dno,Pno,Fsum)后,局部依赖(Dno,Pno)→(Dlevel,Dsal)就消失了,R1和R2都是2NF了。 Dname Pname Dlevel Dsal Fsum 2NF分解算法:将关系模式R分解成2NF模式子集 设有关系模式R(U),主键是W,R上还存在函数依赖X→Z,其中Z是非主属性和X W,则W→Z就是一个局部依赖。此时应该把R分解成两个模式: ① R1(XZ),主键是X; ② R2(U-Z),主键仍为W,外键是X(参考R1)。 利用外键和主键的连接可以从R1和R2重新得到R。 如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中每一个关系模式都是2N

文档评论(0)

2299972 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档