Powerdesigner数据库开发指南

来源:互联网 发布:千牛mac官方下载 编辑:程序博客网 时间:2024/06/04 19:48

Powerdesigner数据库设计指南

1.概述

本指南只介绍用Powerdesigner设计概念模型、物理模型及仓库的使用,Powerdesigner其它模型的使用不在本指南的介绍范围。

本指南使用的工具为Powerdesigner15。因Powerdesigner各版本间在概念模型、物理模型设计操作上的改变不大,本指南对使用其它版本的Powerdesigner具有一定的指导作用。

本指南以组织机构模型作为实例。

本指南的重点是介绍Powerdesigner工具的使用,不介绍建模技术。

在实际的设计过程中,不强制要求一定要先建概念模型,再建物理模型。而是根据个人或项目的要求决定建什么模型。

2.术语

工作区:workspace。保存当前在Powerdesigner中使用的模型文件,下次执行Powerdesigner时,自动把工作区中的模型文件显示出来。

域:Domain。自定义的数据类型。

概念模型:Conceptual Data Model。

物理模型:Physical Data Model。

仓库:Repository。用于保存提交的模型文件,每次提交的模型文件都有一个版本号。方便多人协同设计和版本管理。

3.Powerdesigner的一些特性应用

3.1Name和Code的镜像设置

Powerdesigner的每一个对象都包含name和code,在生成代码时,使用的是code,name是方便我们阅读。

建议在建模时,name栏输入中文,code栏输入英文字符,这样既方便我们阅读,也方便生成代码。

默认情况下,在name栏输入的内容会自动填写到code。如果不希望这样,可执行菜单“Tools/ GeneralOptions”,在弹出窗口中选择Dialog,如下图:

取消Name to Code mirroring前的选择就可以了。

3.2与仓库的连接设置

如果需要设置与仓库连接的参数,可执行“Tools/ General Options”,在弹出窗口中选择Repository,如下图:

相信大家从窗口上各选项的字面意思就能明白该选项是起什么作用了。

3.3排列图元

Powerdesigner提供了快速排列图元位置的工具条Layout。在工具条位置单击鼠标右键,弹出如下选择:

选中Layout,在工具条位置就会出现如下图元排列调整的工具条:

4.设计概念模型

4.1为什么要建概念模型

概念模型的理论基础是实体/关系理论,建立的图形也叫实体/关系图,或者E/R图。我们也可以把E/R图看着是没有方法、只有属性的类图,是类图的一种特例。实体/关系图能够使我们在建模时先抛开数据库表设计的细节,集中精力把现实世界的实体和关系转换为实体/关系模型,以使我们建立的实体/关系模型尽量真实的反映现实世界。

概念模型与使用的数据库无关,当我们的系统需要使用不同的数据库系统时,我们就可以使用概念模型生成对应该数据库的物理模型,而不需要重新设计。

4.2界面图标说明

 

 


 

 

 

4.3模型设置

执行“Tools/Model Options”,在弹出窗口中选择Model Options,如下图:

其中的主要选项说明:

l  Name/Code case sensitive:Name/Code栏区分大小写。

l  Notation:实体间关系的几种不同图形表示方式。建议统一选择E/R+Merise方式。

4.4设置图元

执行“Tools/Display Preferences”,弹出如下窗口:

在Object View中可设置各对象需要显示的内容,在Format中可设置显示的图形样式。

4.5新建一个概念模型

点击New按钮,在弹出窗口中选择ConceptualData Model,给出模型名称,如下图:

确定后即进入概念模型编辑界面。

4.6建立域

执行菜单“Model/Domains”,即弹出域列表窗口,在此窗口中增加《数据库设计规范》中的域定义,如下图:

 

4.7建立实体/关系图

4.7.1建立包

在开始建立实体关系图前,我们先按照分类或者模块建立包。建立包的好处是便于分类存放实体,增加模型的可读性。

不要在一个图上画过多的实体及关系,这样会大大降低E/R图的易读性;也不要在一个图上画多页实体及关系,因为在生成文档时,系统是把一个图处理成一个图片,如果一个图上有很多页,生成图片上的实体图就会小到看不清楚。尽量在一个图上只画一页。

