九章联系的实现.pptVIP

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
九章联系的实现

第九章 联系的实现 对象类型间通过属性的引用建立了对象实例间的联系 本章重点研究对象间联系的语义及其实现方法 对象间的联系可以是n元联系(n≥2) n个对象间通过一个联系进行联接 其中最简单,常用的是二元联系(n=2) 二元联系中,二个对象间的联系语义有 1:1,1:N,N:1,N:M §9.1 没有属性的二元联系 一个二元联系本身没有任何属性,它只表达了二个对象类型间的联系 联系的实现:通过设置进入点entry point来完成 进入点设在Tleft处:Tleft类型增加一个引用对象Tright的属性,Tright类型无需增加属性 进入点设在Tright处 增加一个对象类型Rbin,它仅有二个元组属性,分别是Tleft类型和Tright类型,这种方法可以加载Rbin本身独特的属性 1:1的二元联系的实现 (一)无冗余的表达方式—一个联系仅在一个对象属性中表达 采用① (或者②)方法—应当从查询需求入手,选择查询频度高的一方作为进入点 —问题: 1)反向查询速度极慢:对一个特定的Tright实 例,查其相应的Tleft实例时需要查过所有的 Tleft实例集合 2)即使正向查询,若存在联系的偶对集合很 小,那么仍然费时 采用方法③—定义一个Rbin类型,Tr并由系统维护Tr集合,适用于Tr相对Tleft(Tright)较小时 —问题: 1)需要二次查找才能定位 2)当Tr集合仍然庞大是,寻找一组特定的偶对效率仍然很低——需要建立索引 1:1的二元联系的实现(续) (二)冗余的表达方式1——二个进入点 在Tleft中建立R属性—类型为Tright 在Tright中建立R-1属性—类型为Tleft 优点:提高反向查询效率 问题:当两个对象实例间的联系发生变更时,容易产生修改异常,生成对象库状态的一致性受到破坏 解决方法:重新定义R属性的值接受操作 refine R:←Tright code setR; define setR(oright) is begin oright.R-1 := self; self.R := oright; end define setR; 由此,确保了R属性与.R-1属性的同步修改 必须利用封装技术来控制不会单独修改.R-1 (.R-1只读) 总结 利用封装技术重新定义关联属性的状态的修改 特别注意不能在同一时间,以同样的方式修改类型Tright的.R-1的值接受操作,否则导致递归操作的无限循环 即: 重写Tleft,R的值接受操作 隐藏Tright,.R-1 的值接受操作,使其为只读类型 (三)冗余表达方式2—采用显式的冗余方式 用TR作为中间联系方法将二者显式相连 查询为二次查询,但管理方便 对R, R-1 的修改自然要遵照异常处理方式重定义VCO和做相应的隐藏 1:N 的二元 联系的实现 type Tleft is type Tright is type TR body body with extension is […… […… body R: { Tright }; R-1: Tleft; [left: Tleft ; ……] ……] right: Tright;] end type Tleft; end type Tright ; end type TR ; 方式(1) 方式(2) 方式(3) 其中唯有方式(2)能确保一致性约束,R-是单值的。 方式(1)(3)均不能确保两对象间1:N的约束。 对(1),必须重新定义R属性的值接受操作 对(3),必须对TR的对象实例库进行一致性维护,即TR的insert操作进行一致性维护 N:M的二元联系的实现 type Tleft is type Tright is type TR body body with extension is […… […… body R: {Tright }; R-1:{ Tleft }; [left: Tleft ; ……] ……] right: Tright;] end type Tleft; end type Tright;; end type TR ; 方式(1) 方式(2) 方式(3) 采用原则:以最大查询频率为依据选择入口点 可以采用组合冗余方法,但需要进行状态一致性维护 具有K个属性的二元联系的实现 1:1的

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档