PowerDesigner中的对象与关系映射建模
- 格式:doc
- 大小:219.00 KB
- 文档页数:8
PowerDesigner UML 建模简介引言PowerDesigner支持UML1.3的所有图包括用例图、序列图和类图、活动图表和组件图表等,并全面支持UML2.0。
改进了面向对象分析与设计(OOAD)分析方法并增强了与开发过程的集成。
PowerDesigner 能够帮助您构建适应现代IT 发展的传统商务和电子商务系统,使用Java 等面向对象的语言以及XML 等新技术,以物理或虚拟的方式与我们的数据库技术合并。
我们的目标是根据您的需求,提供随时随地访问信息、控制业务流程的能力,并通过计算机和最新技术赋予企业在当今任何市场上先拔头筹的竞争优势。
我们的分析方法和设计技术将会是多种多样的,从业务流程建模,到UML 面向对象分析和设计,以及传统的关系建模等。
本文将帮助您深入了解UML 这项强大的技术,它可以帮助您的企业创建出高效的传统商务和电子商务系统。
面向对象的分析在您准备为企业作出系统和软件投资前,必须首先了解企业的实际需求,明确所部署的技术将如何帮助您的企业获取更大的成功。
您可以使用UML,借助用例图、序列图和活动图来进行分析。
这些图表将帮助您规划系统的范围、动态性能、以及表现方式等。
不必考虑实施细节,您希望获得的只是按照您的需求而表现的系统性能。
用例图(The Use Case Diagram)UML 用例图提供了一个系统环境的建模方式。
它能够帮助您确定系统/应用程序的外部和内部元素以及系统范围。
作为图形建模模式,它在您需要与所收集的系统需求进行对话时也将有所帮助,对于研制成品的开发团队来说,更是有着举足轻重的重要性。
对于企业的所有者,或第一次接触该软件产品的用户也有很大的帮助作用。
用例图能够以可视化的方式,表达系统如何满足所收集的业务规则,以及特定的用户需求等信息。
在项目后期,也能够用到UML 用例图。
您可以通过用例图中定义的需求来协助测试项目的相关功能。
您不仅可以验证系统性能是否无错误(无崩溃或明显的非逻辑响应),还可以验证系统运行时是否按照要求,执行了指定命令。
第五章面向对象模型面向对象模型是利用UML(统一建模语言)来描述系统结构的模型,它从不同角度表现系统的工作状态。
以助于用户、管理人员、系统分析员、开发人员、测试人员和其它人员之间进行信息交流。
1 什么是OOM除了数据库建模之外;采用标准建模语言UML(统一建模语言),对企业应用系统从需求,分析与设计,实施等不同阶段的全面建模,也是目前的主流方式。
OOM是利用UML 来描述系统结构的模型。
在PowerDesigner中用户可以采用典型的面向对象分析方法,如用例驱动的软件分析与开发,即由需求模型出发,建立用例图,类图及其顺序图,进而组件与部件图。
同时,PowerDesigner是一个集成环境,各个模型之间可以快捷的模型同步与管理。
本章主要介绍用例图、类图和序列图。
2 如何创建OOM2.1创建OOM模型。
具体步骤如下:选择File → New Model命令,弹出New Model窗口,在左侧的Model Type栏中选择Object-Oriented Model选项,如下图所示:其中各个选项的含义如下:Object language 选择对象语言,包括C++、Java等Share the object language definition 共享目标对象语言描述文件Copy the object language definition in model 创建一个目标对象语言描述文件的副本First diagram 选择图形的类别,包括类图、用例图等工作空间2.22.3 模型属性等设置(1)Model → Model Properties命令,显示OOM的Model Properties窗口。
(2)设置模型的选项。
选择Tools → Model Options命令,打开Model Options窗口,如下图所示:3 设计用例图用例图用于系统需求分析阶段,进行系统需求和功能设计,它包含参与者和用例两个要素。
PowerDesigner面向对象模型PowerDesigner的面向对象模型(object-oriented model,OOM) 是利用UML (统一建模语言) 的图形来描述系统结构的模型,它从不同的角度来表现系统的工作状态。
在OOM中可以设计UML的所有图形,这些UML图形有助于系统分析人员、开发人员、测试人员、管理人员、用户以及其他人员之间进行信息交流。
其中,用例图、时序图和类图等共同组成了OOM的核心。
在本实验中,我们以Java语言为例,来说明使用PowerDesigner建立OOM的过程。
我们将重点讨论用例图、时序图和类图。
UML中包含的其他图形,读者可根据需要自行创建,在此不再赘述。
1. 用例图用例图(use case) 主要用于需求分析阶段,通常用来定义系统的高层次草图,进行系统需求分析和功能设计,它从用户的角度出发来描述应用系统的功能,指出了各个功能的外部操作者。
用例图中包含执行者、用例两个要素。
执行者是指用户在系统中的角色;用例是用户与计算机的一次交互。
用例图描述了每个用例将有哪些执行者参与。
图4-98显示了一个网上售书系统的用例图示例。
图4-98 网上售书系统用例图在该系统中,顾客首先连接到Web系统并填写所需要的检索条件;然后,Web系统开始检索数据库中提供的书目,并以列表形式提供给顾客;如果顾客确认,则发送相应的电子邮件;最后,系统处理顾客的电子邮件,销售人员通过销售系统完成销售活动。
(1) 定义用例用例是外部可见的一个系统功能单元,这些功能由系统单元提供,并通过一系列系统单元与一个或多个参与者之间交换的消息来表达。
用例的用途是在不涉及系统内部构造的情况下定义连贯的行为。
用例的定义包含用例所必需的所有行为、执行用例功能的主线次序、标准行为的不同变形、一般行为下的所有异常情况及其预期反应等。
例如在网上售书系统中,可以定义的用例包括:目录、查询、发送电子邮件和销售系统等。
(2) 定义角色角色描述了与系统相互作用的一组用户,最明显的角色是系统中的人,但也可能是系统本身。
在PowerDesigner中设计概念模型在概念模型中主要有以下几个操作和设置的对象:实体(Entity)、实体属性(Attribute)、实体标识(Identifiers)、关系(Relationship)、继承(Inheritance)、关联(Association)、关联连接(Association Link)。
实体实体就是我们抽象出的对象,比如:一个选课系统中,学生、教师、班级、课程等等都是实体。
实体属性就是一个实体中所包含的简单属性,比如学生实体,具有学号、姓名、生日、性别等属性。
另外实体还有个标识用于唯一的标识出每个实体实例,比如学生实体中就可用将学生的学号作为该实体的标识。
标识可用是一个实体属性也可以是多个属性的结合。
在PD中新建一个新的概念模型,系统将出现一个工具栏如下,用于在设计面板中设计模型。
单击Entity图标,然后在设计主面板中单击一次便可添加一个实体。
再单击鼠标图标,即可切换回一般鼠标的模式。
双击已经添加的实体,弹出实体属性设置对话框,在General中可以设置实体的Name和Code 等属性,如图所示:切换到Attributes选项卡可以设置实体的属性Name、Code、DataType等,右边还有3个复选框,M 表示不能为空,P表示是标识属性,D表示在模型图中是否显示,如果在设置属性时直接选中StudentID 的P复选框,系统将会自动生成该Student实体的一个Identifier。
如果不希望系统自动生成而是手动设置的话,那么切换到Identifiers选项卡,添加一行Identifier,然后单击左上角的“属性”按钮,然后弹出的标识属性设置对话框中单击“添加行”按钮,选择该标识中使用的属性。
例如将学号设置为学生实体的标识,具体操作如图所示:整个设置好的实体如图所示:关系关系用于表示一个实体与另外一个实体之间的对应关系,分为一对一(1:1),一对多(1:n),多对一(n:1),多对多(m:n)4种对应关系,一对多和多对一其实就是方向相反,所以实际上就是一对一、一对多和多对多。
PowerDesigner使用建议(完整版)用实体关系图进行数据库建模2009-11-04 17:371.Powerdesigner使用建议1.1业务规则的使用(Business Rule)对于一些业务逻辑可能出现在多个数据表中,建议封装成Business Rule,这样便于业务逻辑的重新使用,也便于业务逻辑的维护。
为了便于维护业务逻辑,可以考虑将Business Rule和Domains 结合起来使用。
将业务Business Rule应用到Domains上,然后再把Domains应用到数据表的字段上。
例如:在拆迁项目中,拆迁业务部分,管理参数业务部分,房源业务部分,拆迁合同部分的数据表中都有楼层这个字段,因此先一个Business Rule,然后定义一个Domain,这样相应的数据表的字段就可以使用这个Domain了。
1.2.自定义数据类型(Domains)的使用oralce提供了一些内置的数据类型,但是用户也可以根据业务的需要,定义自定义的数据类型。
在自定义数据类型里面包装业务逻辑。
正如上面的房屋楼层,我们可以定义一个独立的数据类型(Domain)维护,然后在相关数据表的字段上使用这个自定义数据类型。
一般在定义自己的数据类型时候,可以在oracle基本类型上定义,然后可以加上一些standard check或者Business Rules。
比如:在拆迁项目中,面积类别这个字段在很多数据表都出现了,可以作为一个单独的数据类型类维护,定义一个” 面积类别” Domains(包含的种类有:0 --- 厅房面积,1 --- 使用面积,2 --- 单元面积,,3 --- 总建筑面积,4 --- 分摊面积)。
而且由于Powerdesigner 的提供关联作用,这样便于当业务逻辑发生了变动,能够很快查询出那些对象受到影响。
1.3序列号(Sequence)的使用在powersigner的模型里面定义一堆了Sequence,接下来的是要把他们和数据表的相关字段关联起来,特别是那些用于多个数据表字段的Sequence。
环境PowerDesigner 12.5Windows XP 中文版一、概念模型的重要性PowerDeigner是最强大、最优秀的数据建模工具,是Sybase公司最伟大的产品。
目前最新版本是12.5,从9一直用到现在,对PD的认识也是在逐步加深。
常常在工作中,看到大家用PD,都是用来建几个表,实际上是做PDM,上来就干这个,实际上,这么用PD,是对强悍的PD一种侮辱。
PD仅仅是这么玩的吗?数据库设计的步骤是什么,难道上来稍稍想一下就搞个pdm出来?下面简单回顾下大学课本里讲述的数据库设计的基本步骤:1、需求分析从系统需求中寻找一些概念性名词,并甄选,并对这些名词相关属性做了解,这部分是人工的,PD做不了什么。
2、概念结构设计针对甄选的名词进行分析,找出其中的关系(独立的、一对一、一对多、多对多、继承五种关系),并用E-R图描述出来,这是大学课本的做法。
在PD中,这个过程可以用CDM(概念模型)来描述,PDM中实体概念模型表示方式比E-R更清晰,更好。
3、逻辑结构设计实际上就是设计表的结构和表之间的主外关系等。
这部分在PD中对应的是PDM(物理模型),而PD中的物理模型一般都是直接从概念模型生成的。
也就是说,只要你做好概念模型,物理模型就可以自动生成。
当然,这种生成结果一般都需要做一些调整和优化。
4、物理结构设计有了PDM,数据库的物理设计将不费吹灰之力,直接可以从PDM导出各种数据库系统的建库脚本。
5、数据库的建立和测试这个过程也很简单,看看建库脚本的执行就知道了。
不合理了重新修改PDM,然后生成sql再来。
6、数据库运行和维护。
这个一般是DBA的事情了,比如时间长了,数据量大了,在某些列上加上索引,调优等等。
从中可以看到,一上来就建PDM,是不合理的。
实际上要求对概念模型有个透彻理解了才去做PDM,这种理解可以不画图,但至少是心中有图。
做CDM概念模型的好处是交流容易,全世界通用,谁看了都明白。
PowerDesigner(数据建模)使⽤⼤全什么是PowerDesigner引⼊百度百科的说法是:power designer是能进⾏数据库设计的强⼤的软件,是⼀款开发⼈员常⽤的⼯具。
使⽤它可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进⾏设计。
在这⾥,概念数据模型描述的是独⽴于(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对⽬标数据库管理系统的具体化。
在这⾥有必要强调下什么是数据模型呢?数据模型是现实世界中数据特征的抽象。
数据模型应该满⾜三个⽅⾯的要求:1)能够⽐较真实地模拟现实世界2)容易为⼈所理解3)便于计算机实现恩?什么⿁,还是不懂~继续看概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这⼀理论进⾏了扩充。
它从⽤户的观点出发对信息进⾏建模,主要⽤于数据库的概念级设计。
通常⼈们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。
换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个DBMS所⽀持的数据模型,这样的模型就是物理数据模型,即PDM可以帮我们做哪些事㈠设计类图㈡使⽤PowerDesigner设计数据库关系以后,可以⽣成HTML,供团队成员进⾏讨论。
㈢使⽤PowerDesigner进⾏⾯向对象分析与UML建模动态模型动态图包括:状态图(Statechart Diagram)、顺序图(Sequence Diagram)、协作图(Collaboration Diagram)和活动图(Activity Diagram)。
状态图:描述系统元素的状态变化。
P o w e r D e s i g n e r U M L建模简介(一)作者:Sybase, Inc. PowerDesigner 产品经理 David DichmannPowerDesigner支持UML1.3的所有图包括用例图、序列图和类图、活动图表和组件图表等,并全面支持UML2.0。
改进了面向对象分析与设计(OOAD)分析方法并增强了与开发过程的集成。
PowerDesigner 能够帮助您构建适应现代 IT 发展的传统商务和电子商务系统,使用Java 等面向对象的语言以及XML 等新技术,以物理或虚拟的方式与我们的数据库技术合并。
我们的目标是根据您的需求,提供随时随地访问信息、控制业务流程的能力,并通过计算机和最新技术赋予企业在当今任何市场上先拔头筹的竞争优势。
我们的分析方法和设计技术将会是多种多样的,从业务流程建模,到 UML 面向对象分析和设计,以及传统的关系建模等。
本文将帮助您深入了解UML这项强大的技术,它可以帮助您的企业创建出高效的传统商务和电子商务系统。
面向对象的分析在您准备为企业作出系统和软件投资前,必须首先了解企业的实际需求,明确所部署的技术将如何帮助您的企业获取更大的成功。
您可以使用UML,借助用例图、序列图和活动图来进行分析。
这些图表将帮助您规划系统的范围、动态性能、以及表现方式等。
不必考虑实施细节,您希望获得的只是按照您的需求而表现的系统性能。
用例图(The Use Case Diagram)UML 用例图提供了一个系统环境的建模方式。
它能够帮助您确定系统/应用程序的外部和内部元素以及系统范围。
作为图形建模模式,它在您需要与所收集的系统需求进行对话时也将有所帮助,对于研制成品的开发团队来说,更是有着举足轻重的重要性。
对于企业的所有者,或第一次接触该软件产品的用户也有很大的帮助作用。
用例图能够以可视化的方式,表达系统如何满足所收集的业务规则,以及特定的用户需求等信息。
第一讲PowerDesigner概述【知识要点】1.PowerDesigner简介2.PowerDesigner功能模块组成3.PowerDesigner提供的模型支持4.PowerDesigner界面说明5.PowerDesigner操作方式【逐点讲解】一、PowerDesigner简介Sybase PowerDesigner是Gartner评出的2004年全球排名第一的数据库建模工具,是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
目前PowerDesigner支持60多种数据库及其不同版本,主要的数据仓库以及数据分析工具(OLAP)等。
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制PowerDesigner融合了几种标准建模技术:传统数据库建模、使用UML的应用程序建模和业务流程建模,而且支持主流应用程序开发平台(如Java J2EE、Mocriosoft .NET、Web Services和PowerBuilder、Eclipse等)以及流程执行语言(如ebXML和BPEL4WS),它可与许多流行的数据库设计软件,例如:PowerBuilder,Delphi,VB 等相配合使用来缩短开发时间和使系统设计更优化。
目前各主要的建模工具厂商如Sybse PowerDesigner, IBM Rational Rose, Computer Associates的ERWin等都在加强各自建模工具的融合与集成。
PowerDesigner经过近20年的发展,已经在原有的数据建模的基础上,形成一套完整的集成化企业级建模解决方案。
二、PowerDesigner功能模块组成PowerDesigner 主要包括以下几个功能部分:1.DataArchitect这是一个强大的数据库设计工具,使用DataArchitect 可利用实体-关系图为一个信息系统创建"概念数据模型"-CDM(Conceptual Data Model)。
Powerdesigner数据库建模PowerDesigner建立概念数据模型 CDM数据模型是现实世界中数据特征的抽象。
数据模型应该满足三个方面的要求:1)能够比较真实地模拟现实世界2)容易为人所理解3)便于计算机实现概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。
它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。
通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。
换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM 转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。
CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动态特性以及完整性约束条件等,其中包括了数据结构、数据操作和完整性约束三部分。
1)数据结构表达为实体和属性;2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作;3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等);一、新建概念数据模型1.建立模型选择File-->New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型。
2.完成概念数据模型的创建。
以下图示,对当前的工作空间进行简单介绍。
3.设置模型属性选择新增的CDM模型,右击,在弹出的菜单中选择“Properties”属性项,弹出如图所示对话框。
在“General”标签里可以输入所建模型的名称、代码、描述、创建者、版本以及默认的图表等等信息。
在“Notes”标签里可以输入相关描述及说明信息。
二、创建实体1. 添加实体1)在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。
PowerDesigner的7种建模⽂件1. 概念数据模型 (CDM)对数据和信息进⾏建模,利⽤实体-关系图(E-R图)的形式组织数据,检验数据设计的有效性和合理性。
2. 逻辑数据模型 (LDM)PowerDesigner 15 新增的模型。
逻辑模型是概念模型的延伸,表⽰概念之间的逻辑次序,是⼀个属于⽅法层次的模型。
具体来说,逻辑模型中⼀⽅⾯显⽰了实体、实体的属性和实体之间的关系,另⼀⽅⾯⼜将继承、实体关系中的引⽤等在实体的属性中进⾏展⽰。
逻辑模型介于概念模型和物理模型之间,具有物理模型⽅⾯的特性,在概念模型中的多对多关系,在逻辑模型中将会以增加中间实体的⼀对多关系的⽅式来实现。
逻辑模型主要是使得整个概念模型更易于理解,同时⼜不依赖于具体的数据库实现,使⽤逻辑模型可以⽣成针对具体数据库管理系统的物理模型。
逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来⽣成物理模型。
3. 物理数据模型 (PDM)基于特定DBMS,在概念数据模型、逻辑数据模型的基础上进⾏设计。
由物理数据模型⽣成数据库,或对数据库进⾏逆向⼯程得到物理数据模型。
4. ⾯向对象模型 (OOM)包含UML常见的所有的图形:类图、对象图、包图、⽤例图、时序图、协作图、交互图、活动图、状态图、组件图、复合结构图、部署图(配置图)。
OOM 本质上是软件系统的⼀个静态的概念模型。
5. 业务程序模型 (BPM)BPM 描述业务的各种不同内在任务和内在流程,⽽且客户如何以这些任务和流程互相影响。
BPM 是从业务合伙⼈的观点来看业务逻辑和规则的概念模型,使⽤⼀个图表描述程序,流程,信息和合作协议之间的交互作⽤。
6. 信息流模型(ILM)ILM是⼀个⾼层的信息流模型,主要⽤于分布式数据库之间的数据复制。
7. 企业架构模型(EAM):从业务层、应⽤层以及技术层的对企业的体系架构进⾏全⽅⾯的描述。
包括:组织结构图、业务通信图、进程图、城市规划图、应⽤架构图、⾯向服务图、技术基础框架图。
《UML》教案PowerDesigner 面向对象模型《实战项目训练》教案 (1)UML示例...........................................................................................................错误!未定义书签。
1.面向对象模型 (1)2.动态模型 (19)授课教师:李祥课时:90分钟1.面向对象模型面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态。
这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交流。
1)选择File-New Mode命令或者单击工具栏中的New Mode图标,弹出New Mode窗口2)在左侧是Mode type栏中选择Object-Oriented Model(面向对象模型)选项,在右侧输入模型名称,语言,如下图所示:注:静态图包括:用例图(Use Case Diagram)、类图(Class Diagram)、对象图(Object Diagram)、组件图(Component Diagram)和部署图(Deployment Diagram)。
动态图包括:状态图(Statechart Diagram)、顺序图(Sequence Diagram)、协作图(Collaboration Diagram)和活动图(Activity Diagram)。
a)Class Diagram:类图b)Object Diagram:对象图类图和对象图:用来定义类和对象以及它们的属性和操作。
c)User Case Diagram:用例图主要用来描述系统的外部行为;d)Sequence Diagram:顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。
e)Component Diagram:组件图f)Deployment Diagram:部署图组件图和部署图:描述实现系统的元素组织和系统环境元素的配置。
PowerDesigner中的对象与关系映射建模Sybase 公司PowerDesigner上海研发中心余亚,王晓昀概述从80年代中期开始,随着C++语言的成功,面向对象语言已经成为软件开发中的主导语言。
现在很多商用软件,尤其是企业信息系统,都是使用面向对象语言进行开发的。
应用面向对象方法,我们通过类来抽象不同类别的实体,属性来表示实体的静态特征,关联来抽象实体间的联系,继承来抽象类别的包含关系。
很多的应用程序都需要进行数据存储,关系型数据库是最常用的数据管理系统。
在关系型数据库中,表、列和外键是抽象数据的基本元素。
关系型数据库是建立在关系计算和布尔代数基础之上的,SQL是数据库的操作语言,通过关系运算,连接、联合等,来操作数据。
我们很容易的看出,面向对象模型和关系模型是不完全匹配的。
比如1. 对象可以存储到多张表,表也可以存储多个类的对象。
2. 对象之间的关系是双向的,而表之间的关系是单向的。
3. 对象之间有继承关系,表之间没有。
为了解决这种不匹配,人们定义了很多映射模式来建立两种模型间的对应关系。
这些映射模式逻辑上解决了模型间的不匹配,使得面向对象程序能够正确地和关系关系型数据库进行交互,但是对于程序的开发,仍然有很多问题需要解决。
问题对于设计人员来说,他们需要找到并且描述这两种模型元素间的映射关系,以便编程人员能够正确地实现数据的存储和查询。
现在很多建模工具仅提供其中一种模型的支持,比如Together仅支持对象建模,ERWin仅支持数据建模。
即使同时支持两种模型,这种支持也很不完整,比如Rose中的数据建模功能。
分析设计人员常常需要两种不同的工具来进行建模,如果他们想描述这两种模型元素间的对应关系,他们只能通过文档或者表格的形式。
这很容易产生错误,并且如果模型发生改变,这些文档需要手工更改,容易造成不一致,维护起来很困难。
对于编码人员,他们需要应用某种技术来实现模型的这种对应关系。
如果通过语言提供的数据库访问接口,比如Java 的JDBC或者.Net的,对于每一个对象的每一个存储操作,编码人员需要编写存取操作的SQL,数据库控制和访问代码,这是一项繁琐、重复性的劳动。
即使应用O/R 映射的框架,比如Hibernate, EJB 3.0或者.Net平台的NHibernate,他们需要编写映射文件或者通过标记来定义O/R映射框架所需要的映射元数据。
这些映射元数据只不过是我们在设计阶段定义的映射关系另外一种表现方式,转换成XML或者标记的方式,无疑这种转换增加了错误的可能性和维护的难度。
PowerDesigner解决之道PowerDesigner提供对于多达8种模型的支持,其中包括面向对象模型和关系数据模型。
作为一个集成的企业建模工具,PowerDesigner并不是简单的将几种模型工具罗列在一起。
各种模型相互之间可以建立关联,通过这种关联,它提供了企业模型统一、一致的视图。
其中模型间的映射和自动生成是建立模型间关联重要的手段。
模型可以描述系统的静态特征和动态特征,而静态特征可以用来表述系统的持久状态,比如面向对象模型中的实体类,数据库模型的表,XML模型中的元素节点等。
在PowerDesigner中,我们可以在各种可以描述持久状态模型间建立映射,比如XML模型到面向对象模型间的映射,面向对象模型到关系数据模型的映射等。
下面我们就来看一下,PowerDesigner 是如何支持面向对象模型到关系模型的映射的。
1.1 对象/关系映射下表列出了PowerDesigner中面向对象元素和关系模型元素间的对应关系:OOM 元素PDM 元素域域类表接口无属性列标识符键操作(具有存储过程范型)存储过程操作(具有存储功能范型)存储功能关联外键或者表关联类表和两个指向关联的类所生成表的外键继承表或者外键依赖无实现无引用无在PowerDesigner中,我们可以通过三种方式来建立面向对象模型和关系模型间的映射:1. 手工建立映射。
2. 自动模型生成。
它们分别适用于不同的开发需求,下面我们就来看如何通过这两种方式来建立映射。
1.2 手工建立映射这种方式适用于以下几种情况:1. 在已经存在的模型间建立映射。
企业的信息系统是一个异构的环境,很多应用程序和数据库都是独立开发的,它们具有不同的模型,如果它们之间需要进行数据交互,则需要建立它们之间的映射,比如新的ERP系统中和企业原有的数据库间的映射。
2. 数据库和程序由不同的组负责设计。
大型的企业应用程序可能包含很多业务子系统,每个业务子系统只考虑如何实现它自己的业务需求,而数据库设计要从整体出发,考虑整个应用程序的需求。
对于每个业务模块,需要定义它的逻辑模型和数据库模型间的映射。
在建立映射之前,我们需要给面向对象模型创建数据源,然后添加要映射的数据库模型。
表1中可以映射的面向对象元素都有一个映射的定义窗口,比如下图所示的类的映射属性页。
通过这个映射属性页,用户可以添加或者删除对应的数据库模型元素,这些元素只能是表1中该元素对应的类型。
像其他模型的元数据一样,PowerDesigner会把映射元数据存储在模型中,映射元数据通过快捷方式来记录对应的模型元素。
如果对应的模型发生改变,比如表的名称发生改变,对于映射元数据没有影响。
当用户需要得到对应元数据的属性的时候,PowerDesigner会解析快捷方式,找到目标元素,用户得到的是当前元素的信息,对比于文档或者表格,这种方式提高了一致性和可维护性。
而且PowerDesigner提供了变更影响分析视图,它可以帮助用户在变更之前分析可能产生的影响,比如在改变列的类型之前,用户可以了解到是否会造成映射到此列的属性类型的不匹配。
也许用户认为这种操作方式太复杂,用户需要切换到每个面向对象的窗口来定义它的映射。
从PowerDesigner 12开始,用户可以通过另外一种更加便捷的方式,映射编辑器,来定义元素间的映射关系。
映射编辑器提供了一种All-In-One的操作方式,通过元模型和目标模型的树状视图,用户可以方便的通过托拽的方式来定义所有的映射。
1.3 模型自动生成在很多时候我们要开发一个全新的系统,而数据库仅仅考虑这个系统的数据管理需求,或者开发新的应用程序访问已有的数据库。
采用面向对象方法的软件开发通常采用自顶向下的开发过程,先建立企业的应用模型,然后再进行数据库设计。
用户也可以采用自底向上的开发过程,也就是以数据为中心的开发过程,先进行数据库设计,或者应用已有的数据库模型,再设计应用程序模型。
既然我们定义了模型间映射模式,如果有了一种模型,为什么不能自动生成另外一模型,并且建立它们间的映射。
PowerDesigner就提供了这种模型的自动生成功能,使得用户能够重用现有的模型,方便的生成目标模型。
对于面向对象模型和数据库模型来说,这种自动生成功能是双向的,即可以通过面向对象模型来生成数据库模型,也可以通过数据库模型来生成面向对象模型。
1.3.1 自动生成数据库模型这种模式适合于自顶向下的开发过程,即先建立应用程序模型,再设计数据库。
我们可以应用PowerDesigner提供的转换模式,将应用程序模型中描述持久信息的面向对象元素,实体类、关联、继承,生成数据库模型对应的元素。
根据已经被证明的映射模式,PowerDesigner提供了一些缺省的转换模式,用户也可以定制转换模式来控制生成过程1.3.1.1 基本转换模式1. 类用户可以通过类的持久属性和生成类型来控制类的自动转换,PowerDesigner仅会自动转换持久的类。
转换的类型有表、迁移列和抽象数据类型,其中表和抽象数据类型都容易理解,迁移列主要控制继承中类的转换,我们会在继承转换中详细讨论它的用法。
用户还可以指定生成表的名称。
2. 属性如果持久类的生成类型不是抽象数据类型,PowerDesigner会将该类中的持久属性转换成表的列。
PowerDesigner提供了一些缺省的转换模式,比如数据类型的对应关系。
用户可以定制转换的过程,他可以定义生成列的一些属性,名称、类型、长度等。
3. 标识符持久类的标识符会被转换成表的键,主标识符会被转换成主键。
4. 操作如果持久类的操作具有存储过程或者存储函数的范型,相应的存储过程或者存储函数会被生成。
1.3.1.2 关联转换PowerDesigner会根据关联生成外键和表,支持所有的关联映射模式。
关联转换规则一对一对于单向的关联,一个外键会生成,外键的方向和关联的方向一致,父表的主键会迁移到子表中作为外键。
对于双向的关联,两个外键会被生成,用户需要手动删除其中的一个一对多不管单项还是双向,只有一个外键被生成,多端持久类生成的表为子表,父表的主键会迁移到子表中作为外键一对多迁移主键这是一对多关联的变体,如果一对多关联具有组合并且由一端包含多端,那么被迁移到子表的列同时又会是主键的一部分多对多会生成一个中间关联表和两个外键,其中两端持久类的表的主键会迁移到关联表中作为主键和外键,两个外键由中间关联表分别指向它们用户可以通过端点的度来控制外键是否为必需的,如果子表对应的持久类端的最小度为1,那么外键为必需的,即子表的外键列是非空的;如果为0,那么外键为可选的。
1.3.1.3 继承转换PowerDesigner会将继承转换成表和关联,用户通过基本映射中提到的生成类型来控制转换,生成类型表表示对于该持久类单独的表会生成,生成类型迁移列表示该类属性生成的列会存在于其他类生成的表中,没有单独的表会被生成。
映射模式说明设定继承层次到单表映射整个继承层次会被转换成一张表,通过表中的分类列来区分不同的类根类生成类型为表,其他所有子类的生成类型为迁移列,根类需要设置主标识符每类一表映射对于继承层次中的每一个类,单独的表会被生成,子类的表和父类的表通过外键关联,外键的列同时作为子类表的主键所有类的生成类型为表,根类需要设置主标识符每具体类一表映射只有继承层次中的叶子节点类会被转换成表,每一个非叶子节点类属性生成的列会被迁移到叶子类的表所有非叶子节点子类的生成类型为迁移列,叶子节点的生成类型为表,根类需要设置主标识符PowerDesigner也支持混合映射模式的转换,不过这种转换并不常用,用户可以参考PowerDesigner的文档查看详细用法。
1.3.1.4 其他映射模式的支持PowerDesigner还可以通过嵌入来支持细粒度的转换。
比如,在员工信息类中,我们有一个属性家庭住址,该属性是对象类型,类型为地址类。
我们不想为地址类单独生成表,只想把它嵌入到员工信息表中。
在PowerDesigner中,我们可以通过,设置属性的类生成类型为嵌入来实现这一点。
1.3.2 自动生成面向对象模型PDM到OOM的转换适合于自底向上的开发过程,对于以数据为中心的应用系统或者访问已有数据库上的应用系统,这种转换是非常有用的。