我们把组织机构模型分成三个包:组织机构信息,人员信息,字典数据。组织机构信息包存放组织机构的实体关系图,人员信息包存放人员的实体关系图,字典数据包存放所有的类别实体。

4.7.2关系图元说明

关系图元含义如下:

:一对多关系。一个实体A对应0到多个实体B,一个实体B对应0~1个实体A。对应到物理模型,A的主键作为B的外键,可为空。

:强制一对多关系。一个实体A对应0到多个实体B,一个实体B必须对应一个实体A。对应到物理模型,A的主键作为B的外键,不能为空。

:依赖关系。实体B依赖实体A而存在,即存在实体A不一定存在实体B,不存在实体A肯定不存在实体B。对应到物理模型,A的主键作为B的主键之一,不能为空。

4.7.3建立图

假设我们建立的组织机构模型要满足如下要求:

1.        有多个同级别不同行业的组织机构,有的组织机构可能跨多个行业;

2.        各组织机构的子机构层数不尽相同;

3.        组织机构的类型可能不同;

4.        组织机构所处的行政区域不尽相同。

我们在组织机构信息包中初步建立的E/R图如下:

在这个E/R图中,我们只是从上面的描述中识别出实体和实体间的关系。因组织机构和行业是多对多的关系,图中的“组织机构的行业”即是组织机构和行业间的关联实体。

建立初步的E/R图后,我们再检查各实体及实体间的关系。如果要对一个关系做小的调整,双击该关系,弹出关系属性窗口,切换到cardinalities页,如下图:

在此页面上即可调整关系。

建议:在建立、修改E/R图的过程中,不要急于输入实体、实体属性的code栏内容,也不要急于确定实体属性的数据类型。因为我们在整个建模过程中,会不断增加、删除实体及实体的属性,如果一开始就先给code栏输入内容,会增加我们的工作量。等到E/R图定型后,再根据《数据库设计规范》要求一次性输入code栏内容、确定实体属性的数据类型。

4.7.4使用另一个包中的实体

假设人员信息有如下要求:

1.        一个人员必须且只能属于一个组织机构;

2.        一个人员可能会有一个职称。

我们在人员信息包中建人员模型时,就需要用到组织机构信息包中的组织机构实体。Powerdesigner提供了Paste as Shourcut功能(快捷键Ctrl+K)来满足这个操作要求。先在组织机构实体上按copy(快捷键Ctrl+C),然后回到人员信息包中的图上按Paste as Shourcut功能(快捷键Ctrl+K)。最后建模的结果如下图:

在组织机构名称下面注明其来源于组织机构信息包,在左下角有个快捷符号。

有的机构中,一个人员可能会在多个部门任职,这种情况在政府机构中比较常见。我们上面的人员信息模型就无法满足这种要求,需要改成下面这个模型了:

4.7.5完善设计

在实体及实体关系基本确定后,我们就需要完善各实体的具体内容了。有的人习惯在建实体时就把实体的所有属性都录入进去,这也没什么问题。

在前面的E/R图中,我们只给出了实体少量属性,这显然是远远不够的。前面之所以这样做,是因为我们想把精力和工作重点放在识别实体和实体关系上。现在我们就需要补充实体的属性了。要补充的属性包括如下几方面:

1.        实体本来具有的属性;

2.        基于设计考虑要添加的属性;

3.        《数据库设计规范》中要求添加的属性。

建议

1.        对同一个实体,设计时的视角不同,系统的要求不同,所需要的实体属性也就不同。尽量不要引入当前系统不需要的属性。

2.        尽量多写注释,尤其是一些不容易理解的实体和属性,更应该写上注释。因为设计人员明白的实体和属性,其他人员未必能够明白。或者自己设计时明白了,过了一段时间后可能又忘了。

小技巧:在建模时为了方便,我们直接在各包中画需要的字典实体。模型稳定后,再按住各字典实体,拖到字典数据包中。被拖走字典实体的组织结构模型如下图:

说明:本指南中就不完善各实体的属性了,有兴趣的同事可以去补充完善。

