用SybasePowerDesigner9.5的PDM和PowerBuilder8进行协作开发2004.03bylostinwind引言:关于本文的一些说明本文介绍Sybase公司的建模工具PowerDesigner9.5(以下简称PD95)中的PDM(PhysicalDataModel物理数据建模)功能和Sybase公司的RAD工具PowerBuilder8(以下简称PB8)如何进行协作开发,使得广大PB编程人员再进行数据库应用开发的时候能够进一步提升开发效率和管理水平。由于本人的知识和实际经验所限,本文只介绍在用PB8进行C/S结构项目设计的时候,如何用PD95来进行辅助数据库设计。本文的读者应该具有一定的PB编程经验。由于PD95是英文版的,为了保持原味我没有安装PD95的汉化包。第一部分:PD95简介PowerDesigner是Sybase出品的一款软件建模工具,也就是时下流行的所谓UML的实现,是和RationalRose,Together等差不多的软件。不过,现在看到建模的书几乎都是用Rose作为范本,很少看到PD的介绍。但是,如果你是一名用PB进行项目开发的人,那么你就有必要了解PD,并至少掌握其中的PDM部分,因为根据我的使用经验,PD95的PDM和PB8结合的实在太好了,毕竟是一家公司的产品啊。PD95中能够做的事有以下几个:BusinessProcessModel(业务处理模型,简称BPM)Object-OrientedModel(面向对象模型,简称OOM)ConceptualDataModel(概念数据模型,简称CDM)PhysicalDataModel(物理数据模型,简称PDM)Multi-ModelReport(多模型报告)FreeModel(自由模型)说实话,我只用PD95来进行PDM实在有些大材小用,大家应该一眼就能看出PD95可是一款真材实料的面向对象分析与建模工具。废话少说,下面的第二部分就进入正题了。第二部分:新建PDM要PDM,首先得建立WorkSpace——即所谓的“工作空间”,所有其他一切东西(如:CDM、PDM等)都要放在WorkSpace中。第一次运行PD95的时候,默认的状态如下图:页码,1/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn这时候默认已经新建了一个WorkSpace,我们只要右键WorkSpace,然后在菜单中选择New-PhysicalDataModel,或是通过菜单上的File-New来新建,如下图:选择新建PDM后我们会看到如下图的界面:我们需要确定后台数据库的类型(DBMS),本文的例子是基于MSSQLServer2000简体中文企业版,General页面上的其他选项保持默认值就可以了。ExtendedModelDefinitions页面如下图:在ExtendedModelDefinitions页面我们要选择PowerBuilder,这样PDM在生成数据库时就可以和PB进行协作,这是让PD和PB协作数据库设计的关键。如果在新建的时候不选择,我还没有找到可以后期加入的方法。其他的选项值保持默认。第三部分:ExtendedModelDefinitions的设置介绍按确定后就进入了PDM的设计环境了,在PD的左边是一个Browser,可以通过View-Browser来控制显示或不显示。Browser中是个树,根是WorkSpace,下面我们展开Extended页码,2/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cnModelDefinitions双击其中的PowerBuilder节点,在窗口中大家把节点展开成如下图的样子:看到这里,熟悉PB的朋友是否看出了点什么呢?再来看看PB的数据表设置窗口:页码,3/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn是否觉得这里的很多设置都可以和PB中的数据库定义界面中的内容对应起来?的确就是这样,所以我说PD和PB结合的太好了。再看看:页码,4/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cnPD中的DataFont、HeaderFont、LabelFont和PB中是一一对应的,开始觉得PD可爱了吧。其实,写道这里大家或许已经明白了个大概,心急的朋友说不定已经自己一路探索下去了,建议大家可以自己试试,然后回来再看本文。后面很多设置都是和PB相关的,大家不心急的话就看下去。请大家把窗口中的节点展开成如下图的样子:页码,5/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn上图中的Defaultvalue值要设置为“%Name%”,至于为什么后面再说。再看看PB的相关界面:页码,6/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn明白了吧,PD中这里的设置和PB中对字段的设置是一一对应的。页码,7/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn上图中的Defaultvalue值有三种选择:23、24、25分别对应PB中的左对齐、右对齐和居中。这一点我觉得很奇怪,至今没理解,不过先用着再说。为什么我一上来就给大家讲这么多关于ExtendedModelDefinitions的设置,那是因为这些设置是默认的,全局的,也就是说你PDM出来的数据模型在进行数据库生成的时候会受这些设置的影响。接下来就要讲述如何在PDM中建立一个表。第四部分:在PDM中建表右键“PhysicalDataModel”,在菜单中选New-Table就可以新建一个表,不过,我更喜欢从工具面板上拖放Table控件来见表,工具面板如下图:需要说明的是,在PD中单击右键是放弃的意思,有点像按ESC键。可以在PD右边的很大的一个空白区中看到一个绿底色蓝边框的Table控件(这个很大的空白区域就是PhysicalDiagram——物理图表区)。双击Table控件可以看到如下图所示的多页窗体,包含一些对表的设置信息:页码,8/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn这个界面是我简化过的,隐藏了很多页面,页面的显示与否可以通过左下角的那个按钮实现,下面就一些个人认为重要的属性设置讲解一下。General页面中:Name:表的名字,可以是英文也可以是中文或别的文字,便于管理;Code:表在数据库中的名字代码,也就是CreateTable语句中所出现的表名,应该是英文的;Comment:表的注释和说明Columns页面Columns页面中:页码,9/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cnName:字段的名称,可以中文也可以英文;Code:字段的代码,出现在SQL语句中的,应该为英文;Default:字段的默认值;DataType:字段类型;P:是否为主键组成字段;F:是否为外键字段;M:是否必须输入,也就是Null和NotNull在Columns页面中基本上已经定义了一个表的结构。如果我们双击某个字段的索引列(也就是有1、2、3的那列)就可以看到如下图的字段属性窗口在Indexs页面中我们双击某一记录的索引列得到下图窗口,这是用来设置索引信息的我想有过数据库建表经验的人应该一看就明白了,我这里就偷懒了。建表完成后,我们能够看到如下图的界面页码,10/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn写到这里,肯定有很多朋友觉得自己在做设置的时候非常麻烦,要问为什么name和code总是要相互影响,为什么建好表后所看到的Table控件和我这里给出的不一致。大家别急,看过下面的内容,大家的疑问就能迎刃而解了。第五部分:ModelOption的设置大家可以按下图所示进入ModelOption的设置界面请大家在ModelOption界面中,把树型节点展开,并设置成如下图所示页码,11/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn这里的Defaultdatatype、Length是影响建表的时候默认新建的字段的类型和长度。请大家在ModelOption界面中,把树型节点展开,并设置成如下图所示这里的Display的值影响着Table控件所显示的内容,如果选择Name那么就显示在建表中我们所输入的Name属性的内容,一般我们会把表、字段的中文含义写在name中,这样我们就能在Table控件中容易的看懂这个表究竟有那些字段了。如果选择Code,则Table显示为下图的样子页码,12/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn第六部分:DisplayPreferences的设置通过菜单Tools-DisplayPreferences打开DisplayPreferences设置界面,并展开树型节点如下图所示:这里是控制Table控件显示内容的地方,这是我的设置,大家可以根据自己的需要修改。请大家在DisplayPreferences界面中,把树型节点展开,并设置成如下图所示页码,13/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn这里控制Table控件显示的格式,包括字段名称、字段代码的字体、字号等,可以点击上图中的Modify按钮进行设置,设置的结果可以在上图的Preview中看到。根据以上设置所产生的Table控件显示如下图所示:第七部分:GeneralOptions的设置通过Tools-GeneralOptions打开GeneralOptions设置界面,如下图所示页码,14/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn在Dialog相关设置中,Autocommit的作用是自动保存所做的修改,可以防止意外死机、重启而丢失修改。NametoCodemirroring选项的作用是自动将你写入到Name栏中的填入Code栏中,这对建表操作的影响很大。一般来说,我会在Name栏中写表、字段的中文含义,而Code栏才是真正的表、字段名,Name是给人看的,而Code是给数据库看的。所以,建议大家不要选上。第八部分:表的和PB相关的属性设置在表的Columns的属性设置界面中有个ExtendedAttributes页面,如下图所示页码,15/21PDMPB入门教程PDF文件使用pdfFactoryPro试用版本创建www.fineprint.com.cn为了能够展示PD和PB的结合性,上图是我们一个实际系统中的字段。EditCode和FormatCode对应与PB的ExtendedAttributes中的EditStyles和DisplayFormats。PB的ExtendedAttributes内容如下图所示第九部分:从PDM到数据库右键Table控件,选择SQLPreview菜单,可以看到当前表的见表语句,全选,复制后关闭。按Ctrl+Shift+E键打开ExecuteSQLQuery窗口,把复制的SQL语句粘贴过来执行就可以在数据库中建立表了。说到建表,这里顺便说一下,在PD中必须事先配置好和数据库的连接。可以通过Database-ConfigureConnections来配置数据库连接,PD95使用的是ODBC驱动。在执行任何SQL前必须先