- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象模型与关系模型映射设计理念研究
对象模型与关系模型映射设计理念研究
【摘要】在现在的软件系统中,大多数都使用了关系数据库系统和面向对象的程序设计语言,因此必须建立对象模型和关系模型。对象模型和关系模型之间存在阻抗匹配的问题。本文详细论述了两个模型之间的映射方法,并对现实中存在的几种映射工具做了简单介绍。
【关键词】对象模型 关系模型 映射
一、引言
在现在的软件系统中,大多数都使用了关系数据库系统,要建立关系模型。而现在的软件系统基本上都是使用面向对象的程序设计语言进行设计的,因此要建立对象模型。那么,在系统分析与设计时必须同时考虑对象模型与关系模型的设计,同时还要考虑接口转换组件的选用与设计,这样设计出的系统在各方面的性能才能达到最优。因此,在系统分析与设计时,对象模型与关系模型的关系应当可以很好地的映射是软件系统设计中很重要的一个设计理念。
二、设计理念
1、对象模型的关系
对象模型的关系有以下几种:
⑴继承
大家都用过面向对象的语言,都应该知道。
⑵关联
它使一个类指到另一个类的属性,是长期的关系。
⑶聚合
聚合关系是关联关系的一种,是很强的关联关系。聚合是整体和部分之间的关系。
⑷组合
组合关系也叫“合成关系”。组成关系是关联关系的一种,是比聚合关系强的关系。对象负责代表部分的对象的生命周期。
现在有一个问题:既然聚合、组合关系属于关联关系,那么如何区分一般关联关系、聚合关系和组合关系呢?下面进一步分析:
一般关联:只要一个对象联系到另外一个对象就形成了关联关系,如人和他的狗。
聚合关系:它是一种强关联关系。它要求有部分和整体的关系,并且没有了整体部分也可以独立存在。比如:在上面例子中,人和他的狗显然没有部分和整体的关系,所以只能是一般的关联关系。而公司和公司的一个员工则是整体和部分的关系。公司的一个员工脱离了公司(更或者公司不存在了),这个员工仍然存在(即对象仍然可以独立存在),所以它属于聚合关系。组成关系是可以共享的(公司的一个员工也可以加入其他公司)。
组合关系:一种更强的整体和部分的关系。它并且要求代表整体的对象负责代表部分的对象的生命周期。组成关系是不能共享的,如PC机和显示器的关系。
需求确定聚合与组合关系:如果两个实体是整体和部分的关系,那么它们到底是聚合还是组合,这取决于你的需求。比如PC机和显示器的关系:如果在你的系统中,显示器脱离了PC机就不存在意义了,也可以说所有显示器的访问都是通过PC机进行的。那么,你可以把关系设定为组合;如果你的显示器脱离了PC机仍然可以独立存在,也就是说在系统中可以直接访问显示器对象,那么你可以将关系设为聚合。
2、关系模型的关系
关系模型有这样几种关系:一对一、一对多、多对一、多对多。它们在任何一本关系数据库的教材中都有详细论述,本文就不做详细介绍了。
3、对象模型与关系模型比较
对象模型与关系模型的比较见表一:
由此表可以看出,对象模型与关系模型之间存在着匹配的问题,很多论文的作者称之为“阻抗匹配”问题。因此,下面详细介绍如何匹配的设计理念。
4、设计理念
⑴继承
对于继承关系,一般有三种策略:
策略1:继承树的每个类对应一个表,共享主键――单表法。这与面向对象的概念具有一致性,支持多态,易于修改基类和增加新的类。但数据库中存在大量的关系表,加上表间的关联较多,会降低数据访问效率。
策略2 :继承树的根类对应一个表,需要添加一个识别字段――合并法。合并法实现继承关系映射的优点是实现简单、操作方便,缺点是会产生大量的数据冗余。
策略3:继承树的叶子类对应一个表,不支持多态查询――分解法。分解法的表中包含了具体子类的所有信息,操作实现简单,但超类的修改会导致相对应的表及其子类所对应表的更改,这会增加保持数据的完整性的复杂性。
⑵关联
①一对一
一般有两种策略:
策略1:唯一的外键
Unique=“true”(唯一的外键)
策略2:共享主键
(既是主键又是外键)
注意:HBM中生成方式需要用foreign。
②一对多
在“多”的一边产生一个外部键。
③多对一
在“多”的一边产生一个外部键。
④多对多
策略1:A、B表多对多的关系需要引入C表
C表中的所有属性即为主键又为外键,分别参照A、B两表。C表中不可以有其他属性。
策略2:将多对多拆分成两个一对多
A、B对象多对多的关系需要引入C对象,使得A、B两对象与C对象的关系为一对多。对应数据库中:A、B表多对多的关系需要引入C表;A、B
文档评论(0)