4.7.6确定编码和数据类型

前面的工作完成后,这一步的工作就比较简单了。按照《数据库设计规范》,输入实体、属性的Code,选择实体的数据类型就行了。

选择实体的数据类型时,优先使用前面定义的域,域中没有需要的数据类型时,再自己选择数据类型。

双击一个实体,然后切换到Attributes页,就是属性的编码和数据类型编辑界面了,如下图:

上图中三个选择列的意思如下:

l  M:强制。选上该项后,即表示该属性的值不能为空。

l  P:主键。这个就不用解释了。

l  D:显示。如果不选该项,即表示该属性不需要显示。这个主要是针对C/S结构设计的,使用默认值就行了。

当我们选择域后,该域的数据类型就自动显示在属性的数据类型列了。

4.8检查

Powerdesigner提供的Check Model功能可帮助我们找出、改正设计模型中的错误和疏漏。执行“Tools/CheckModel”,弹出如下窗口:

在“Options”页选择要检查的项目,在“Selection”页选择要检查的内容,然后确定,Powerdesinger就开始检查并把检查结果显示出来。

建议:在生成物理模型前一定要执行检查功能。检查结果中没有错误,最好也没有警告后才生成物理模型。

4.9生成物理模型

完成前面各步骤的工作,通过检查后,就可以生成物理模型了。

执行“Tools/Generate Physical Data Model”,弹出如下窗口:

General页上有“生成新的物理模型”、“修改存在的物理模型”选项。

生成新的物理模型:选择物理模型使用的数据库,给出物理模型的Name和Code(都有默认值)。

修改存在的物理模型:系统会先进行差异比较,并把比较结果显示出来,如下图:

上图中的“性别”是概念模型有而存在的物理模型中没有的,用户可以选择是否生成到物理模型中。

4.10生成报表

Powerdesigner提供了比较方便的报表模板定制和报表生成功能。

用好这个功能,以后就不用再辛苦的写数据库设计文档,直接根据建好的模型生成数据库设计文档就行了。

4.10.1定制报表模板

执行“Report/Report Templates”,弹出如下窗口:

Powerdesigner提供了几种报表模板,如果觉得不合适,可以点击上图中的新建按钮来创建一个新的报表模板,也可以修改现有的模板。

Powerdesigner报表模板定制不仅能定制段内容,还能定制表格列、列的标题、列宽、字体。

4.10.2生成报表

执行“Report/Generate Report”,弹出如下窗口:

选择报表模板,生成报表的格式和保存路径,就可以生成报表了。

5.设计物理模型

5.1界面图标说明

 

 


 

 

 

5.2模型设置

执行“Tools/Model Options”,在弹出窗口中选择Model Settings,如下图:

其中的主要选项说明:

l  Name/Code case sensitive:Name/Code栏区分大小写。

l  Notation:表间关系的几种不同图形表示方式。建议统一选择CODASYL方式。

5.3设置图元

执行“Tools/Display Preferences”,弹出如下窗口:

在Object View中可设置各对象需要显示的内容,在Format中可设置显示的图形样式。

5.4新建一个物理模型

点击New按钮,在弹出窗口中选择ConceptualData Model,给出模型名称,选择数据库类型,如下图:

确定后即进入概念模型编辑界面。

5.5建立表及表关联

与概念数据模型中不同,在物理模型中,当我们建立两个表间的关联关系时,系统会自动把一个表的主键作为另一个表的外键插入到该表中。下图是从概念模型生成的物理模型:

对比一下概念模型:

“组织机构的行业”表生成了复合主键。组织机构表中的自关联关系生成了一个外键,并自动给了个命名,我们可以修改这个命名,使其符合我们的命名规范。

如果是根据已建好的概念模型生成的物理模型,在表及关联上就不需要做什么调整了。

5.6建立视图

Powerdesigner建立视图时,需要输入SQL语句,如下图:

得到的视图显示如下:

奇怪,在我印象中,建视图时只需要把相关表中的字段选择过来,就会自动生成SQL语句,怎么Powerdesigner还需要输入SQL语句呢。

