PowerDesigner中的对象与关系映射建模(20210215090221)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PowerDesigner中的对象与关系映射建模
Sybase公司PowerDesigner.上海研发中心余亚,土晓旳
概述
从80年代中期开始,随着C++语言的成功,面向对象语言已经成为软件开发中的主导语言。现在很多商用软件,尤其是企业信息系统,都是使用而向对象语言进行开发的。应用而向对彖方法,我们通过类来抽彖不同类别的实体,屈性来表示实体的静态特征,关联来抽象实体间的联系,继承来抽象类别的包含关系。
很多的应用程序都需耍进行数据存储,关系型数据库是放常用的数据管理系统。在关系型数据库屮,表.列和外键是抽象数据的基木元索。关系型数据库是建立在关系计算和布尔代数基础之上的,SQL是数据库的操作语言,通过关系运算,连接、联合等,來操作数据。
我们很容易的看出,面向对象模型和关系模型是不完全匹配的。比如
1.对象叮以存储到多张表,表也可以存储多个类的对彖。
2.对彖Z间的关系是双向的,而表之间的关系是单向的。
3.对象Z间有继承关系,表Z间没有。
为了解决这种不匹配,人们定义了很多映射模式来建立两种模型间的对应关系。这些映射模式逻辑上解决了模型间的不匹配,使得面向对象程序能够正确地和关系关系型数拥库进行交互,但是对于程序的开发,仍然冇很多问题碍耍解决。
问题
对于设计人员來说,他们需耍找到并且描述这两种模型元索间的映射关系,以便编程人员能够世确地实现数据的存储和查询。现在很多建模工貝仅捉供其屮一种模型的支持,比如Together仅支持对象建模.ERWin仅支持数据建模。即使同时支持两种模型,这种支持也很不完整,比如Rose中的数据建模功能。分析设计人员常常需耍两种不同的工具来进行建模,如果他们想描述这两种模型元素间的对应关系.他们只能通过文档或者表格的形式。这很容易产生错误•并目•如果模型发生改变,这些文档需要手工更改,容易造成不一致,维护起來很闲难。
对于编码人员,他们需耍应用某种技术来实现模型的这种对应关系。如果通过语言捉供的数据库访问接「1,比如Java的JDBC或者.Net"勺ADO. Net,对于每一个对彖的毎一个存储操作,编码人员需耍编写存取操作的SQL,数据咋控制和访问代码,这是一项繁琐、巫复性的劳动。即使应用O/R映射的框架,比如Hibernate,
EJB 3.0或者.Net平台的NHibcmatc,他们需要编写映射文件或者通过标记來定义O/R映射框架所需要的映射元数据。这些映射元数据只不过是我们在设计阶段定义的映射关系另外一种表现方式.转换成XML或者标记的方式,无疑这种转换増加了错误的可能性和维护的难度。
PowerDesigner 解决之道
PowerDesigner提供对于多达8种模塑的支持,其屮包J5面向对象模塑和关系数据榄型。作为一个集成的企业建榄匸具,PowerDesigner并不是简单的将儿种模型工具罗列在一起。各种模型相互Z间可以建立关联,通过这种关联,它提供了企业模型统一、一致的视图。其屮模盘间的映射和白动生成是建立模型间关联重要的手段。
模型可以描述系统的静态特征和动态特征,而静态特征对以用來表述系统的持久状态,比如面向对彖模型屮的实体类,数据康模型的表,XML模世中的元索节点等。在PowerDesigner中,我们可以在各种可以描述持久状态模世间建立映射,比如XML模型到而向对象模型间的映射,面向对彖模型到关系数据模型的映射等。下面我们就來看一
下.PowerDesigner是如何支持面向对彖模型到关系模型的映射的。
1.1对象/关系映射
下表列出了PowerDesigner中面向对象元索和关系模型元索间的对应关系:
在PowerDesigner中,我们可以通过三种方式来建立面向对象模型和关系模型间的映射:
1.手工建立映射。
2.口动模型生成。
它们分别适川于不同的开发需求,下面我们就来看如何通过这两种方式来建立映射。
1・2手工建立映射
这种方式适用于以下几种情况:
1.在已经存在的模型间建立映射。企业的信息系统是一个界构的环境,很多应用
程序和数据库都是独立开发的,它们具有不同的模型,如果它们Z间盂要进行
数据交互,则盂要建立它们Z间的映射,比如新的ERP 系统中和企业原冇的数
据库间的映射。
2.数据库和程序由不同的组负责设计。大型的企业应川程序可能包含很多业务子
系统,每个业务了系统只考虑如何实现它自C的业务需求,而数据库设计要从
整体出发,考虑整个应用程序的需求。对于每个业务模块,需要定义它的逻辑
模型和数据库模型间的映射。
在建立映射之前,我们需要给面向对象模型创建数据源,然后添加要映射的数据库模型。表1中可以映射的而向对彖元素都有个映射的定义窗口,比如下图所示的类的映射属性页。通过这个映射属性页,川户可以添加或者删除对应的数据库模型元索,这些元索只能是表1中该元索对应的类型。
像其他模型的元数抓-•样,PowerDesigner会把映射元数据存储在模型中,映射元数据通过快捷方式來记录对应的模型元索。如果対应的模型发牛改变,比如农的名称发生改变,对于映射元数据没冇影响。当川户需要得到对应元数据的属性的时候,PowerDesigner会解析快捷方式,找到目标元素,用户得到的是当前元素的信息.对比于文档或者表格•这种方式提高了一致性和可维护性。血且PowerDesigner提供了变更影响分析视图,它可以帮助川户在变更之前分析可能产生的影响,比如在改变列的类型Z前,用户可以了解到是否会造成映射到此列的加性类型的不匹配。
也许川户认为这种操作方式太复朵,川户需要切换到毎个面向对象的窗口来定义它的映
射。从PowerDesigner 12开始,用户町以通过另外一种史加便捷的方式,映射编辑器,来定义元索间的映射关系。映射编辑器提供了一种All-In-One的操作方式,通过元模型和目标模型的树状视图,用户可以方便的通过托拽的方式来定义所冇的映射。
1・3模型自动生成1 |T I
在很多时候我们要开发一个全新的系统,而数据席仅仅考虑这个系统的数据管理需求,或者开发新的应川程序访问已冇的数据库。采用面向对象方法的软件开发通常采用自顶向下的开发过程,先建立企业的应用模型,然厉再进行数据库设计。用户也可以采川口底向上的开发过程,也就是以数据为屮心的开发过程,先进行数据库设计,或者应用己有的数据库模型,再设计应川程序模型。
既然我们定义了模型间映射模式,如杲冇了一种模型,为什么不能自动生成另外一模型,并h建立它们间的映射。PowerDesigner就提供了这种模型的自动生成功能,使得川户能够重川现有的模型,方便的生成II标模型。対于面向对象模型和数据库模烈來说,这种自动生成功能是双向的,即町以通过面向对彖模型來生成数据库模型.也口J以通过数据库模型來生成面向对彖模型。
1.3.1 h动牛•成数据库模型这种模式适合于自顶向下的开发过程,即先建立应用程序模型,再设计数据库。我们可以应用PowerDesigner提供的转换模式,将应用程序模型中描述持久信息的面向对彖元素,实体类、关联、继承.生成数据库模型对应的元素。
根据已经被证明的映射模式,PowerDesigner提供了一些缺省的转换模式,用户也可以定制转换模式來控制生成过程
1.3.1.1基本转换模式
1.类
用户可以通过类的持久属性和生成类型來控制类的白动转换,PowerDesigner仅会自动转