我们还可以在General页面设置视图的用途,如下图:

Useage栏有三个选择项:

l  Query only:仅能查询视图数据。

l  Updatable:能够查询视图数据,修改视图关联表的数据。

l  With check options:除了具有updatable的功能外,插入数据时还进行数据项的合法性检查。

Type栏有两个选择项:

l  View:视图。

l  Withoptions:比View多了Index、Physical Options属性页。在Index中可以为视图建立索引。Physical Options有三个选项。这个选项仅对部分支持视图类型的数据库服务器有用。

记得在Comment栏填写视图的注释哦。

5.7建立存储过程

与建立视图一样,建立存储过程时,也需要自己编写程序。存储过程的程序在Definition页编写,如下图:

建议:使用存储过程实现对复杂、大量的数据计算和数据处理。因为存储过程是直接在数据库服务器中运行,比把数据从数据库中读取出来再处理的速度要快很多。

记得在Comment栏填写视图的存储过程哦。

5.8检查

完成物理模型后,在生成数据库之前,千万不要忘记执行检查功能。

物理模型的检查与概念模型的检查操作一样,具体请参见“设计概念模型”中的“检查”。

记住,要检查到没有错误和警告后,才能生成数据库。

概念模型生成物理模型时容易出问题的地方:

l  概念模型的自关联关系生成物理模型时,因为需要把本表中的主键作为本表的外键,而一个表中的字段名是不允许相同的,所以Powerdesigner就自己给生成的这个外键取了一个名,而这个字段名可能不符合设计规范,需要我们为其改名。

l  概念模型的多对多关系生成物理模型时,会生成重复的索引。因为Powerdesigner在生成物理模型时,会为所有的主键、外键生成索引。就是除了为复合主键生成一个复合索引外,还会为每个作为外键的主键生成一个索引。建议删除重复的索引。

5.9生成数据库

建议:开发和调试时,不用生成外键和索引。交付测试及以后的版本生成外键和索引,以保证数据的完整性和一致性。

5.9.1改变当前数据库系统

要生成的数据库与物理模型当前的数据库不同时,需要执行此功能。

执行“Database/Change Current DBMS”,弹出如下窗口:

选择新的数据库即可。

5.9.2配置数据库连接

我们要把Powerdesigner与数据库服务器连接上,才能直接从物理模型生成数据库。否则就只有先生成SQL脚本,再到数据库服务器上执行了。

执行“Database/Configure Connections”,弹出如下窗口:

如果列表中已有ODBC连接,选中就行了。如果没有,就要新建一个。

配置好数据库连接后,执行“Database/ Connect”,弹出如下窗口:

选择前面建立的ODBC,输入登录数据库服务器的用户名和密码,点击“Connect”,就连接上数据库了。

5.9.3生成数据库

执行“Database/ Generate Database”,弹出如下窗口:

上图中的目录是指生成的SQL脚本文件的保存目录,文件名是指生成的SQL脚本文件的文件名。可以自己选择SQL脚本文件的保存目录,自己给定SQL脚本的文件名。

Generation Type选项是选择生成脚本还是直接生成数据库。如果选择“Scriptgeneration”,则只生成SQL脚本文件。如果选择“Direct generation”则在生成SQL脚本文件的同时,也把物理模型中选择生成的对象生成到数据库中。

可以在Preview页预览SQL脚本。

完成选择后,按确定即开始执行SQL脚本,生成数据库。

5.9.4更新数据库

如果数据库已经存在,我们只是想用修改后的物理模型更新数据库,则执行“Database/ Apply Model Changes to Database”,弹出如下窗口:

在“Get database schema”中选择“Using a data source”,按确定后,系统先对比物理模型和数据库,并显示对比结果:

上图中左边是物理模型的对象,右边是数据库中的对象。

有带!的黄色标签的目录,表示该目录下有对象变动。

在右边窗口中,对象前的“+”号表示数据库中无此对象。用户勾选上后,就可以生成到数据库中了。

如果右边窗口中对象前是“-”号,表示数据库中的对象在物理模型中没有。如果勾选上,生成数据库时就在数据库中删除勾选的对象。

如果右边窗口中对象前是“=”号,表示该对象在两边的内容不一致。如果勾选上,生成数据库时就会用物理模型中的对象替换数据库中的对象。

5.9.5只生成物理模型与数据库不一致部分的SQL脚本

5.9.4中已经说明用物理模型更新已经存在的数据库时,Powerdesigner会先比较物理模型和数据库,并显示比较结果中不一致的内容。我们可以利用这个功能,只生成物理模型与数据库不一致部分的SQL脚本。

建议:为了不出现混乱,不要手工直接改数据库中的内容,所有需要的修改都先修改物理模型,然后用物理模型来更新数据库,并且把更新的内容通知项目组的所有人员。

执行“Database/ Apply Model Changes to Database”,弹出如下窗口:

在弹出的窗口中,先做如下设置:

l  在Directory栏选择SQL脚本的保存路径;

l  在File name栏给定SQL脚本的名称(系统默认给出了保存路径和名称);

l  在Generation Type处选择Script generation,勾选上One file only;

l  在Get Database schema处选择Using a data source,并给定已建立的ODBC数据源。

然后点击“确定”,弹出如下窗口:

在左上角的下拉选择框中选择对应的数据库,然后点击“OK”,弹出如下窗口:

在这个窗口中详细列出了模型和数据库的差异(已在5.9.4中说明了窗口中差异的含义),选择要更新的项,然后点击“OK”,需要的SQL脚本文件就生成了。

5.10逆向工程

执行“File/Reverse Engineer/Database”,按照弹出窗口一步步操作,就可以从数据库中逆向生成物理模型。

5.11生成报表

见“设计概念模型/生成报表”。

6.仓库的使用

6.1仓库的作用

Powerdesigner的仓库所起的作用类似配置管理工具。但其更方便多人协作,共同在一个模型文件上进行设计工作。例如几个人分工合作设计一个系统的数据库。

6.2需要的环境

Powerdesigner使用数据库作为仓库的存储工具,支持多种数据库系统。因此要使用Powerdesigner的仓库功能,必须要有相应的数据库系统。

6.3使用前的准备

在使用Powerdesigner的仓库前,需要先建立一个供Powerdesigner使用的数据源。建议用Windows的ODBC建立数据源。

建好数据源后,执行“Repository/Repository Definitions”,在弹出的窗口中新增一个Repository Definition,然后双击其前面的按钮条,弹出如下窗口:

默认的登录用户是ADMIN,无密码。

填写仓库名称,选择数据源,填写数据库用户名及密码,点击OK就可以了。

6.4初次使用

Powerdesigner先创建仓库需要用的数据库,创建成功后,仓库就可以正常使用了。

6.5增加仓库用户

用ADMIN登录仓库后,执行“Repository/Users”,弹出仓库用户编辑窗口,如下图:

我们就可以增加用户了。双击用户名前面的按钮条,弹出用户信息编辑窗口如下:

在此窗口中可编辑用户的相关信息。

建议:Full name用中文姓名,Login name用编码。这样既方便我们登录,也方便查看版本信息,如下图:

上图中,中文姓名比编码更清楚的看到是谁提交的版本。

6.6存入仓库数据

执行“Repository/Check In”,在弹出的窗口中按新增文档按钮,弹出如下窗口:

选择本地工作区中要保存的文档,在仓库文档栏选择保存方式,然后按OK,所选择的文件就保存到仓库中了。

如果是第一次上传文档,仓库文档保存方式就选择New。

建议:每次上传时,保存方式选择Integrate。这样Powerdesigner就会把当前版本和仓库中的版本进行比较,并把比较结果显示出来,由用户决定有差异的地方该如何保存。

6.7提取仓库数据

执行“Repository/Check Out”就可以从仓库中选择需要提取的文档及版本了。

6.8权限管理

系统默认有两个权限组:Administrators,All users。All users的权限如下图:

系统默认勾选了“Manage All Documents”,这使得该用户组下的每个用户都能够管理仓库中的所有文档,这显然不利于多项目共同使用一个仓库,故取消了这个权限。

 

原创粉丝点击