power designer数据库建模技术

286
PowerDesigner 数据库建模技术 白尚旺 副主编 杨肖兵 赵贵根 西安电子科技大学出版社 1999 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Upload: sunjia

Post on 24-May-2015

10.810 views

Category:

Technology


8 download

DESCRIPTION

ddd

TRANSCRIPT

Page 1: Power Designer数据库建模技术

PowerDesigner

数据库建模技术

主 编 白尚旺

副主编 杨肖兵 赵贵根

西安电子科技大学出版社

1999

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 2: Power Designer数据库建模技术

白尚旺简介

白尚旺,现任太原重型机械学院计算机系教师,1997获西安交通大学计算机

软件硕士学位。主要从事数据库理论的教学与研究工作,发表学术论文 10余篇。

曾主持设计了 Power2000 NMIS用电管理等大型应用系统的数据库模型。

杨肖兵简介 杨肖兵,1985年毕业于太原理工大学计算机系。现任太原金德威公司总经理,

主要从事系统集成与管理信息系统的研究与开发。主要论文有:《计算机发展与经

济控制论的辨证关系》、《财务电算化概论》、《用电管理信息系统》等。

赵贵根简介 赵贵根,1989年获哈尔滨工业大学硕士学位,现任太原导通科技发展有限公

司总工程师。近年来发表学术论文 5篇。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 3: Power Designer数据库建模技术

쓚 죝 볲 뷩

本书系统地介绍了使用 PowerDesigner 6.1进行数据库建模的方法与

技巧。

全书内容包括:PowerDesigner建模环境,PowerDesigner简介,

MetaWorks模块,DataArchitect模块,概念数据模型的建立、完善、检查、

固化和提取,物理数据模型的生成、调整及检查,生成数据库过程,产生触发

器、制作存储过程和函数,对数据库和数据库生成脚本进行逆向工程产生物理

数据模型,建立子模型的方法,使用 MetaWorks进行团队控制的方法,使用

MetaBrowser查询 MetaWorks字典的方法。

本书可以作为高等院校计算机专业数据库理论课程的实验教材,也可作为

管理信息系统开发人员数据库模型设计的指导书。

图书在版编目(CIP)数据

PowerDesigner数据库建模技术/白尚旺主编. -西安:西安电子科技大学出版社,1999.12

ISBN 7-5606-0804-3

Ⅰ. P.… Ⅱ. 白… Ⅲ. 关系数据库–数据库管理系统,PowerDesinger6.1-理论 Ⅳ.TP311.13

中国版本图书馆 CIP数据核字(1999)第 69479号

责任编辑 陈宇光 戚文艳

出版发行 西安电子科技大学出版社(西安市太白南路 2号)

电 话 (029)8227828 邮编者按 710071

http //www.xduph.com E-mail:[email protected] 经 销 新华书店

印 刷 印刷厂

版 次 年 月第 版 年 月 第 次印刷

开 本 787×1092毫米 1/16 印刷

印 数 1~4 000册

定 价 元

ISBN 7-5606-0804-3/TP·0414

***如有印装问题可调换***

本书封面贴有西安电子科技大学出版社的激光防伪标志,无标志者不得销售。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 4: Power Designer数据库建模技术

前 言

目前,我国各种应用领域的数据管理趋向计算机化,各行各业的管理信息系统将会变得

像电话一样普及。完善已有的管理信息系统、开发新的管理信息系统已成为数据库技术应用

的一个热点。

开发新的管理信息系统时的首要任务是系统分析人员在与用户充分交流的基础上,设计

出应用系统的数据库模型,包括数据流程图(DFD)、概念数据模型(CDM)、物理数据模

型(PDM)。无论软件开发人员是否意识到这一点,数据库建模总是必不可少的第一步,而

且这一步的好坏直接影响着数据库系统的性能。良好的数据库模型是产生高质量应用程序的

前提。这就如同盖楼一样,没有精心设计的图纸,能工巧匠也难以用水泥、钢筋建起符合特

定需求的高楼大厦。另外,由于多种原因,我国现运行的某些管理信息系统缺乏详细的数据

库模型,利用数据库建模的逆向工程手段可以为现存的管理信息系统建立物理数据模型、概

念数据模型、数据流程图,经过对模型进行适当修补产生的模型文档,对系统今后的维护和

改造将提供有力的支持。数据库模型如此重要,说它是数据库应用系统的核心与基础一点也

不过分。

数据库建模是一种技术。以前,人们根据数据库理论与业务需求手工画出数据流程图、

概念数据模型、物理数据模型。在这一复杂的设计过程中,经验丰富的设计人员也会犯这样

那样的错误,不但建模工作十分艰难,模型的质量也受到很大的影响。为解决这一问题,世

界各大数据库厂商和第三方合作开发出了智能化的数据库建模工具,如:SYBASE 公司的

PowerDesinger、RATIONAL 公司的 Rational Rose、ORACLE 公司的 CASE*METHOD、

PLATIUM公司的 Erwin/ERX、Asymetrix公司的 InfoModeler、Popkin Software&Systems公

司的 System Architect、Chen&Associates公司的 ER-Modeler、Bachman information Systems

公司的 Generator for PowerBuilder等等,它们是同一类型的计算机辅助软件工程(CASE)

工具。CASE工具把开发人员从繁重的劳动中解脱出来,大大地提高了数据库应用系统的开

发质量。国际数据公司高级分析家 Tony Picardi分析认为:“使用这些工具的原因在于数据库

建模变得越来越复杂。”自 1994年以来数据库模型设计工具经历了一个复兴时期,并逐步被

软件人员所接受。

事实上,在数据库建模方面存在的问题是:许多人能解释清楚什么是数据库模型,但很

少有人知道怎样利用智能化的数据库建模工具去建立数据库模型。本书期望通过

PowerDesigner 工具的使用解决以上的问题。之所以选用 PowerDesigner 工具,主要是因为

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 5: Power Designer数据库建模技术

PowerDesigner 具有良好的性能价格比,而且它支持目前流行的多种客户端开发工具(如

Visual Basic、PowerBuilder、Delphi等),同时也支持 30多种流行的数据库管理系统。另外

PowerDesigner能够满足大、中、小型管理信息系统数据库建模的需求,学会 PowerDesigner

工具的使用,可以触类旁通地学会其它数据库设计工具的使用。

PowerDesigner 工具包括六个模块,本书主要介绍其中最基本、最重要的两大模块,即

DataArchitect模块与MetaWorks模块。DataArchitect模块主要用于建立概念数据模型、物理

数据模型,还可逆向工程已有的数据库。MetaWorks控制设计团队共同完成数据库模型的设

计任务。书中对其它模块的功能也作了简要的描述,以图使读者对 PowerDesigner工具有一

个全面的、完整的认识。本书介绍的是 SYBASE公司目前公开发行的最新版本 PowerDesigner

6.1,不同的版本会有一些细微的差别,读者也可根据本书介绍,利用 PowerDesigner的其它

版本进行数据库建模。

本书充分考虑到了 PowerDesigner学习者的需要,以图文并茂的方式、循序渐进的结构、

通俗易懂的语言、手把手的操作示例系统地介绍了使用 PowerDesigner的建模方法。书中编

排了大量的实验,每章都配有思考题,使读者能够及时巩固所学知识。

本书融入了编者多年从事数据库建模、管理信息系统开发的经验,在编写过程中突出自

学和摹仿的特点,读者只要在计算机上按教材的章节顺序将示例完成一遍,就可以掌握

PowerDesigner的使用方法,同时掌握数据库建模的基本思想,并用来解决实际问题。

本书第 1章至第 3章由赵贵根执笔,第 4章至第 7章由杨肖兵执笔,第 8章至第 13章

由白尚旺执笔,第 14章至第 16章由梁清香执笔,全书由白尚旺统稿审定。

西安交通大学计算机系陆丽娜教授详细审阅了全稿并提出了许多有益的意见,西安交通

大学计算机系杨新宇博士、西安交通大学瑞森集团医学软件研究室魏省城总工程师、西安卫

星测控中心唐枚工程师、太原导通计算机软件公司赵学林总经理都对本书提出了修改意见,

西安电子科技大学计算机系徐甲同教授为本书的出版做了大量的工作,谨此向他们致以衷心

的感谢。

本书的录入与校对工作由太原重型机械学院梁清香同志完成。太原重型机械学院教务处

领导、计算机系各位老师对本书的出版给予了热情的支持,在此表示诚挚的谢意。

由于作者水平有限,经验不足,书中一定存在不少问题,我们真诚地希望专家和广大读

者对本书提出宝贵的意见和建议,让我们在共同的学习中获得新的收获!

作者 E-mail: [email protected][email protected]

[email protected]

编者

1999年 10月 10日

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 6: Power Designer数据库建模技术

目 录

I

目 录

前 言.............................................................................................................................................Ⅰ 第 1章 PowerDesigner数据库建模环境 .................................................................................... 1

1.1 PowerDesigner对软硬件的要求 ................................ ................................ ................................ .............1

1.1.1 硬件要求................................ ................................ ................................ ................................ ......1

1.1.2 软件要求................................ ................................ ................................ ................................ ......2

1.2 PowerDesigner及辅助软件的安装 ................................ ................................ ................................ .........2

1.2.1 PowerDesigner中 DataArchitect模块的安装 ................................ ................................ ............2

1.2.2 ODBC的安装................................ ................................ ................................ .............................. 7

1.2.3 Sybase SQL Anywhere的安装 ................................ ................................ ................................ ....9

第 2章 PowerDesigner简介 ...................................................................................................... 13 2.1 ProcessAnalyst模块................................ ................................ ................................ ................................ 14

2.2 DataArchitect模块 ................................ ................................ ................................ ................................ ..16

2.3 AppModeler模块................................ ................................ ................................ ................................ ....18

2.4 MetaWorks模块................................ ................................ ................................ ................................ ......19

2.5 WarehouseArchitect模块 ................................ ................................ ................................ ........................ 21

2.6 Viewer模块................................ ................................ ................................ ................................ .............22

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 3章 MetaWorks概述............................................................................................................ 24 3.1 MetaWorks的优点................................ ................................ ................................ ................................ ..24

3.1.1 共享模型................................ ................................ ................................ ................................ .....24

3.1.2 管理共享数据................................ ................................ ................................ ............................. 24

3.2 MetaWorks的体系结构 ................................ ................................ ................................ .......................... 26

3.2.1 数据库服务器................................ ................................ ................................ ............................. 26

3.2.2 数据库客户................................ ................................ ................................ ................................ .26

3.2.3 ODBC驱动程序................................ ................................ ................................ ......................... 27

3.2.4 MetaWorks模块 ................................ ................................ ................................ ......................... 27

3.3 MetaWorks字典................................ ................................ ................................ ................................ ......28

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 7: Power Designer数据库建模技术

目 录

II

3.4 MetaWorks入门................................ ................................ ................................ ................................ ......29

3.4.1 配置数据库作为 ODBC数据源 ................................ ................................ ................................ 36

3.4.2 为MetaWorks字典产生数据库表................................ ................................ ............................. 39

小结 ................................ ................................ ................................ ................................ ................................ 22

思考题 ................................ ................................ ................................ ................................ ............................ 22

第 4章 DataArchitect概述........................................................................................................ 43 4.1 DataArchitect的特征 ................................ ................................ ................................ .............................43

4.1.1 二级数据建模................................ ................................ ................................ ............................43

4.1.2 迭代数据建模................................ ................................ ................................ ............................45

4.2 DataArchitect的工作环境 ................................ ................................ ................................ .....................45

4.3 工作区的特征 ................................ ................................ ................................ ................................ ........47

4.3.1 列表................................ ................................ ................................ ................................ ............47

4.3.2 属性窗口................................ ................................ ................................ ................................ ....48

4.3.3 业务规则................................ ................................ ................................ ................................ ....50

4.3.4 工具选项板介绍 ................................ ................................ ................................ ........................51

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 5章 建立概念数据模型 ......................................................................................................... 56 5.1 产生概念数据模型 ................................ ................................ ................................ ................................ 56

5.2 完成 CDM特性窗口的工作 ................................ ................................ ................................ .................58

5.3 定义业务规则 ................................ ................................ ................................ ................................ ........62

5.3.1 把一个表达式附加到业务规则上 ................................ ................................ ............................64

5.3.2 把业务规则应用到数据模型对象上 ................................ ................................ ........................64

5.4 产生实体 ................................ ................................ ................................ ................................ ................65

5.5 定义域 ................................ ................................ ................................ ................................ ....................66

5.5.1 修改域................................ ................................ ................................ ................................ ........69

5.5.2 定义实体................................ ................................ ................................ ................................ ....70

5.5.3 定义实体的属性 ................................ ................................ ................................ ........................72

5.5.4 产生实体属性的途径 ................................ ................................ ................................ ................74

5.5.5 产生数据项................................ ................................ ................................ ................................ 77

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 6章 完善概念数据模型 ......................................................................................................... 86 6.1 定义联系 ................................ ................................ ................................ ................................ ................86

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 8: Power Designer数据库建模技术

目 录

III

6.1.1 角色................................ ................................ ................................ ................................ ............88

6.1.2 基数................................ ................................ ................................ ................................ ............89

6.1.3 存在性................................ ................................ ................................ ................................ ........90

6.1.4 依赖................................ ................................ ................................ ................................ ............90

6.1.5 联系符号................................ ................................ ................................ ................................ ....92

6.2 定义继承连接 ................................ ................................ ................................ ................................ ........95

6.2.1 概括和细化属性 ................................ ................................ ................................ ........................97

6.2.2 使用继承特性窗口 ................................ ................................ ................................ ....................99

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 7章 检查、固化和提取概念数据模型 ............................................................................... 107 7.1 检查概念数据模型 ................................ ................................ ................................ .............................. 107

7.2 模型的固化 ................................ ................................ ................................ ................................ .......... 111

7.2.1 固化选项(Consolidation Option) ................................ ................................ ............................. 115

7.2.2 固化模式(Consolidation Mode)................................ ................................ ............................... 116

7.3 模型的提取 ................................ ................................ ................................ ................................ ..........116

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 8章 生成物理数据模型 ....................................................................................................... 121 8.1 物理数据模型 ................................ ................................ ................................ ................................ ......121

8.1.1 生成参数................................ ................................ ................................ ................................ ..124

8.1.2 保护选项................................ ................................ ................................ ................................ ..127

8.2 PDM的模型特性................................ ................................ ................................ ................................ .127

8.3 把 CDM对象转换成 PDM对象................................ ................................ ................................ .........129

8.3.1 把 CDM中的实体转换成 PDM中的表................................ ................................ .................129

8.3.2 把 CDM中的联系转换成 PDM中的参照完整性................................ ................................ .130

8.3.3 递归联系的转换 ................................ ................................ ................................ ......................133

8.4 模型对象和对象 ID号 ................................ ................................ ................................ ........................142

8.5 修改 CDM和 PDM文件................................ ................................ ................................ .....................144

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 9章 调整物理数据模型 ....................................................................................................... 148 9.1 调整物理数据模型 ................................ ................................ ................................ .............................. 148

9.2 数据完整性和一致性 ................................ ................................ ................................ ..........................149

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 9: Power Designer数据库建模技术

目 录

IV

9.2.1 表约束和列约束 ................................ ................................ ................................ ......................149

9.2.2 参照完整性................................ ................................ ................................ .............................. 159

9.3 视图 ................................ ................................ ................................ ................................ ......................164

9.3.1 视图的定义及产生 ................................ ................................ ................................ ..................164

9.3.2 查询视图................................ ................................ ................................ ................................ ..168

9.4 候选关键字 ................................ ................................ ................................ ................................ ..........169

9.5 索引 ................................ ................................ ................................ ................................ ......................172

9.5.1 从索引中删除一列 ................................ ................................ ................................ ..................178

9.5.2 删除索引................................ ................................ ................................ ................................ ..179

9.5.3 定义一个有效性规则 ................................ ................................ ................................ ..............179

9.5.4 定义参照完整性 ................................ ................................ ................................ ......................180

9.5.5 产生视图................................ ................................ ................................ ................................ ..181

9.5.6 定义候选关键字 ................................ ................................ ................................ ......................181

9.5.7 产生索引................................ ................................ ................................ ................................ ..182

9.6 带数据修改表结构 ................................ ................................ ................................ .............................. 183

9.7 生成测试数据的方法 ................................ ................................ ................................ ..........................187

9.8 DataArchitect与客户端开发工具的接口 ................................ ................................ ...........................189

9.8.1 使用扩展属性................................ ................................ ................................ ..........................189

9.8.2 视图与 PowerBuilder Query................................ ................................ ................................ ....191

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 10章 触发器、存储过程和函数 ......................................................................................... 193 10.1 触发器 ................................ ................................ ................................ ................................ ................193

10.2 生成 SQL脚本................................ ................................ ................................ ................................ ...200

10.2.1 触发器与存储过程生成参数的设置 ................................ ................................ ....................200

10.2.2 生成选项................................ ................................ ................................ ................................ 200

10.2.3 为触发器、存储过程生成可以运行的脚本文件................................ ................................ .202

10.3 触发器模板及 SQL查询编辑器 ................................ ................................ ................................ .......204

10.3.1 触发器模板................................ ................................ ................................ ............................204

10.3.2 SQL查询编辑器 ................................ ................................ ................................ ...................206

10.4 存储过程和函数 ................................ ................................ ................................ ................................ 208

10.4.1 存储过程的优缺点 ................................ ................................ ................................ ................209

10.4.2 使用存储过程模板定义存储过程和函数 ................................ ................................ ............210

10.5 宏 ................................ ................................ ................................ ................................ ........................217

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 10: Power Designer数据库建模技术

目 录

V

10.6 变量 ................................ ................................ ................................ ................................ ....................217

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 11章 检查物理数据模型 生成数据库 ............................................................................. 223 11.1 检查物理数据模型 ................................ ................................ ................................ ............................. 223

11.1.1 检查和改正 PDM选项................................ ................................ ................................ ...........224

11.1.2 错误和警告 ................................ ................................ ................................ ............................. 225

11.2 产生数据库或产生数据库生成脚本................................ ................................ ................................ ..227

11.2.1 DEF文件 ................................ ................................ ................................ ................................ 227

11.2.2 生成数据库 ................................ ................................ ................................ ............................. 228

11.2.3 使用 ODBC生成数据库 ................................ ................................ ................................ ........232

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 12章 逆向工程 ..................................................................................................................... 235 12.1 通过逆向工程方法生成 PDM................................ ................................ ................................ ............236

12.2 使用 ODBC生成 PDM................................ ................................ ................................ ....................... 236

12.3 从 PDM生成 CDM................................ ................................ ................................ ............................. 240

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 13章 带有子模型的工作 ..................................................................................................... 243 13.1 全局数据和子模型 ................................ ................................ ................................ ............................. 243

13.2 分解全局模型 ................................ ................................ ................................ ................................ .....244

13.2.1 全局模型和子模型中的对象 ................................ ................................ ................................ .248

13.2.2 从模型或子模型中删除对象 ................................ ................................ ................................ .253

13.3 工程和模型 ................................ ................................ ................................ ................................ .........253

13.4 数据共享策略 ................................ ................................ ................................ ................................ .....254

13.4.1 合并模型................................ ................................ ................................ ................................ .254

13.4.2 附加数据控制................................ ................................ ................................ ........................255

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 14章 使用MetaWorks进行团队控制............................................................................... 260 14.1 团队工作和劳动划分 ................................ ................................ ................................ ........................260

14.2 MetaWorks工程概述................................ ................................ ................................ .........................261

14.3 产生MetaWorks用户帐号 ................................ ................................ ................................ ................262

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 11: Power Designer数据库建模技术

目 录

VI

14.4 产生组 ................................ ................................ ................................ ................................ ................265

14.5 给用户和组授权 ................................ ................................ ................................ ................................ 270

14.6 固化过程中的有关问题 ................................ ................................ ................................ ....................275

14.6.1 删除冲突................................ ................................ ................................ ................................ 276

14.6.2 修改冲突................................ ................................ ................................ ................................ 276

14.6.3 其它固化冲突................................ ................................ ................................ ........................277

14.7 模型加锁 ................................ ................................ ................................ ................................ ............278

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 15章 MetaWorks中的MetaBrowser................................................................................ 283 15.1 管理MetaWorks字典中的信息 ................................ ................................ ................................ ..........283

15.2 使用MetaBrowser................................ ................................ ................................ ................................283

15.2.1 信息管理器................................ ................................ ................................ ..............................284

15.2.2 多模型管理器................................ ................................ ................................ ..........................287

15.2.3 比较管理器................................ ................................ ................................ ..............................289

15.3 查询字典 ................................ ................................ ................................ ................................ ..............292

15.3.1 使用 InfoMaker查询MetaWorks字典................................ ................................ ...................293

15.3.2 使用 QUERY.WRI查询MetaWorks字典 ................................ ................................ ..............293

15.3.3 SQL解释执行器 ................................ ................................ ................................ .....................293

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

第 16章 生成模型文档 ............................................................................................................. 296 16.1 概念数据模型生成文档的方法................................ ................................ ................................ .........296

16.2 概念数据模型定制文档的生成方法................................ ................................ ................................ .299

16.2.1 修改文档的封面信息 ................................ ................................ ................................ ............300

16.2.2 为定制文档设置页眉和页脚 ................................ ................................ ................................ 300

16.2.3 为定制文档设置概述信息 ................................ ................................ ................................ ....301

16.2.4 为定制文档项设置生成方式 ................................ ................................ ................................ 301

16.2.5 在定制文档中增加或减少生成项目 ................................ ................................ ....................302

小结 ................................ ................................ ................................ ................................ ................................ ..22

思考题 ................................ ................................ ................................ ................................ .............................. 22

主要名称缩写中英文对照表 ....................................................................................................... 304 参考文献....................................................................................................................................... 305

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 12: Power Designer数据库建模技术

PowerDesigner是 Sybase公司的 CASE工具集,使用它可以方便地对管理

信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用

PowerDesigner 可以制作数据流程图、概念数据模型、物理数据模型,可以生

成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团

队设计模型进行控制。

PowerDesigner 从推出到现在已相继地发展到 6.1 版本,随着数据库应用

系统的广泛使用,它越来越受到软件工程技术人员的重视,是数据库应用程序

开发者必不可少的工具。

1.1 PowerDesigner对软硬件的要求

1.1.1 펲볾튪쟳

PowerDesigner 6.1版本包括六个模块,各模块的最小系统需求不同。 Windows 95/98或Windows NT 3.5/4.0操作系统: l 486或更高处理器; l 12MB内存; l CD-ROM驱动器; l 15MB硬盘空间; l VGA显示器。 Windows 3.1操作系统: l 486或更高处理器; l 8MB内存; l CD-ROM驱动器;

第 1章

PowerDesigner数据库建模环境

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 13: Power Designer数据库建模技术

·2· PowerDesigner 数据库建模技术

l 15MB硬盘空间; l VGA显示器。

1.1.2 죭볾튪쟳

Power Designer的软件要求: l Windows3.1或Windows95/98或Windows NT 3.5/4.0; l 32 bit的 ODBC; l Sybase SQL Anywhere或者其它 30多种数据库管理系统之一。

1.2 PowerDesigner及辅助软件的安装

PowerDesigner软件的几个模块可以根据需要分别进行安装,每个模块的安装步骤基本相同。下面以 PowerDesigner中 DataArchitect模块的安装为例介绍它们的安装过程。为了完成本书的全部工作还需要安装 ODBC和 Sybase SQL Anywhere。

1.2.1 PowerDesigner훐 DataArchitect쒣뿩뗄낲ힰ

Power Designer中 DataArchitect模块的安装步骤如下 1.启动Windows95/98,在光驱中放入 PowerDesigner光盘,打开资源管理器,单击光盘驱动器,显示如下窗口(图 1-1):

图 1-1

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 14: Power Designer数据库建模技术

第 1章 PowerDesigner数据库建模环境 ·3·

2.双击图 1-1右边窗格中的“Setup”,打开“PowerDesigner 6 DataArchitect Suite”窗口(图 1-2)。

图 1-2

3.在图 1-2中,当选中“Display 16-bit programs”检查框时,窗口列表框中显示 16 bit的安装程序,当不选择“Display 16-bit programs”检查框时,窗口列表框中不显示16 bit的安装程序;要在Windows95/98上安装DataArchitect模块,选择 PowerDesigner DataArchitect 32-bit 产品。然后单击“Install”按钮,打开“Welcome”窗口

(图 1-3)。

图 1-3

4.单击“Next”按钮,打开“Select Installation Options”窗口,单击“Next”按钮,打开“Choose Destination Directory for PowerDesigner DataArchitect”窗口(图 1-4),单击“Browse”按钮,可以选择 DataArchitect模块的安装目录。

5.单击“Next”按钮,打开“Select Program Folder”窗口(1-5),接受缺省值。 6.单击“Next”按钮,打开“Start Copying Files”窗口(图 1-6)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 15: Power Designer数据库建模技术

·4· PowerDesigner 数据库建模技术

图 1-4

图 1-5

图 1-6

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 16: Power Designer数据库建模技术

第 1章 PowerDesigner数据库建模环境 ·5·

7.单击“Next”按钮,开始拷贝程序文件(如图 1-7所示)。

图 1-7 8.程序文件拷贝结束后自动打开“Setup Complete”窗口(图 1-8)。

图 1-8

9.单击“Finish”按钮,打开“Readme —写字板”窗口(图 1-9),该窗口内显示PowerDesigner 6.1版本的注释信息。

图 1-9

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 17: Power Designer数据库建模技术

·6· PowerDesigner 数据库建模技术

10.关闭“Readme - 写字板”窗口,显示如图 1-10所示窗口。完成 DataArchitect模块的安装。

图 1-10

1.2.2 ODBC뗄낲ힰ

ODBC的安装步骤如下: 1.启动Windows 95/98,在光驱中放入 PowerDesigner光盘,打开资源管理器,单击光盘驱动器,显示如图 1-11所示结构:

图 1-11

2.双击“Odbc32”文件夹,打开的“浏览—Odbc32”窗口(图 1-12)。 3.双击“Disk1”文件夹,打开的“浏览—Disk1”窗口(图 1-13)。4.双击“Setup”安装程序,开始安装。在“Welcome”窗口上单击“Next”按钮,打开“Select ODBC Drivers”窗口(图 1-14),从列表框中选择要安装的 ODBC 驱动程序(在选择的驱动程序前面出现“√”,表示选中)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 18: Power Designer数据库建模技术

第 1章 PowerDesigner数据库建模环境 ·7·

图 1-12

图 1-13

图 1-14

5.单击“Next”按钮,以下步骤同安装 DataArchitect模块一样,可根据提示操作,直至安装完毕。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 19: Power Designer数据库建模技术

·8· PowerDesigner 数据库建模技术

1.2.3 Sybase SQL Anywhere뗄낲ힰ

Sybase SQL Anywhere的安装又分为服务器安装和客户安装,如图 1-15所示。

图 1-15

服务器安装和客户安装的步骤基本相同,下面是安装 SQL Anywhere server for Windows 95的步骤。客户端的安装,只要在该窗口中选择“SQL Anywhere client for Windows 95”,仿照下列步骤,即可完成安装过程。

1. 在“PowerDesigner 6 DataArchitect Suite”窗口中选择“SQL Anywhere server for Windows 95”,单击“Install”按钮,打开如下窗口(图 1-16)。

图 1-16

2.选择“Install the software”单选按钮,单击“OK”,打开“Sybase SQL Anywhere Server for Windows 95”窗口(图 1-17)。

3.选择安装目录,单击“OK”按钮,显示如图 1-18所示窗口。 4.选择要安装的组件, 单击“Options”按钮,然后单击“OK”按钮,打开如图 1-19所示窗口。

5.单击“OK”按钮,打开如图 1-20所示窗口。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 20: Power Designer数据库建模技术

第 1章 PowerDesigner数据库建模环境 ·9·

图 1-17

图 1-18

图 1-19

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 21: Power Designer数据库建模技术

·10· PowerDesigner 数据库建模技术

图 1-20

6.单击“OK”按钮,修改 AUTOEXEC.BAT和 CONFIG.SYS文件,并打开如图 1-21所示窗口。

7.单击“确定”按钮,打开如图 1-22所示窗口。在该窗口中若选择 “Concurrent user license(requires disk)”单选按钮时,需要注册盘。为了做练习,选择“Per seat license”单选按钮。

图 1-21

图 1-22

8.单击“OK”按钮,打开如图 1-23 所示的窗口,表示 Sybase SQL Anywhere 安装 成功。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 22: Power Designer数据库建模技术

第 1章 PowerDesigner数据库建模环境 ·11·

图 1-23

9.单击“OK”按钮,打开如图 1-24所示窗口。

图 1-24

10.单击“确定”按钮,结束安装过程。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 23: Power Designer数据库建模技术

PowerDesigner包括以下六个模块:

l ProcessAnalyst是数据流程图(DFD)逻辑设计工具

l DataArchitect是概念数据模型与物理数据模型设计工具

l WarehouseArchitect是数据仓库设计工具

l AppModeler是客户端应用程序生成工具

l MetaWorks是团队开发控制工具

l Viewer是模型观察工具

可以单独购买和使用任何一个 PowerDesigner模块,也可以一起使用这些模块。图 2-1是 PowerDesigner六个模块的关系图。

图 2-1 本章介绍各个模块的用途、功能、使用对象、特征及输出。学完本章后,能够达到如

下目的: l 区分 PowerDesigner的六个模块; l 描述每个模块的功能与特征; l 明确每个模块的使用对象; l 明确使用每个模块的原因。

第 2章

PowerDesigner简介

MetaWorks

Enterprise and Desktop RDBMS

Warehouse Architect

DW/DM Extraction Tools

DSS AppModeler

C/S Dev Tools & the Web

DataArchitect ProcessAnalyst

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 24: Power Designer数据库建模技术

第 2章 PowerDesigner简介 ·13·

2.1 ProcessAnalyst 模块

用 途

使用 ProcessAnalyst 模块能够建立四种类型的数据流程图(OMT Functional Model、SSADM、Yourdon/Demarco、Gane&Sarson)。无论哪种数据流程图,都可以描述出管理信息系统应该如何操作和处理各种数据,它可以反映系统的动态特征。数据流程图表达了系

统分析人员对现有系统的认识和对目标系统的设想,是系统的功能模型,它和概念数据模

型(CDM)结合在一起,构成了系统完整的逻辑模型。在需求分析阶段之后的设计阶段,程序设计人员根据数据流程图进行程序的设计和编码。因此,正确的数据流程图是应用程

序设计的基础,错误的数据流程图会导致系统开发失败。 建立数据流程图的过程既与应用设计工作相联系,又与模型设计工作相联系。用

ProcessAnalyst建立的数据流程图定义了应用设计中数据交互的方式。换句话说,这种模型形象地描述了应用的问题域(例如,一个账单系统)。ProcessAnalyst制作数据流程图的目的主要是描述系统的功能模型,通过流程建模把系统的功能进行详细的分解。

ProcessAnalyst可以迅速而完整地产生系统的功能模型,把复杂的应用分解为易于理解的子处理,从而使得系统分析员可以更好地与用户进行交流,保证系统逻辑模型的正确性。 过程建模产生的数据流程图对于大型工程是特别有用的,可以使用 ProcessAnalyst作为

独立的一个流程分析工具。 适用对象

ProcessAnalyst为客户/服务器数据库设计人员提供了数据流程建模工具。这个模块主要由系统设计人员和业务分析人员使用。 特 征

ProcessAnalyst包括如下特征: l 支持四种不同的功能模型和数据流程图(DFD)表示法:

◆ OMT Functional Model; ◆ Yourdon/Demarco ◆ Gane & Sarson ◆ SSADM OMT是对象模型技术的缩写,它是面向对象分析设计方法的一种,到目前为止,它是发展得最完善的面向对象分析技术。在实际的项目开发中,它也正逐渐为人

们所接受。因此,在 ProcessAnalyst中可以使用 OMT方法进行系统分析,并产生相应的报告。后三种是传统的结构化分析与设计方法。这种方法经过多年的发展

形成了自己完整的理论体系与方法,开发人员也在这方面积累了丰富的开发经验,

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 25: Power Designer数据库建模技术

·14· PowerDesigner 数据库建模技术

实际的项目开发中大量采用这种方法。这三种方法在本质上是完全相同的,只不

过表示符号有所差别而已,它们之间可以方便地进行相互转换。 l 可以与 DataArchitect模块双向交换数据。 l 支持 CRUD(Create Read Update Delete)矩阵,形象地描述处理(Process)对数据的影响。

l 可以方便地实现分层数据流程图,并且可以自动维护分层数据流程图的平衡。数

据流程图作为结构化分析的工具采用分层的方法以保证自顶向下逐步求精。在手

工阶段画数据流程图时需要画图者自己来维护数据流程图的平衡,而在

ProcessAnalyst 中由工具自动维护数据流程图的平衡,这种平衡是通过 Off-Page Connection来实现的。

l ProcessAnalyst可以检查数据流程图的正确性。比如在数据存储中的数据项,如果没有相应的数据流将它带入存储,就说明数据流程图有错误。ProcessAnalyst能够将类似的错误检查出来。

l 可以定制系统功能模型报告。ProcessAnalyst可以自动生成需求分析报告,即软件需求规格说明书。

总之,在 ProcessAnalyst中我们可以通过数据流程图完成优质、高效的系统分析,生成相应的需求分析文档。这样就可以把系统分析人员从繁琐的画图及书写报告工作中解放出

来,从而能在实际调研中投入更多的精力,保证需求分析更正确有效。 输 出

ProcessAnalyst的主要输出是: l 流程分析模型(PAM)文件,这个文件是数据流程的图形化表示方法,它以 PAM作为文件的扩展名。

l 生成的特定文档。

2.2 DataArchitect模块

用 途

DataArchitect模块是 PowerDesigner的核心工具,它在需求分析阶段可以用来绘制实体联系图(E—R 图),即系统的概念数据模型。它描述系统中的实体以及实体之间的关系,是系统的静态特征。系统分析员通过实体联系图表达对系统静态特征的理解。它实际上相

当于系统的一个初步的数据字典。由实体联系图所表达的数据模型与数据流程图所表达的

功能模型结合在一起就构成了系统完整的逻辑模型。系统进一步的开发将以此为基础。当

系统的开发进入设计阶段时,开发人员必须提 出系统的物理数据模型,这时 DataArchitect 可以实现概念数据模型向物理数据模型的

自动转换,设计人员可以在物理数据模型的基础上,进行数据库的后台设计。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 26: Power Designer数据库建模技术

第 2章 PowerDesigner简介 ·15·

使用 DataArchitect模块可产生或生成两种不同的数据模型:概念数据模型(CDM)和物理数据模型(PDM)。概念数据模型是由数据库设计者产生的,概念数据模型不依赖于特定的关系型数据库管理系统(RDBMS)。 与此相反,物理数据模型对模型的物理实现细节作了详细的说明。物理数据模型可以

通过概念数据模型生成,也可在 DataArchitect 中直接建立,还可以从一个已经存在的数据库中通过逆向工程生成。物理数据模型代表了数据库的实际结构。

注 意: 关于 CDM和 PDM的细微区别将在本书后面的章节中介绍。

适用对象

DataArchitect支持概念数据模型和物理数据模型。它适用于系统设计人员、业务人员和系统管理员使用。 特 征

DataArchitect包括如下特征: l 可与 PowerDesigner的 ProcessAnalyst模块双向交换数据。 l 支持 30多种 RDBMS平台。即概念数据模型可以转化为多种数据库上相应的物理数据模型(其数据类型及 SQL语句都会采用相应数据库管理系统的规定,比如:转化为 Oracle数据库就采用 Oracle的数据类型和 PL/SQL,转化成 Sybase数据库就采用 Sybase支持的 T-SQL)。

l 根据物理数据模型生成数据库的对象,生成的对象包括表、索引、主键、外键、

触发器、存储过程。其中除了存储过程需要设计者定义外,其它的对象都可以自

动生成。 l 从一种类型的数据库转换到另一种类型的数据库。这时相应的 SQL语句(建表、建索引、建视图、建触发器)以及数据类型都会发生相应的转变,这样在没有人

工干预的情况下可以很方便地在不同的数据库管理系统间将设计结果进行移植。 l 能够方便地定义触发器和存储过程。 l 循序渐进地同步概念和物理数据模型的特征。 l 支持现存数据库的逆向工程,包括存储过程和触发器。对于一个从前设计的数据

库,可以通过逆向工程把数据库中的表、触发器、存储过程的定义都读到

DataArchitect中形成物理数据模型,并可以进一步逆向生成概念数据模型。这样,对于数据库的维护有很大的好处。

l 可以利用子模型(Sub-models)对模型特定的部分进行设计。在设计一个实际的系统时可以分别对模型中的一部分进行设计,然后再把设计结果连接成一个总的实

体联系图。在 DataArchitect中使用全局模型、子模型的方式来实现这一功能。 l 与 ProcessAnalyst、Appmodeler、MetaWorks模块共同完成数据库应用的设计工作。 l 综合存储数据库设计的模型信息。 l 不但可以生成一个完整的数据库设计文档,而且数据库的表结构发生变化时还可

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 27: Power Designer数据库建模技术

·16· PowerDesigner 数据库建模技术

以带数据修改表结构。DataArchitect可以实现在修改表结构时(如删除某一列)仍然保留表中的数据。修改过程中先创建一个临时表,然后把数据复制到临时表中,

最后删除旧表建立新表,并把数据从临时表中复制到新表中,这样就保证了表结

构修改时不丢失数据。 l 有与 4GL工具的接口,可以在数据库设计时定义编辑风格、有效性规则、编辑屏蔽,这些定义可以在应用开发时使用。

输 出

DataArchitect的输出包括: l 概念数据模型,它被存储在以 CDM为扩展名的 ASCII文件中; l 物理数据模型,它被存储在以 PDM为扩展名的 ASCII文件中; l 特定文档; l 特定数据库生成脚本; l 特定存储过程和触发器脚本。

2.3 AppModeler模块

用 途 AppModeler 是 PowerDesigner 工具集中的快速应用生成器。当系统的逻辑模型建立之

后,可以用 AppModeler快速生成应用的原型。用户可以通过快速生成的原型来判断所建立的逻辑模型是否正确。采用快速原型法进行主动的迭代可以在一定程度上避免实际开发过

程中边做边改的工作方式,从而为系统的成功开发奠定良好的基础。 功 能

AppModeler可以完成如下功能: l 4GL工具的接口可以在数据库设计时定义编辑风格、有效性规则、编辑屏蔽。 l 使用 AppModeler 模块能够设计特定 RDBMS 数据库的物理数据模型,也能通过

AppModeler 模块生成某种客户端开发工具的应用程序(如:PowerBuilder 4.0 和5.0,Unface,Progress,SQL Window,Axiant,PowerHouse,NS-DK,Visual Basic 3.0,4.0,5.0,Sybase,Delphi 2.0,Power++,Web)。如果使用 PowerBuilder,AppModeler会向 PowerBuilder的系统表中插入数据,这样在 PowerBuilder中列的扩展属性就会显示出来。这里定义的扩展属性还可以马上在 AppModeler生成的程序中得到体现,例如我们把某个字段定义为下拉列表框,在生成的应用程序中这

个字段就会以下拉列表框的形式出现。 l 可以根据物理数据模型中的表和视图生成可立即运行的 PowerBuilder 和 VB 等应

用程序,包括 DataArchitect在物理数据模型设计阶段的全部功能。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 28: Power Designer数据库建模技术

第 2章 PowerDesigner简介 ·17·

使用对象

AppModeler模块支持物理数据模型的应用开发。应用开发者和Web开发者主要使用这个模块。 特 征

AppModeler包括如下特征: l 建立物理数据模型; l 逆向工程现存的数据库; l 生成第四代语言(4GL)应用程序; l 定义 4GL应用的扩展属性; l 与 DataArchitect模块、MetaWorks模块双向交换数据; l 可以实现带数据的表结构修改。

开发环境

AppModeler模块能够产生如下开发环境的应用程序: l PowerBuilder 4.0和 5.0; l Visual Basic 3.0、4.0、5.0; l Power++; l Delphi 2.0; l Web。

输 出

AppModerler的输出包括: l 特定的 4GL应用程序; l 扩展名为 PDM的物理数据模型; l 特定的文档; l 特定的数据库生成脚本; l 存储过程和触发器脚本。

2.4 MetaWorks模块

用 途

对于一个大型的项目而言,系统的分析与设计需要由多人协作完成,这就需要对模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 29: Power Designer数据库建模技术

·18· PowerDesigner 数据库建模技术

中的信息进行集中管理,从而保证模型信息的一致性。 MetaWorks 能使 PowerDesigner 的其它模块( DataArchitect, ProcessAnalyst,

WarehouseArchitect,AppModeler)在统一控制下共享和存储数据模型,我们称这些共享的模型数据为 MetaWorks字典。通过 MetaWorks模块使各种模型在整个开发周期内保持一致性和稳定性。 功 能

MetaWorks提供如下功能: l 多个设计人员可以同时修改一个模型(包括概念数据模型、物理数据模型、数据

流程图等)。MetaWorks通过提取、固化操作来实现上面的功能。修改模型信息之前,首先从数据库中读取模型信息,修改完毕后,再把模型信息固化到MetaWorks字典数据库中。如果在修改模型的时候已经由别人对模型信息作了改动,那么可

以选择是保留别人的改动还是用自己的模型信息进行覆盖。这样就保证了一个模

型可以由多人同时修改。 l 对模型加锁,使得设计组成员只能提取模型而不能固化模型。采用加锁的方法也

可以保证模型信息的正确性,但是并发性会降低。当一个人在固化模型时别人只

能提取模型而不能固化模型。 l 为不同的用户提供相应的口令保护和授权。在 MetaWorks 中,无论是系统管理员

还是用户都有口令,只有口令正确才能使用 MetaWorks 的数据字典,只有拥有相应的权限才能对模型信息进行操作。

l 便利地跨模块查看模块与子模块的信息。在 MetaWorks 中,只要拥有相应的权限就可以非常方便地查看和修改模型信息。这主要是通过MetaBrowser来实现的。

l 可以与 Powersoft的 ObjectCycle共同使用,从而可以迭代使用项目中的多个模块。 适用对象

每个 PowerDesigner用户都能使用MetaWorks,但是,它的主要使用者是项目的领导以及设计和开发组的全体成员。 特 征

MetaWorks具有如下特征: l 提取和固化模型和子模型(包括 PAM文件、CDM文件、PDM文件、WAM文件); l 为MetaWorks字典、工程、模型、子模型定义用户和使用组; l 为模型加锁和解锁; l 通过模型对象定义的比较,管理模型设计中的冲突; l 使用MetaBrowser模块或 SQL解释器查询MetaWorks字典; l 修改存储在字典中的模型对象。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 30: Power Designer数据库建模技术

第 2章 PowerDesigner简介 ·19·

输 出

MetaWorks的输出包括在模型、工程或字典级生成的特定文档。

2.5 WarehouseArchitect 模块

用 途

WarehouseArchitect模块是一种强有力的数据仓库设计工具。它兼有物理数据设计和数据仓库实现的优点。 例如,这个模块支持基于物理数据模型的多维建模和高性能索引模式。能够使用这个

模块从物理数据模型、SQL的脚本或者现存的数据库中导入原信息。 适用对象

WarehouseArchitect的使用对象是:数据模型设计者、数据仓库设计者、数据市场设计者、系统管理员。 特 征

WarehouseArchitect包括如下特征: l 能够建立一个特定数据库管理系统的模型; l 仓库结构模型(WAM)充分考虑了数据库的物理特性; l 目标数据仓库的数据库物理数据模型丰富,考虑了所选数据仓库的特性; l 从实时系统数据库到数据仓库提取数据; l 多维建模能力; l 为目标数据仓库的数据库产生数据仓库或产生数据市场生成脚本; l 现存数据库及数据仓库的逆向工程; l 定义扩展属性; l 能与 DataArchitect、MetaWorks模块双向交换数据。

输 出

WarehouseArchitect的输出包括: l 扩展名为WAM的仓库结构模型文件; l 特定的文档; l 数据库生成脚本。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 31: Power Designer数据库建模技术

·20· PowerDesigner 数据库建模技术

2.6 Viewer模块

用 途

Viewer模块以只读的、图形化的方法访问 PowerDesigner建立的模型和元数据信息。它也能为所有的模型提供报告和文档。 使用 Viewer 模块可以浏览 PowerDesigner 建立的模型信息。Viewer 中包含了

PowerDesigner的其它模块(MetaWorks、ProcessAnalyst、DataArchitect、AppModeler)。因此,不需要其它模块就能独立使用 Viewer模块。

Viewer用户能够从MetaWorks字典中提取模型,用MetaWorks的MetaBrowser可浏览字典中的模型对象。在图形建模环境下,也能查看这些模型。 适用对象

所有的终端用户都能使用 Viewer模块。 特 征

Viewer包括如下特征: l 只读访问数据模型; l 使用MetaWorks的MetaBrowser观察模型对象; l 在适当的图形模型环境下观察模型; l 对所有的模型具有生成文档的能力。

输 出

Viewer的输出所括: l 特定文档; l 企业级的数据模型视图。

小 结

l PowerDesigner包含六个模块: ◆ ProcessAnalyst; ◆ DataArchitect; ◆ WarehouseArchitect; ◆ AppModeler; ◆ MetaWorks; ◆ Viewer。

l 本书主要介绍 DataArchitect和MetaWorks模块。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 32: Power Designer数据库建模技术

第 2章 PowerDesigner简介 ·21·

思 考 题

在表 2.1中填写能够完成第一列任务的 PowerDesigner的一个或多个模块名。

表 2.1

任 务 模 块

观察所有类型的模型并制作模型文档

从 CDM生成特定 RDBMS的 PDM 为 30多种 RDBMS产生、维护数据库;逆向工程已存数据库;生成文档

产生数据库应用程序组件和模型 完成数据仓库的优化、数据市场的设计和

生成

设计出的数据结构和 CDM 中的数据结构

看起来十分相似

提取和固化模型、子模型;比较模型;查

询和浏览MetaWorks字典

通过描述业务工作过程找到数据

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 33: Power Designer数据库建模技术

·22· PowerDesigner 数据库建模技术

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 34: Power Designer数据库建模技术

本章主要介绍 MetaWorks模块的体系结构与 MetaWorks字典。学完本章后,

能够达到如下目的:

l 描述 MetaWorks的体系结构

l 为 MetaWorks产生一个数据字典

l 为 MetaWorks字典库配置一个 ODBC数据源

l 为 MetaWorks字典产生数据库表

l 连接 MetaWorks字典

3.1 MetaWorks的优点

MetaWorks字典用来存储由 PowerDesigner图形模块(DataArchitect、ProcessAnalyst、WarehouseArchitect、AppModeler)产生的数据模型。由于MetaWorks以单点控制存储在字典中的模型数据,所以团队队员能够共享数据。另外,无论是独立工作还是团队工作,都

能通过固化和提取来管理MetaWorks字典中的模型数据。 MetaWorks主要包括两个方面的优点:其一是建立共享的模型资源,其二是管理这些共

享的模型资源数据。

3.1.1 릲쿭쒣탍

一个团队需要共享概念数据模型和物理数据模型。通过MetaWorks字典与 CDM、PDM文件之间传送数据的方式,支持数据模型的共享。CDM 和 PDM 文件是本地的、单用户的ASCII文件,可以通过固化和提取的方式来共享数据模型。

第 3章

MetaWorks概述

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 35: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·23·

3.1.2 맜샭릲쿭쫽뻝

固化一个模型 把数据从 CDM或 PDM文件传送到MetaWorks字典的过程被称为固化。固化是从 CDM

或 PDM文件中把模型数据插入和修改到字典中。多长时间进行固化取决于修改共享数据的需要,也取决于授权给队员访问数据模型最新版本的时间。

提取一个模型 对团队中的每个队员来说,要与 MetaWorks 字典中的模型数据协同工作,必须把数据

写到 CDM和 PDM文件中。把数据从 MetaWorks字典写到 CDM或 PDM文件的过程称为提取。通常情况下,应该确保设计者提取的是最新版本的模型。 注 意: 产生 PDM 前,必须先在 MetaWorks 字典中固化和提取 CDM。这个作法确保了

PowerDesigner中内部 ID号的一致性。每次对 PAM、CDM、PDM或 WAM模型作

了重大修改后,都要把它固化到 MetaWorks 字典中,确保 MetaWorks 字典中

是最新的模型信息。

与 PowerDesigner共享数据的过程

与PowerDesigner共享数据的全过程如图 3 -1所示:

图 3-1

3.在 CDM工作区中建立概念数据模型

4.固化和提取这个 CDM

5.生成 PDM

6.固化和提取这个 PDM

7.每次修改 CDM后固化和提取它

8.再次生成 PDM

9.固化和提取这一新的 PDM

2.固化和提取这个空的 CDM

1.产生一个新的 CDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 36: Power Designer数据库建模技术

·24· PowerDesigner 数据库建模技术

3.2 MetaWorks的体系结构

安装MetaWorks模块之前,必须安装下面组件: l 数据库服务器 l 数据库客户 l ODBC驱动

3.2.1 쫽뻝뿢럾컱웷

MetaWorks 运行在工作站的个人计算机上,数据模型存储在数据库服务器上。MetaWorks字典以它自己的格式在数据库服务器中存储模型数据。 虽然 PowerDesigner提供了 Sybase SQL Anywhere的数据库管理系统,但是,也能使用

以下 RDBMS产生MetaWorks字典数据库: l Sybase l Oracle l Informix l DB2 l Ingres l MS SQL Server

注 意: 如果你拥有 Sybase SQL Anywhere 的全部版本,就不要使用 PowerDesigner

提供的授权版本。因为授权版本受到很大限制,它只能与 MetaWorks 一起

使用。

3.2.2 쫽뻝뿢뿍뮧

要访问数据库服务器和 MetaWorks字典的每一台计算机,都需安装 RDBMS客户端软件,这样才能保证客户与服务器之间的数据通讯。 要使用 Metaworks 软件,需要安装 RDBMS 的客户端驱动程序。但是,如果使用授权

的 Sybase SQL Anywhere数据库服务器作为你的 RDBMS,那么,也可使用它提供的授权客户。 要了解你所选择的 RDBMS的更详细的客户端需求信息,可参考联机帮助。

3.2.3 ODBC쟽뚯돌탲

ODBC也叫中间件,它使客户和服务器之间的通讯成为可能,图 3-2表示了客户、服务

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 37: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·25·

器、ODBC之间的关系。PowerDesigner使用 ODBC驱动和 DBCLient (Database/Client Connection)作为中间件,ODBC为模型的固化和提取传送请求和结果。

MetaWorks既包括 Sybase SQL Anywhere所需要的ODBC驱动程序,也包括MetaWorks客户与 Sybase SQL Anywhere服务器之间进行通讯所需要的 SQL Anywhere通讯模块。

注 意: PowerDesigner包括授权的 INTERSOLV ODBC驱动程序,本章 3.2.1节列出了

INTERSOLV ODBC驱动程序所支持的 RDBMS。

3.2.4 MetaWorks쒣뿩

MetaWorks模块,也称MetaWorks客户(它与 RDBMS客户不同),该模块向服务器发送请求。MetaWorks客户被安装在将要访问MetaWorks字典的每一台客户计算机上。

MetaWorks 客户通过固化的方法提供了把模型文件传送到 MetaWorks 字典的功能,通过提取的方法提供了把MetaWorks字典中的模型数据输出到模型文件中的功能。

MetaWorks 客户使用 ODBC 驱动和数据库通讯软件与数据库服务器进行通讯,其通讯过程如图 3-3所示。

图 3-3

MetaWorks

字典

CDM PDM

DB Com SW

ODBC

MetaWorks 客户

Client

Server

ODBC

图 3-2

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 38: Power Designer数据库建模技术

·26· PowerDesigner 数据库建模技术

3.3 MetaWorks字典

MetaWorks 字典是驻留在 RDBMS 中的一组数据库表,必须生成一个数据库来存储MetaWorks字典。图 3-4表示了 PowerDesigner的四个模块借助MetaWorks模块从数据库服务器上的MetaWorks字典中固化和提取模型对象的过程。

图 3-4

MetaWorks字典中包含概念数据模型和物理数据模型的数据、工程和用户的权限。它是模型数据共享的中心仓库。这个字典包含: l 帮助设计组管理数据和域的定义; l 有利于设计的重用信息。

注 意: 不论 MetaWorks 和 DataArchitect 模块数量有多少,一个 PowerDesigner 只

需配置一个 MetaWorks字典服务器。

3.4 MetaWorks入门

安装MetaWorks的任务要点如表 3.1所示。 表 3.1

任 务 注 释

1.安装MetaWorks客户 从第 1章获得系统最小需求和安装指导

2.安装MetaWorks服务器可使用下面的两种方法: l 安装授权的 Sybase SQL Anywhere作为本机字典的服务器

l 安装其它 RDBMS作为数据库服务器

l 同时安装 Sybase SQL Anywhere数据库引擎、客户模块、ODBC驱动和通讯模块

l 确信安装了正确的 ODBC 驱动和必需的通讯模块(如 SQL*Net for Oracle)

3.为字典产生一个数据库 其步骤是 RDBMS特定的

续表

Warehouse Architect

MetaWorks

Process Analyst

MetaWork

DataArchitect

MetaWorks

AppModeler MetaWorks

MetaWorks字典

数据库服务器

模型或子模型

的固化或提取

持续存储

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 39: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·27·

任 务 注 释

4.配置数据库作为一个 ODBC数据源 使用 ODBC Administrator。或者从MetaWorks中选择 Dictionary>Connect

5.为字典产生一个数据库表 MetaWorks首次连接到字典的过程是自动的

6.从MetaWorks客户连接到字典上 连接信息包括数据库的名称、用户 ID、口令以及字典的用户 ID和口令

实验 3-1(指导实验)使用 Sybase SQL Anywhere产生一个数据库

描述

在这个实验中,按照指导操作可产生一个 Sybase SQL Anywhere的数据库。

步骤

1. 打开 SQL Central,它是由 Sybase SQL Anywhere提供的。常用的打开方法有三种: (1)打开 Sybase SQL Anywhere程序组,单击“SQL central”图标。 (2)运行可执行文件 SCVIEW.EXE。 (3)选择开始→程序→Sybase SQL Anywhere 5.0→SQL Central。

2. 在图 3-5的右窗格中,双击“Utilities”展开该目录。

图 3-5

3. 双击图 3-6右窗格中的“Create Database”项。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 40: Power Designer数据库建模技术

·28· PowerDesigner 数据库建模技术

图 3-6

4. 在打开的“Create a SQL Anywhere Database”对话框(图 3-7)中,单击“Browse”按钮,并找到要存放这个数据库文件的目录,然后单击“下一步”按钮。

5. 键入“pdclass”作为数据库名,并单击“打开”按钮(图3-8)。

图 3-7

图 3-8

6. 在打开的“Create a SQL Anywhere Database”对话框(图 3-9)中,单击“下一步”按钮。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 41: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·29·

图 3-9

7. 在打开的“Choose the Transaction Log Options”对话框(图 3-10)中,保持缺省选项“Maintain a log file in this path and file”,并单击“下一步”按钮。

图 3-10

8. 在打开的“Mirror the Transaction Log”对话框(图 3-11)中,接受缺省选项,并单击“下一步”按钮。

图 3-11

9. 在打开的“Choose the Database Attributes”对话框(图 3-12)中,保持缺省选项,

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 42: Power Designer数据库建模技术

·30· PowerDesigner 数据库建模技术

并单击“下一步”按钮。

图 3-12

10. 在打开的“Select a Page Size”对话框(图 3-13)中,保持缺省,并单击“下一步”按钮。

图 3-13

11. 在打开的“Select Default Collation Sequence”对话框(图 3-14)中,选择排序方式或接受缺省选项,并单击“下一步”按钮。

图 3-14

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 43: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·31·

12. 当屏幕显示“Ready to Create Database”消息框(图 3-15)时,表明数据库已经产生,单击“完成”按钮。

图 3-15

13. 当屏幕显示的“Create SQL Anywhere Database”对话框(图 3-16)中出现“Initializing done”时,单击“Close”按钮。

图 3-16

14. 选择文件→退出,关闭“SQL Central”窗口。

3.4.1 엤훃쫽뻝뿢ퟷ캪ODBC쫽뻝풴

字典的数据库必须被配置为 ODBC数据源,其步骤如下: 1. 打开“ODBC Date Sources”对话框,显示有效驱动列表。 2. 为字典增加 Sybase SQL Anywhere驱动(如果正使用别的 RDBMS,请选择适当的

ODBC驱动)。 3. 在 ODBC 对话框中键入适当的数据源选项,根据系统安装配置键入 Database

Name,User ID,Password,Server Name以及 Database File。 4. 选择刚从数据源对话框中产生的 ODBC数据源。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 44: Power Designer数据库建模技术

·32· PowerDesigner 数据库建模技术

实验 3-2(指导实验) 把字典数据库配置成 ODBC数据源

描述 数据源定义了MetaWorks与数据库的连接。虽然MetaWorks可以找到现存的数据源, 但是,必须为刚由 Sybase SQL Anywhere产生的数据库产生一个新的数据源。 步骤 为了把数据库配置成 ODBC数据源,进行如下操作: 1. 在MetaWorks中,选择 Dictionary→Connect,打开“Connect”对话框(图 3-17)。 2. 单击“Connect”对话框中“?”按钮,上一个实验中建立的数据库名称没有出现 在“Data Sources”窗口(图3-18)的列表中。

图 3-17

图 3-18

3. 单击“Data Sources”窗口中的“Add”按钮,打开“ODBC数据源管理器”窗口 (图 3-19)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 45: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·33·

图 3-19

4. 单击“添加”按钮,打开“创建新数据源”窗口(图 3-20)。 5. 选择“Sybase SQL Anywhere 5.0”,然后单击“完成”按钮,打开“SQL Anywhere

ODBC Configuration”对话框(图3-21),仿照图 3-21的数据,填入合适的内容(一般通过“Browse”按钮更容易填写),然后单击“OK”按钮。

图 3-20

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 46: Power Designer数据库建模技术

·34· PowerDesigner 数据库建模技术

图 3-21

注 意: 如果没有使用 Sybase SQL Anywhere,配置参数可能有所不同。下表包含的信

息只用于 Sybase SQL Anywhere。

ODBC对话框的配置选项如表 3.2所示。 表 3.2

选 项 描 述

Data Source Name 指定的数据源名称。最好选择调用数据库名的名称

Description 描述数据源的文本

User ID 键入 DBA,它是缺省 Sybase SQL Anywhere的用户 ID

Password 键入 SQL,它是缺省 Sybase SQL Anywhere的口令

Server Name 服务器名,可以接受缺省值

Database Name 可选择前面实验中产生的数据库名

Database File 数据库文件的路径。能够键入路径,或者单击“Browse”按钮

6. 单击“OK”按钮,返回到“ODBC数据源管理器”窗口。 7. 单击“确定”按钮,返回到“Data Sources”窗口,刚产生的数据源名出现在列表中。

8.选择刚产生的数据源。 9.单击“OK”按钮,返回到“Connect”对话框,显示连接数据。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 47: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·35·

3.4.2 캪MetaWorksퟖ뗤닺짺쫽뻝뿢뇭

MetaWorks字典是一个数据库表的集合。在这些库表中将存储数据库模型的模型对象定义。当 MetaWorks首次连接到存放模型的数据库上时,必须为 MetaWorks字典产生数据库表,其步骤如下:

1. 通过 ODBC数据源连接到数据库上。 2. 如果数据库表不存在,单击“Create”按钮,为字典产生数据库表。 3. 如果数据库表存在,可直接修改MetaWorks字典。

实验 3-3(指导实验) 为字典产生数据库表

描述 根据指导操作,为MetaWorks字典产生数据库表。 步骤

1.在“Connect”对话框(图 3-22)中,接受 User name的缺省值(dba)。

图 3-22

2. 为 dba键入 Password(sql)。 3. 接受字典的 User name 和 Password缺省值。 4. 单击“OK”按钮。 5. 如果找到字典的数据库表,在 MetaWorks 主窗口的状态条中显示“Connection

established”,连接成功,结束连接过程。 6. 如果MetaWorks没有找到字典的数据库表,将显示一个错误信息确认框,单击“确定”按钮,打开“Dictionary Table Installation”对话框(图 3023)。

7. 在“Dictionary Table Installation”对话框中,键入 SQL语句结束符,或键入字典使用的 RDBMS所需要的命令结束符。SQL Anywhere使用分号(;),为完成这个练习请接受缺省。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 48: Power Designer数据库建模技术

·36· PowerDesigner 数据库建模技术

图 3-23

8. 单击“Create”按钮,为字典产生数据库表。 9. MetaWorks显示关于字典安装过程的“Messages”窗口(图 3-24)。当出现“Dictionary

creation completed”时,单击“OK”按钮。

图 3-24

注 意: 可通过后面章节中的逆向工程方法生成 MetaWorks 字典的物理数据模型、概

念数据模型,从而对 MetaWorks字典表的详细结构做进一步的了解。

10. 退出MetaWorks。

小 结

l MetaWorks通过其字典及管理共享的工具支持团队数据建模和数据库设计。 l MetaWorks 工作在客户/服务器方式下,它本身是客户模块,而字典服务器包含通讯软件和 ODBC。

l MetaWorks客户提供了从 CDM或 PDM文件到MetaWorks字典的固化方法,也提供了从MetaWorks字典到 CDM或 PDM文件的提取方法。它使用 ODBC驱动程序和数据库通讯软件与MetaWorks服务器通讯。

l MetaWorks字典是在一种 RDBMS上的数据库表的集合。它包含概念数据模型、物理数据模型、工程以及用户权限的数据等。它为共享数据提供了一个中心仓库。

l MetaWorks字典数据库必须被配置为 ODBC数据源。ODBC数据源管理器为配置、修改、删除 ODBC数据源提供了一个界面,这一界面在MetaWorks中也能通过连

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 49: Power Designer数据库建模技术

第 3章 MetaWorks概述 ·37·

接窗口访问。

思 考 题

1.说明MetaWorks客户/服务器体系结构的组成。 2.解释安装并连接到MetaWorks字典的步骤。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 50: Power Designer数据库建模技术

·38· PowerDesigner 数据库建模技术

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 51: Power Designer数据库建模技术

本章简要介绍建立了概念数据模型和建立物理数据模型的过程,介绍了概

念数据模型(CDM)与物理数据模型(PDM)工作区的主要内容及特征。学完本

章后,能够达到如下目的:

l 定义概念数据模型

l 定义物理数据模型

l 在 DataArchitect环境下建立概念数据模型和物理数据模型

l 识别概念数据模型中的对象

4.1 DataArchitect 的特征

二级数据建模和迭代数据建模是 DataArchitect的两个基本特征,它具有如下特点: l 建模灵活; l 编辑容易; l 技术人员和非技术人员都能方便使用它; l 可在多个 RDBMS上实现; l 易于维护和设计,适用于较大模型的建设。

4.1.1 뛾벶쫽뻝붨쒣

二级数据建模把设计分成如下两个级别: l 概念级,CDM代表业务信息需求,不考虑在数据库上的物理实现。 l 物理级,PDM指定了物理实现的具体细节,这些细节包括:目标 RDBMS的特征、

改善性能的措施、数据库的可用性。 图 4-1表示了二级数据建模的大致过程,注意图中箭头的方向是单向的。 在 DataArchitect中,经过下面几个阶段完成数据建模过程: 1. 开发一个 CDM。CDM文件可以从 PAM中产生,也可以在 DateArchitect中直接建立。

第 4章

DataArchitect概述

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 52: Power Designer数据库建模技术

第 4章 DataArchitect概述 ·39·

2. 在MetaWorks字典中固化和提取 CDM(这个阶段将在后面的章节中讨论)。 3. 从 CDM中产生一个 PDM,并在细节上增强它,使其适应特定的 RDBMS平台。 4. 在MetaWorks字典中固化和提取 PDM(这个阶段将在后面的章节中讨论)。 5. 从 PDM文件中,生成数据库生成脚本或者生成数据库。 6. 从 PDM文件产生仓库结构模型。 图 4-2描述了数据建模的全过程。

图 4-1

图 4-2

数据库建模过程不必按上述顺序进行,特别是在开发一个数据库模型时,应在这些阶

段内部和阶段之间经过多次迭代。

4.1.2 뗼듺쫽뻝붨쒣

DataArchitect 支持迭代数据建模。这意味着在模型开发的生命周期内,CDM 或 PDM开发过程的任何一个阶段,都能回到前一个阶段。 例如,当增强 PDM时,可能需要修改 CDM。在 DataArchitect中,能够修改 CDM,然

后生成 PDM,这个 PDM 不但增加了在概念级所作的修改,而且也保持了在物理级已作的增强。图 4-3是迭代数据建模的过程。

生成 CDM

生成 PDM

PAM

产生 CDM

增强 PDM

WA

DB

DB

CDM

SQL Anywhere

Oracle System 11

SQL Anywhere System 11 Oracle

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 53: Power Designer数据库建模技术

·40· PowerDesigner 数据库建模技术

图 4-3

注 意: 为了保持 CDM和 PDM的同步,应该在生成 PDM前把 CDM固化到 MetaWorks字

典中。

为了避免数据模型和数据流程图出现不可挽回的损失,应该只通过

PowerDesigner环境修改 PAM、CDM、PDM和 WAM,不要在 MetaWorks字典数据

库中直接修改模型数据。

4.2 DataArchitect的工作环境

DataArchitect 为二级数据建模提供了两种工作环境:CDM 工作区和 PDM 工作区。这两个工作区是建立概念数据模型和物理数据模型的主要工作区,是学习建模的主要工作 环境。

CDM工作区

CDM 工作区是显示概念数据模型的区域。这个工作区(图 4-4)显示实体(Entity)、联系(Relationship)、继承连接(Inheritance link)等概念级图形符号。

图 4-4

产生 CDM 生成PDM

增强 PDM

生成PDM修改 CDM 增强 PDM

生成PDM进 一 步 修 订 增强 PDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 54: Power Designer数据库建模技术

第 4章 DataArchitect概述 ·41·

PDM工作区

PDM工作区是显示物理数据模型的区域。这个工作区(图 4-5)显示表(Table)、参照完整性(Reference Integrity)以及视图(View)等物理级图形符号。

图 4-5

CDM和 PDM

通过简单的生成过程,可把 CDM转换成 PDM。PDM能适应特定的 RDBMS,因此,对完成模型的物理实现来说,从 CDM到 PDM具有重要意义。

4.3 工作区的特征

CDM和 PDM数据模型中对象的文本信息可通过下面方法显示出来: l 列表(List); l 属性窗口(Property Sheet):

◆ 定义(Definition) ◆ 描述(Description) ◆ 注释(Annotation)

l 业务规则(Business Rule)。 CDM和 PDM的两个工作区中都包含开发和增强模型的工具选项板(Tool Palette)。

4.3.1 쇐뇭

列表(List)把相同类型的数据模型对象用文本的形式呈现给用户。如实体列表(a list

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 55: Power Designer数据库建模技术

·42· PowerDesigner 数据库建模技术

of Entity)、表列表(a list of tables)等。 选择 Dictionary→List of Entities,打开“List of Entities”对话框(图 4-6)。

图 4-6

4.3.2 쫴탔뒰뿚

属性窗口(Entity Properties)反映了数据模型及其对象的一般信息,按如下方法操作打开属性窗口(图 4-7):

1. 用鼠标右键单击对象(例如,Author实体)。 2. 从弹出的下拉菜单中选择“Properties”。

图 4-7

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 56: Power Designer数据库建模技术

第 4章 DataArchitect概述 ·43·

定义属性

各属性的具体内容如表 4.1所示

表 4.1

属性(Properties) 描述(Description)

名称(Name) 数据模型对象的名称,一般使用汉语

代码(Code) Code使用在脚本中,用于产生数据库、数据库对象、存储过程、触发器等。AppModeler 生成的 4GL 客户应用程序中,也使用 Code

标签(Label) Label 是简短的、用来描述对象的一段文字,它用于AppModeler 生成的 4GL 客户应用程序中,用来识别窗口或报表中的数据对象

数量(Number) Number是在应用系统的实体中将要存放的记录数,它是用来计算数据库尺寸的

产生表(Generate Table) 表示实体是否在物理数据库中生成对应的表

命名标准化

填写 Name、Code和 Label的内容时,应该使用规范的命名标准。下面是常用的一组命名方法: l Name应使用业务领域的术语,这些术语在业务领域中应该是规范的,业务人员能

够准确地理解这个名词,一般用汉语表示。 l Code应使用简短的术语,Code的长度受特定 RDBMS和 4GL的制约,不使用汉

字做为 Code的内容,推荐使用简明的英文。 l Label应使用简短的、描述性的语言。在用户界面和报告中,这些术语作为数据说

明性的标题,应使用汉语。 Description属性

Description是用来描述模型或模型对象的。它是模型固定文档的一部分,能从 CDM传送到 PDM。通过描述模型与模型对象,使模型更加容易理解。Description也能反映到生成的文档中(图 4-8)。

Annotation属性

Annotation是模型内部的一个工作记事簿,它起提醒作用,主要记载需要注意的地方。例如设计者可通过 Annotation说明数据项的修改属性。 在从 CDM生成 PDM,或从 PDM逆向工程为 CDM时,根据选项确定 Annotation是否

传递(图 4-9)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 57: Power Designer数据库建模技术

·44· PowerDesigner 数据库建模技术

图 4-8

图 4-9

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 58: Power Designer数据库建模技术

第 4章 DataArchitect概述 ·45·

4.3.3 튵컱맦퓲

业务规则(Business Rule)是根据业务流程或操作方法编制的表达式。例如:“定单发运日期必须晚于或等于定单制定日期”就是一个业务规则。选择 Dictionary → List of Business Rules,打开“Listof Bussiness Rules”窗口(图 4-10),可以查看或编辑一个模型的业务规则。

图 4-10

4.3.4 릤뻟톡쿮냥뷩짜

工具选项板中包括制作模型的各种工具,使用这些工具能够快速地进行建模,对 开发和维护模型非常有用,其具体内容如表 4.2所示。

表 4.2

功能 工具符号 名称或描述

操纵对象 选择一个对象

选择多个对象,并移动它们。用于移动部分图形符号的位置

选中屏幕上的所有符号并移动。用于移动整个图形符号的位置

用它单击某个符号,可进行删除操作

对细节或全局模型缩小或放大 通过拖拽迅速放大模型对象

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 59: Power Designer数据库建模技术

·46· PowerDesigner 数据库建模技术

续表 功能 工具符号 名称或描述

缩小模型

放大模型

产生数据模型对象 在 CDM中产生实体,在 PDM中产生表

在 CDM中建立联系,在 PDM中建立参照完整性

在 CDM中建立继承连接的分类联系

在 PDM中产生视图

编辑属性

添加文本

添加直线

添加矩形

添加椭圆

添加圆角矩形

添加折线

添加多边形

实验 4-1(指导实验) 熟悉 DataArchitect工作环境

目的 完成这个实验后,应该能够描述 DataArchitect的 CDM工作区、工具选项板以及 CDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 60: Power Designer数据库建模技术

第 4章 DataArchitect概述 ·47·

对象。 描述 在这个实验中,打开 SCHLIB.CDM 文件(这个文件读者可根据书中的要求建立),在

这个数据模型中包含各种概念数据模型对象。练习之后,退出 SCHLIB.CDM,并保存这个文件。在这个实验的附属实验中,还可对模型进行修改,建立另外的版本。

l 从工具选项板中单击一个工具。 l 要在模型工作区中产生一个对象符号,先单击工具选项板中能产生该对象的工具,

然后单击工作区中想要放置这个对象的地方,如还想产生另一个同类对象可在工

作区的其它位置再单击一下。 l 在工具选项板以外的任何地方单击鼠标右键,可释放已选择的工具。 l 要打开一个对象的属性窗口,可选用下列方法之一:

◆ 双击模型对象的图形符号。 ◆ 先用鼠标右键单击模型对象的图形符号,再从弹出菜单中选择“Properties”。 ◆ 在工具选项板中单击属性工具,然后单击模型对象图形符号。

l 要观察特定类型数据模型对象的列表,可从“Dictionary”菜单中选择特定类型对象列表。

步骤

1. 启动 DataArchitect模块。在 CDM工作区中,打开 SCHLIB.CDM(File→Open)。 2. 选择 Dictionary→List of Entities。 实体是业务领域中具有特定意义的对象。在概念数据模型中它是一个重要的模型

对象,用矩形框表示;在数据库中以表(Table)的形式出现。 (1)从实体列表框中找到书(Book)实体。

(2)关闭“List of Entities”对话框。 3. 在模型工作区中将鼠标指针置于 Book实体上,用鼠标右键单击该实体,从弹出的菜单中选择“Properties”,打开 Book实体的 Properties窗口。 (1)找到 Name、Code、Label; (2)找到 Description、Annotation; (3)找到附加在 Book实体上的业务规则; (4)关掉 Book实体的 Properties窗口。

4. 实体可作为一个独立的模型对象进行操纵。例如可以移动实体,可以改变实体的大小。

5. 先选择三个实体,然后选择 Arrange→Align,并且按下 Ctrl+向上箭头,观察出现了什么?选择 Edit→Undo,撤消刚才的操作。

6. 使用阴影(Shadow)可以增强模型的视觉效果,便于直观地区分模型对象。用鼠标右键单击模型对象,从弹出的菜单中选择“Shadow”。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 61: Power Designer数据库建模技术

·48· PowerDesigner 数据库建模技术

注 意: DataArchitect允许模型对象使用不同的颜色。例如,正在设计的模型对象

使用一种颜色,已完成设计的模型对象使用另外一种颜色。设计中不宜使用

太多的颜色,否则不但不会清晰,反而显得很乱。另外还应考虑打印彩色模

型所需的设备和时间。

7. 选择 Dictionary→List of Entities,打开“List of Entities”对话框,选择 Book实体,然后单击“Attribute”按钮,了解 Book实体的属性。 在概念数据模型中属性(一个数据项)是有意义的最小信息单位,属性与实体相

联系。属性反映在数据库中是表的列(Column)。 8. 关闭“List of Entities”对话框。 9. 选择 Dictionary→List of Data Item,打开“List of Data Item”对话框,找到与 Book实体有关的数据项。和前一步看到的相同吗?数据项和属性有不同的地方吗?

10.关掉“List of Data Item”对话框。 11.选择 Dictionary→List of Domain,打开“List of Domain”对话框。 域(Domain)是建立在标准数据类型上的一种结构,域可以应用到模型中的多个数据项上。当修改一个域时,就全局地修改了与域有关的数据项。使用域可使不

同实体中同一数据项的数据类型相一致。 12.从“List of Domains”对话框中选择一个域,单击“Used By”按钮,可以看到使用了该域的所有数据项。如果“Used By”是灰色的,说明没有任何数据项使用该域。

13.选择 Dictionary→List of Relationship,找到 Book与 Publisher的联系。 联系反映了实体间或实体内部的各种关系。联系的概念、基数、存在性用图 4-11所示的图形表示:

图 4-11

14.找到雇员和专业人员的继承连接关系。 继承连接关系是一种特殊的联系,反映了实体之间的分类关系,连接了超类和子

类。超类是实体公共属性的集合,子类是各种特定属性的集合。子类之间的关系

0 或 1

0 或多

1仅有 1

1或多

依赖

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 62: Power Designer数据库建模技术

第 4章 DataArchitect概述 ·49·

可以是排斥型的,也可以是非排斥型的。 15.关闭 DataArchitect模块。

킡 뷡

l CDM反映了业务领域中信息之间的关系,它不依赖于物理实现。只有重要的业务信息才出现在 CDM中。

l PDM定义了模型的物理实现细节。例如,所选 RDBMS的数据类型特征、索引定义、视图定义、存储过程定义、触发器定义等。

l CDM、PDM的 Lists、Properties sheets、Descriptions、Annotations以及 Rule中记录了模型的各种文本化信息。

l CDM和 PDM环境中拥有工具选项板和菜单项,帮助设计者开发和增强模型。

쮼 뾼 쳢

1. 什么是概念数据模型? 2. 什么是物理数据模型? 3. 什么是 CDM文件、PDM文件? 4. 搞清 DataArchitect中最常用的三个特性,描述概念数据模型和物理数据模型中的

模型对象。 5. 搞清并定义 CDM中的五个对象。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 63: Power Designer数据库建模技术

本章主要介绍了建立概念数据模型的方法以及在建立概念数据模型中的

注意事项,本章还详细介绍了概念数据模型中的主要概念和术语,这对于把现

实世界中的信息转换成概念数据模型具有重要的指导意义。学完本章后,能够

达到如下目的:

l 建立概念数据模型(CDM)

l 把问题陈述设计成一个概念数据模型

l 定义业务规则

l 定义域、数据项、实体及实体属性

5.1 产生概念数据模型

概念数据数据模型(CDM)设计是建模过程的关键阶段,此阶段把现实世界中需要保存的信息抽象成信息世界中的实体和联系,产生实体联系图。这一阶段可以为高质量的应

用提供坚实的基础。 建立概念数据模型是一项综合性的工作。这项工作应由具有业务领域知识的专家和数

据模型专家参加。业务领域专家和数据模型专家共同合作,完成一个清晰的、包括全部业

务问题的综合文本,然后由数据模型专家把这些原始数据转化成数据流程图和概念数据模

型。

PUBS2INT业务问题

例如,PUBS2INT的综合文本陈述如下: 建立的管理信息系统应能够通过书的销售了解作者的版税付款情况。 在指导实验中,可以产生一个概念数据模型说明这个业务问题。 根据综合文本建立概念数据模型后,需对这个模型进行反复修改,使其能够全面地反

映业务需求。

建立概念数据模型

第 5章

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 64: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·51·

产生 CDM的方法

产生 CDM的方法有三种: l 在 DataArchitect中产生一个新的 CDM模型。 l 先建立一个不含任何模型对象的空 CDM,然后从流程分析模型(PAM)中贯入数

据。 l 通过对现存数据库进行逆向工程,生成 PDM,再把 PDM转换成 CDM。 缺省情况下,当进入 DataArchitect环境时,打开一个新的 CDM窗口。

实验 5-1(指导实验) 打开一个概念数据模型

描述 本实验中,通过 DataArchitect打开一个完成了部分工作的MYPUBS2.CDM文件,该文件中存放着 PUBS2INT数据库的信息。

步骤 1.在 DataArchitect的 CDM工作区中,选择 File→Open。 2.从存放MYPUBS2.CDM的目录中打开该文件。

打开该文件后,就可以对这个模型做各种修改和补充工作。有关这些工作的具体内容

将在本章的其它部分介绍。

实验 5-2(指导实验) 打开模型特性窗口

描述 在这个实验中,将打开 MYPUBS2.CDM 的特性窗口。CDM 的模型特性,有些是由用户定义的,有些是系统自动产生的。

步骤

定义或修改数据模型特性的步骤如下: 在 CDM工作区中,选择 DictionaryModel→ Properties,打开“Model Properties”窗(图5-1)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 65: Power Designer数据库建模技术

·52· PowerDesigner 数据库建模技术

图 5-1

5.2 完成 CDM特性窗口的工作

在“Model Properties”窗口中,“Definition”页所显示的模型特性如表 5-1所示: 表 5.1

特 性 描 述 最大字符长度

工程名称(Project Name) 用户为工程定义的名称。一个工程可包含一个或多个 CDM、PDM及其子模型

80

工程代码(Project Code) 用户为工程定义的引用名称代码 80 名称(Name) 用户为模型定义的名称 80 代码(Code) 用户为模型定义的引用名称代码 80 标签(Label) 用户为模型定义的描述性的标签 80 作者(Author) 用户定义的模型的作者 80

版本(Version) 用户定义的模型的版本号,该版本号用于跟踪模型的修改和版本控制

8

语言(Language) 显示信息的语言 文件(File) 系统生成的 CDM文件的全称

产生日期(Date Created) 模型产生的日期和时间,它是由系统自动生成的

修改日期(DateModified) 最近修改模型的日期和时间,它是由系统自动生成的

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 66: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·53·

实验 5-3(指导实验) 定义 CDM特性

描述 在这个实验中,可以定义MYPUBS2.CDM的模型特性。 步骤 1.在“Definition”页(图 5-2)中,键入工程名称(Project Name)、工程代码(Project code)、

名称(Name)、代码(Code)、标签(Label)、作者(Author)及版本(Version)的内容(请参看下面节省时间的方法)。

图 5-2

2.单击“OK”。 节省时间的方法

为了使工程、模型或模型对象的内容与代码的内容一致,可进行如下操作: 1.在 Name域中键入 abcd。 2.把光标移到 Code域中。 3.单击 Code域右边的等号(=)按钮。

注 意: 完成练习后,选择 File→Save,保存所做的工作。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 67: Power Designer数据库建模技术

·54· PowerDesigner 数据库建模技术

实验 5-4(指导实验) 在模型的标题框中显示信息

描述 在这个实验中,跟随指导操作,可以从 MYPUBS2.CDM 的模型特性窗口中显示选择的信息,模型的标题框显示如图 5-3:

图 5-3

步骤 选择 Edit→Add Title。

注 意: 在 CDM 和 PDM 中都能够增加标题框。要从标题框中直接打开模型特性窗口,

可单击工具选项板上的“属性”工具,然后双击标题框。

实验 5-5(指导实验) 为模型设置显示属性

描述

通过设置“Display preferences”选项,数据模型能够以多种不同的风格显示数据模型对象。在这个实验中,跟随指导操作,改变模型显示属性设置,使模型按特定的要求显示

出来。这些参数包括以下几方面: l Name&Code显示格式:包括 None、Truncatinon、Word wrapping。 l Symbols显示格式:包括模型对象的大小、前景色、背景色、文本的颜色和字体。 l General显示格式:包括实体符号中显示哪些内容,联系线上显示哪些内容,改变

实体框的风格。 步骤 1. 在MYPUBS2.CDM工作区,选择 File→Display Preferences,打开“Display Preferences”

窗口。 2. 在“Display Preferences”窗口,选择“Symbols”页(图 5-4)。 3. 选择“Entity”和“Entity Name”,然后单击“Modify”。 4. 选择“Arial”字体,“10”号字及“Bold”风格,如图 5-5所示然后单击“OK”按钮。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 68: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·55·

图 5-4

图 5-5

注 意: 能够通过“Model Options”设置模型的其它参数。方法是:选择 File→Model

Options,不要花费不必要的时间改变缺省的模型选项设置,只有当缺省特性

不符合工作需求时,才改变这些特性的设置。

例如,如果要限制对象在数据库和 4GL程序中名称的长度为 30个字符,那么

就应该把 Code特性的长度由 80改为 30。如果要使用 Microsoft Word制作文

档,则应该把编辑器特性由 DataArchitect内部编辑器改为 Word。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 69: Power Designer数据库建模技术

·56· PowerDesigner 数据库建模技术

实验-5-6(指导实验) 在 CDM中定义问题的描述

描述 在这个实验中,跟随指导操作,可以在MYPUBS2.CDM的 Description中,输入下面的问题描述文本:

MYPUBS2.CDM要求通过书的销售了解该书作者的版税付款情况。

步骤

1. 随模型打开 CDM 工作区,选择 Dictionary→Model Properties,打开“Model Properties”窗口。

2. 选择“Description”页。 3. 输入业务问题描述,然后单击“OK”按钮。

5.3 定义业务规则

业务规则使用自然语言描述一个业务如何进行操作。在 CDM中,业务规则是重要的文档内容,这些规则在物理数据模型中要用客户端代码或服务器端代码实现。 业务规则的类型

业务规则有四种类型,如表 5.2所示: 表 5.2

类型 描述 例子

定义型(Definition) 表达了在信息系统中一个对象的固有特性。定义型规则通常用来描述实体

一本书用 ISBN号、书名、出版日期和图书号唯一确定

事实型(Fact) 表达了在信息系统中必然的或存在的事实。事实型规则通常用来描述联系 作者写书

有效型(Validation) 在信息系统中对属性的取值约束 职员的死亡日期可能是空值,或者是比出生日期晚的

一个日期值 公式型(Formula) 在信息系统中常用来描述计算属性 总量等于单价乘以数量

定义业务规则是一个反复的过程。在数据建模的实践中会发现:建模的早期,只能定

义一些基本的业务规则,随着建模过程的不断展开才会逐步完善领域中的业务规则。

在概念级定义规则

所有的业务规则应该能够表达业务问题的全部信息。这些规则应该能够定义实体、联

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 70: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·57·

系的状态、数据一致性及业务表达式。 把实体及相应的规则填加到数据模型后,应根据初始问题的叙述确定这些对象是否符

合要求。如果一个实体超出了问题域的范围,必须确定实体是否可以解决业务问题,而且

应该重新定义问题的陈述,以反映这个事实。在 CDM中,业务规则主要用于生成文档。

在物理级定义规则

在 CDM转换成 PDM的过程中,概念级定义的业务规则直接转换成物理级的业务规则。在 PDM中,实现业务规则需要使用特定的 RDBMS的代码(例如,触发器或存储过程)。因此,在 PDM中,有效性规则应该用 SQL代码写成,以便于实现。

打开业务规则列表(图 5-6)的方法是:选择 Dictionary→List of Business Rule。

图 5-6

定义业务规则的步骤

在 DataArchitect中,定义业务规则包括下列步骤: 1.先产生业务规则,再定义这些规则(在 CDM中)。 2.把一个表达式附加到业务规则上。 3.把业务规则应用到数据模型对象上(在 CDM或 PDM中)。

实验 5-7(指导实验) 产生和描述业务规则

描述

在这个实验中,跟随指导操作,产生并描述一个定义型(Definition)的业务规则。把业务规则的名称定义为:出版商定义(Publisher Definition)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 71: Power Designer数据库建模技术

·58· PowerDesigner 数据库建模技术

步骤 1. 在MYPUBS2.CDM工作区,选择 Dictionary→List of Business Rules,打开“List of

Business Rules”对话框。 2. 在 Name域中输入:出版商定义;在 Code域中输入:Publisher Definition。 3. 在 Type域中选择“Definition”。 4. 单击“Definition”按钮,打开“Business Rule Definition”对话框。 5. 在“Description”框中,输入下面的业务规则描述: 出版商是由出版商 ID和出版商名称定义的。

6. 单击“OK”。

5.3.1 냑튻룶뇭듯쪽뢽볓떽튵컱맦퓲짏

表达式是实现业务规则的形式化表示,通常在物理设计阶段,把表达式附加到业务规

则上。表达式是用目标 RDBMS的语法以及实现数据库和客户应用程序的 4GL语法写成的。这一过程将在第9章中讨论。

注 意: PowerDesigner对表达式不进行语法检查。

5.3.2 냑컱맦퓲펦폃떽쫽뻝쒣탍뛔쿳짏

在 CDM中的业务规则

在概念数据模型中,业务规则可应用到下面的数据模型对象上: l 域(Domain) l 联系(Relationship) l 数据项(Data Item) l 继承连接(Inheritance Link) l 实体(Entity)

在 PDM中的业务规则

在物理数据模型中,业务规则可应用到下面的数据模型对象上: l 域(Domain) l 参照完整性(Reference) l 表(table) l 索引(Index) l 列(Column) l 视图(View)

注 意 业务规则定义是一个反复进行的过程,可以在概念级产生业务规则,在物理

级应用这些业务规则。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 72: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·59·

从业务规则列表或某些对象的特性窗口,能够把业务规则应用到现存的模型对象上,

能够从对象列表或模型中访问选择的对象。

5.4 产生实体

实体是带有描述特性的可以辨别的对象。在概念数据模型中,只有业务问题需要的对

象才被定义为实体,一个实体可能是有形的或无形的、具体的或抽象的、有生命的或无生

命的。 业务问题定义对象是通过实体来确认的。

步骤

在 DataArchitect环境下,产生实体包括四个步骤: 1.产生数据项; 2.产生实体和实体属性; 3.定义域; 4.从 ProcessAnalyst模型(PAM)中自动产生实体。 DataArchitect中,执行这些步骤的顺序具有很大的灵活性。无论先从哪一步开始,在生

成每一个数据对象时,都能够定义业务规则。

从数据项开始

从数据项开始产生实体是“自底向上”的技术。从最小的数据单位开始向上构造,当

收集到足够的信息时进行归纳,把数据项分组放入不同的实体中,然后归纳产生域。使用

这种方法,当访问个别或小组业务领域专家时,能够由 DataArchitect获得更多的信息。 从实体/实体属性开始

从实体开始,即从感兴趣的对象开始,然后指定它们的属性。当收集到足够信息时,

进行归纳产生域。当访问个别或小组业务领域专家时,使用这种方法也能够由 DataArchitect获得足够的信息。

从域开始

产生实体和数据项之前先定义域是“自顶向下”的技术。使用这种方法,在收集开发

数据模型前,必须有某些业务问题所需要的预备知识。为了暴露这些细节,要求归纳后定

义原来未知的域。例如:能够预料人力资源模型中有名字数据(如职工名、部门名)和日

期数据(如出生日期、参加工作日期、退休日期),应该把这些数据定义成域,以此对数据

进行标准化。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 73: Power Designer数据库建模技术

·60· PowerDesigner 数据库建模技术

从 ProcessAnalyst模型(PAM)开始

实体能够从 ProcessAnalyst产生的流程分析模型(PAM)中引进。在 ProcessAnalyst中,选择一个数据存储,然后单击鼠标右键,从弹出的菜单中选择“Properties”,打开“Data Store Properties”窗口,选中“IsEntity”检查框,这时,当 PAM被输入到 CDM中时,就产生了一个实体。

在实验中定义实体

在实验中可以使用下列步骤建立实体: 1. 定义域; 2. 定义实体; 3. 使用可用的域定义实体属性的数据类型; 4. 产生数据项。 这是一种产生实体并附带地产生数据项的有效方法。

5.5 定义域

域是一种属性或数据项所有可能出现的值,一个或多个实体属性或者数据项能够引用

这个值。这些属性或数据项使用业务知识来定义。不同的数据项或属性通过使用同一个域

来保证它们的数据类型和长度一致。例如:先定义一个域 Name,这个域的数据类型和长度是 Char(8),在整个模型的不同实体中可能有:保管员、证明人、审批领导、财务主管等填写人名的属性,因为这些属性中存放的数据都是人的姓名,所以它们可以选用 Name域。使用 Name 域后,这些属性的数据类型和长度都是 Char(8),当在设计过程中把域 Name 的数据类型和长度修改成 Char(10)时,所有使用该域的属性,其数据类型和长度都自动转换成Char(10)。

域列表窗口

在 DataArchitect中,由“List of Domains”窗口(图 5-7)中的 Name、Code和 Label定义域。

l 指定域的 Name、Code和 Label; l 指定域的数据类型、长度与域的精度; l 指定域的检查约束; l 描述一个域; l 如果需要的话,给域加注释,注释中填写该域的注意事项。

数据类型及其实现

在概念级进行数据建模不涉及实现细节,诸如特定的 RDBMS如何操纵数据等。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 74: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·61·

DataArchitect支持概念级和物理级的独立。这样,在开发概念数据模型时不必考虑特定的 RDBMS 的特性,直到将要产生物理数据模型时才考虑特定的 RDBMS 的特性(在联机帮助中描述了 DataArchitect支持的概念数据类型,以后的章节中还要讨论这一问题)。

从 CDM生成 PDM期间,DataArchitect把 CDM的数据类型转换成目标 RDBMS支持的数据类型。它使用了一个数据类型转换表,这个转换表包括在 DataArchitect 软件包中,以 DEF作为扩展名。

图 5-7

检查约束

检查约束精确地指定了域、数据项及实体属性所允许的值。 检查约束有两种类型: l 标准约束, 一般数据控制(最小值、最大值以及可接受的值)。 l 有效性规则, 为数据有效性制定的规则。 在概念级定义标准约束,在概念级也可以定义有效性规则,但不推荐这样做。

标准约束属性

表 5.3描述了标准约束: 表 5.3

常数 描述

最小值(Minimum) 数据项最小可接受的数值

最大值(Maximum) 数据项最大可接受的数值

缺省值(Default) 在未输入数据时为数据项指定的值

单位(Unit) 数据项中数据的度量单位(公斤、吨、个等)

格式(Format) 数据项的数据格式(例如(999)999-9999是电话号码的格式)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 75: Power Designer数据库建模技术

·62· PowerDesigner 数据库建模技术

续表 常数 描述

小写字母(Lowercase) 强迫字母成为小写字母

大写字母(Upercase) 强迫字母成为大写字母

不能修改(Cannot Modify) 在数据库表中保护数据项不被改变

值列表(List of Values) 在数据库表中对列的授权值(例如性别字段为“M”或“F”)

标签(Label) 显示给用户的值(例如性别字段在数据库表中是“M”,显示给用户是“女”;在数据库表中是“F”,显示给用户是“男”)

实验 5-8(指导实验) 定义一个域

描述 跟随指导操作,由MYPUBS2.CDM定义一个称之为 ID Number的域。在定义过程中,使用表 5.4中所列的值。

表 5.4

特性(Property) 值(Value) 名称(Name) ID Number 代码(Code) ID Number 标签(Label) ID Number 数据类型(Data Type)、长度

(Length)、精度(Precision) 整数

检查约束 最小值为 1000

描述 ID Number域使得 ID Number标准化,并且它的起始值为 1000

注释 无

步骤 1. 从MYPUBS2.CDM中选择 Dictionary→List of Domains,打开“List of Domains”

对话框。 2. 单击“New”按钮。 3. 键入名称、代码及标签。 4. 单击“Data Type”栏。 5. 单击省略号(…)按钮,打开“Standard Data Types”对话框。 6. 在“Standard Data Types”对话框中,选择“Integer”数据类型,然后单击“OK”。 7. 输入描述和注释。 8. 单击“OK”,关闭“List of Domains”对话框。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 76: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·63·

5.5.1 탞룄폲

当修改已经定义过的并被其它数据项或实体属性使用过的域时,DataArchitect提示对使用了该域的数据项和实体属性是否作相应的改变。

l 单击“Yes”,所有现存的与该域有关的数据项和实体属性都作相应的改变。 l 单击“No”,使用了该域的的数据项和属性保持原值不变。

注 意: 使用“NO”选项时要特别小心!若选择了“NO”,表示修改了“域”,而没有

把修改后的内容应用到使用这个“域”的数据项和实体属性上,这样就会引

起数据模型内部的不一致。

5.5.2 뚨틥쪵쳥

产生实体有两种方法: l 图形化方法,通过在模型中增加实体图形符号完成。 l 文本化方法,通过在实体列表(List of Entities)对话框中增加实体定义完成。

图形化方法

使用图形化方法产生实体的步骤如下: 1. 随模型打开 CDM工作区,单击工具选项板上的 Entity工具。 2. 在 CDM工作区中单击任何地方,产生实体图形符号。 3. 双击实体图形符号,打开实体属性(Entity Properties)窗口(这个窗口的使用将在

本节后讨论)。 4. 输入 Name、Code、Label的内容。 5. 需要的话,输入实体表中可能存放的记录数(Number),这个数字是用于计算数据

库尺寸的。 6. 需要的话,可以定义实体的规则(Rules)、描述(Description)、注释(Annotation)、

属性(Attribution)。 7. 单击“OK”。

文本化方法

使用文本化方法产生实体的步骤如下: 1. 选择 Dictionary→ List of Entities,打开“List of Entities”窗口。 2. 单击“New”按钮。 3. 输入实体的 Name、Code、Label。 4. 如果需要的话,输入实体表中可能存放的记录数(Number)。 5. 如果需要的话,增加定义实体的规则(Rules)、描述(Description)、注释(Annotation)。

注 意: 如果为一个列的 Annotation输入了内容,灰色的 N列显示一个“√”。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 77: Power Designer数据库建模技术

·64· PowerDesigner 数据库建模技术

6.单击“OK”。

注 意: 在“List of Entities”对话窗口增加一个实体的定义后,DataArchitect会

在模型工作区中自动增加一个实体的图形符号。

定义实体的特性

在 DataArchitect中,实体是由“Entity Properties”窗口(图 5-8)的 Name、Code、Label定义的。在工作区中,双击一个实体图形符号,打开“Entity Properties”窗口。

图 5-8

增加实体特性

增加实体特性包括: l 实体所属模型的名称。DataArchitect根据模型特性自动提供了该值。 l 实体的 Name、Code、Lable、Number是否生成表。 l 实体属性是附加到实体上的数据项。 l 实体标识符。实体标识符是由实体的一个属性或多个属性组成的,它能够唯一地

确定实体中的一个实例。在 CDM转化成 PDM的过程中,实体标识符转化成表的(Primary Key)。

实体特性窗口

实体特性(Entity Properties|)窗口,能够完成如下工作: l 把业务规则附加到特定的实体上; l 对实体进行描述,描述中一般书写实体的定义;

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 78: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·65·

l 对实体加注释,注释中一般书写注意事项; l 估计实体在物理数据库中将要包含的记录数。这个估计数被用作生成索引和计算

数据库尺寸的阀值; l 选择“Generate Table”检查框后,在从 CDM生成 PDM时,实体生成相应的表。

实验 5-9 产生实体

描述 在这个实验中,按照指导产生下面的实体:

步骤 1. 在 CDM工作区中,打开MYPUBS2.CDM文件。 2. 在工具选项板中单击 Entity工具。 3. 单击 CDM工作区的任何地方,产生一个实体图形符号。 4. 在 CDM工作区中再单击一下,就产生了第二个实体图形符号。 5. 在 CDM工作区中单击第三下,就产生了第三个实体图形符号。 6. 在 CDM工作区中,单击鼠标右键释放 Entity工具,鼠标指针恢复原状。 7. 双击实体,并填写实体的特性。

5.5.3 뚨틥쪵쳥뗄쫴탔

实体属性是附加到实体上的数据项。实体的属性通常使用定义型业务规则确定。

数据项和实体属性

在 DataArchitect 环境下,数据项和实体属性是不同的对象。实体属性是与该实体有关的数据项。

定义一个实体属性,就定义了一个数据项与实体之间的联系。如果定义的实体属性在

数据项中不存在,DataArchitect会自动产生这个数据项。在本节后,将介绍使用 DataArchitect产生数据项的简便方法,这一简便方法就是通过数据项定义一个实体的属性。

例如:ISBN是附加到 Book实体上的一个数据项。

Author Roysched Publisher

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 79: Power Designer数据库建模技术

·66· PowerDesigner 数据库建模技术

实体属性对话框

在 DataArchitect中,实体属性是由“Attributes of the Entity:Aurgie”窗口(图 5-9)中的 Name、Code、和 Label定义的。在这个窗口中也能够完成如下工作:

l 确定实体属性的数据类型; l 确定一个属性是否为这个实体的标识符或标识符的一部分; l 把一个域应用到实体属性上(用这个域代替指定的数据类型); l 为实体属性指定检查约束(Check); l 描述和注释实体的属性; l 标识一个实体的属性是否为强制的(非空); l 标识一个实体属性是否在模型中显示。

图 5-9

标识符特性

选择“Identifier”检查框时,表示该属性是该实体的标识符或者是该实体标识符的一部分。实体的标识符是由一个或多个属性组成的,标识符唯一确定实体中的一个实例。实体

的标识符对应唯一的一个实例。虽然实体的标识符是实体的一个特性,但必须把实体的一

个或多个属性指定为实体的标识符。在实体图形符号中,标识符属性带有下划线。

ISBN Book ISBN

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 80: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·67·

强制特性

强制特性表示属性是否需要一个值。如果属性是强制的,那么该属性在数据库表的对

应列(Column)上不允许空值。

显示特性

在模型的实体图形符号中显示该属性是 DataArchitect的缺省设置。可以关闭“Display”检查框,使该属性不在模型的实体图形符号中显示。例如:在数据建模的结束阶段,需要

与业务领域专家讨论模型,这时可以不显示已经完全确定的实体属性,这样可以把注意力

集中在需要进一步讨论的实体属性上。

注 意: 在较大模型的设计中,为了减少混乱,把注意力集中在实体的联系上,要求

关闭模型中所有实体属性的显示,步骤如下:

1.选择 File → Display Preferences。

2.在“General”页的“Entity”组中,清除“Identifiers”和“Other Attributes”

检查框,单击“OK”。

5.5.4 닺짺쪵쳥쫴탔뗄춾뺶

有两种方法可以产生实体属性: l 把一个已经存在的数据项增加到一个实体中,作为该实体的一个属性。 l 在“Attributes of the Entity”窗口直接定义实体的属性。 建立一个数据模型时,在不同的阶段能够使用上述两种方法之一产生实体属性。究竟

使用哪种方法,取决于个人的爱好和习惯。

把数据项定义成实体属性

把一个数据项定义成一个实体属性的步骤如下: 1. 在“Entity Properties”窗口,单击“Attributes”按钮,打开与该实体有关的属性列

表。 2. 单击“Add”按钮,打开“Selection of Data Items”对话框(图 5-10)。 3. 单击最左边的列选择数据项。单击“OK”把数据项与实体联系起来,所选择的数

据项就成为该实体的属性。为了同时选择多个数据项,按下 Shift键的同时单击最左边的列。

4. 键入 Label的值。 5. 如果由该属性生成的数据库列一定不能为空的话,选择强制(Mandatory)检查框。 6. 如果不想让这个属性显示在模型中,清除显示(Display)检查框。 7. 单击“Check”按钮,打开“Check Parameters”窗口,在“Standard Parameters”

页上输入标准检查约束值。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 81: Power Designer数据库建模技术

·68· PowerDesigner 数据库建模技术

注 意: 如果数据项是使用带有标准检查约束的域定义的,属性继承了域标准检查约

束的定义,可以对这些标准检查约束进行扩展。

8. 如果需要的话,键入 Description和 Annotation,然后单击“OK”。 使用数据项生成一个实体的属性,要求已经建立了数据项。下一节将讨论如何产生数

据项。

图 5-10

在“Attributes of the Entity”窗口直接定义实体属性

在“Attrubates of the Entity”窗口直接定义一个实体属性的步骤如下: 1. 打开“Entity Properties”窗口。 2. 单击“Attributes”按钮,打开该实体的“Attributes of the Entity”窗口。 3. 该实体已有的属性显示在列表框中。 4. 单击“Insert”按钮,输入 Name和 Code的内容。 5. 如果使用域定义一个属性的数据类型,打开“Domain”的下拉列表框,选择可使

用的域(单击“Domain”下拉列表框后面的省略号(…)按钮,可以定义一个新域)。

6. 如果不使用域定义一个属性的数据类型,单击数据类型列的省略号(…)按钮,打开“Standard Data Types”窗口,从列表中选择一个数据类型。

7. 输入 Label的值。 8. 如果一个属性是实体的标识符或标识符的一部分,选择标识符(Identifier)检查框。 9. 如果由属性产生的数据库列一定不能为空的话,选择强制(Mandatory)检查框。 10. 如果不想在模型中显示这个属性,清除显示(Display)检查框。 11. 单击“Check”按钮,打开“Check Parameters”窗口,输入相应的值。

注 意: 如果实体的属性是使用带有标准检查约束的域定义的,则属性继承了该 标准检查约束的定义,可以对这些标准检查约束进行扩展。

12. 如果需要的话,输入 Description和 Annotation。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 82: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·69·

13. 单击“OK”。 直接定义实体的属性,自动产生数据项。

实验 5-10 定义实体属性

描述 在这个实验中,可以定义作者(Author)、版税(Roysched)、出版商(Publisher)三个

实体。图 5-11是这三个实体的名称和属性。

图 5-11

按下列要求完成本实验: l 在 Name、Code和 Label中使用同样的名称。 l 把下列的属性设置成强制(Mandatory)的:Author_id,Author_lastname,

Author_firstname,Author_address,Royalty_title_id,Publisher_id。 l 显示所有的属性。 l 忽略还没有在 ID Number域中定义的检查约束。 l 定义 Author_id、Royalty_title_id、Publisher_id 三个属性的数据类型时,使用 ID

Number域. l 定义其它属性的数据类型和长度。 l 把本章中建立的业务规则应用到对应的实体上。

步骤 1. 打开MYPUBS2.CDM,双击 Author实体。 2. 按照把一个数据项定义成一个实体属性的方法,完成 Author实体属性的定义。 3. 仿照步骤 1和 2,完成 Roysched实体属性的定义。 4. 按照在“Attributes of the Entity”窗口直接定义实体属性的方法,完成 Publisher实

体属性的定义。

Author Author_id Author_lastname Author_firstname Author_middle_initial Author_phone Author_address Author_city Author_state Author_postal_code Author_country

Roysched

Royalty_title_id Royalty_schedule Low_range High_range Royalty

Publisher Publisher_id Publisher_name Publisher_city Publisher_state Royalty

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 83: Power Designer数据库建模技术

·70· PowerDesigner 数据库建模技术

5.5.5 닺짺쫽뻝쿮

在数据模型中,数据项是最小的有意义的信息单位。在信息系统中,数据项通常是在

定义型业务规则中定义的;在 DataArchitect中,数据项通过 Name、Code、Label确定。

数据项列表对话框(List of Data Items)

使用“List of Data Items”对话框(图5-12),能够完成如下工作: l 指定数据项的数据类型; l 把一个域应用到数据项上; l 为数据项指定检查约束; l 描述和注释一个数据项; l 指定一个数据项是否作为一个实体的属性。

图5-12

产生数据项的方法

产生数据项有两种方法: l 在数据项列表对话框中定义一个外部的数据项。 l 通过定义一个实体属性定义一个内部的数据项。

定义一个外部数据项

定义一个外部数据项的步骤如下: 1. 选择 Dictionary → List of Data Items,打开“List of Data Items”对话框。 2. 单击“New”按钮。 3. 输入该数据项的 Name、Code、Label、Description、Annotation、Check等。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 84: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·71·

4. 单击“OK”,关掉“List of Data Item”对话框;或者定义另一个数据项。 定义一个内部数据项

当定义实体属性时,DataArchitect已经把所定义的实体属性保存为一个内部的数据项。当为一个实体定义了实体的属性后,打开数据项列表对话框会发现实体的属性已经增加到

数据项列表对话框中。

实验 5-11 产生概念数据模型

描述

在这个实验中,DataArchitect打开一个完成了部分工作的 CDM文件,然后添加概念数据模型的其它信息。

步骤一:打开一个存在的 CDM文件 在 CDM工作区中,选择 File → Open,并选择 LIBRARY.CDM。

步骤二:为 LIBRARY.CDM定义特性 使用表 5.5中显示的值填写该模型的特性: 表 5.5

特性 值 工程名称(Project Name) PD Class 工程代码(Project Code) PD_Class 名称(Name) Library 代码(Code) Library 标签(Label) Library 作者(Author) 您的姓名 版本(Version) 1.0 注释(Annotation) 完成模型后与 SCHLIB.CDM做比较

定义或修改数据模型的特性,进行如下操作: 1. 在 CDM 工作区中打开 Library 模型,选择 Dictionary → Model Properties,打开

“Model Properties”窗口。 2. 在“Difinition”页,键入下面特性的值:Project Name、Project Code、Name、Code、

Label、Author和 Version,然后单击“OK”。 注 意: 节省时间的方法:要使名称和代码拥有相同的值,可单击“=”按钮。

步骤三:在 CDM的“Model Properties”窗口定义问题描述 用下面的问题陈述,作为一个图书馆管理信息系统概念数据模型的描述: 某县一所学校需要开发一个管理信息系统,这个管理信息系统能够完成书、期刊及参

考资料的入库与借阅,还能够登记读者信息,登记图书馆职员信息。 把上述描述作为概念数据模型的正式文档,方法如下:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 85: Power Designer数据库建模技术

·72· PowerDesigner 数据库建模技术

1.从菜单 Dictionary→Model Properties 中打开“Model Properties”窗口,选择“Description”页。

2.键入上述问题描述,然后单击“OK”。

步骤四:给标题框增加信息。

图 5-13

产生模型特性标题框(图5-13)的方法如下: 1. 选择 Edit → Add Title。

2. 检查信息的正确性。 注 意: 在 CDM 和 PDM 中都能为模型图增加标题框。要从标题框直接打开“Model

Properties”窗口,可先单击工具选项板上的 Properties工具,然后单击标

题框;也可直接双击标题框。

步骤五:设置模型特性参数。 设置 Code特性的最大长度为 30。

1.选择 File → Display Preferences。 2.选择“Name&Code”页。 3.将 Truncation Length由 80改为 30,然后单击“OK”。

步骤六:定义一个业务规则。 定义下面的业务规则(定义型),把这个业务规则命名为:书定义(Book Definition)。 一本书是由 ISBN Number、Title、Date of Publisher、Library of Congress Number

定义的。

要产生一个业务规则,进行如下操作: 1.在 CDM工作区中选择 Dictionary → List of Business,打开“List of Business”对话

框。 2.单击“New”按钮。 3.键入 Name和 Code。 4.单击 Type列,从下拉列表框中选择“Definition”。 5.单击“Define”按钮,打开“Business Rule Definition”对话框。 6.在“Description”框中输入如下描述: 一本书是由 ISBN Number、Title、Date of Publisher、Library of Congress Number

定义的。

7.单击“OK”,直到返回 CDM工作区。

步骤七:产生一个域。 使用表 5.6的值,产生一个称之为 ID Number的域。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 86: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·73·

表 5.6

特性 值 名称(Name) ID Number 代码(Code) ID Number 标签(Label) ID Number 数据类型(Data Type)、 长度(Length)、 精度(Precision)

Integer

检查约束(Check Parameter) Minimum Value:1000

描述(Description)

ID Number域使所有使用该域的数据项和实体属性都取整数,起始值是 1000。该域使用在 Author ID、Publisher ID和Employee ID等实体属性上

注释(Annotation) 无

要产生一个域,可进行如下操作: 1.选择 Dictionary → List of Domains,打开“List of Domains”对话框。 2.根据上表数据填写 Name、Code、和 Label。 3.在产生的域上单击“Data Type”。 4.单击省略号按钮,打开“Standard Data Types”对话框。 5.在“Standard Data Types”列表框中选择“Integer”数据类型,然后单击“OK”。 6.单击“Check按钮,键入检查约束的值。 7.单击“Description”按钮,键入描述;单击“Annotaion”按钮,键入注释。 8.定义另一个域;或单击“OK”,关闭“List of Domains”对话框。

步骤八:产生实体。 选择两种方法之一产生下面显示的三个实体(图5-14)。

图 5-14

图形化方法

使用图形化方法产生实体的步骤如下: 1.随模型打开 CDM工作区,单击工具选项板上的 Entity工具。 2.单击模型工作区的任何地方,产生一个实体图形符号,单击鼠标右键释放 Entity

工具。

3.双击该实体,打开实体特性窗口。 4.输入 Name、Code、Label。 5.输入 Number的值。 6.如果需要的话,增加定义实体的规则、实体的描述、注释等。

Author Book Publisher

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 87: Power Designer数据库建模技术

·74· PowerDesigner 数据库建模技术

7.单击“OK”。

文本化方法

在“List of Entities”对话框中,通过增加实体定义产生实体,步骤如下: 1. 选择 Dictionary → List of Entities,打开“List of Entities”对话框。 2. 单击“New”按钮。 3. 输入 Name、Code、Label。 4. 如果需要的话,输入 Number的值。 5. 如果需要的话,增加定义实体的规则、实体的描述及注释,然后单击“OK”。

注 意: 在“List of Entities”话框中,增加实体定义时,DataArchitect自动在模

型中生成实体图形符号。

步骤九:定义实体的属性 为作者(Author)、书(Book)、出版商(Publisher)实体定义属性。

图 5-15

l 在 Name、Code和 Label中使用相同的名称。 l 除 Publiser_city外,使所有的属性都是强制的。 l 显示所有的属性。 l 忽略尚未在 ID Number域中定义的检查约束。 l 在 Author_ID、Publisher_ID属性上使用 ID Number域。 l 定义其它属性的数据类型和长度。 l 把本章中建立的业务规则应用到对应的实体上。

直接产生实体属性的步骤如下: 1.打开“Entity Properties”窗口。 2.单击“Attributes”按钮,打开该实体的属性列表。 3.如果已经有属性列的话,单击“Insert”按钮。 4.键入 Name、Code的值。 5.单击 Domain的下拉列表框,选择可用的域。 6.键入 Label的值。

7.如果一个属性是实体的标识符或者是实体标识符的一部分,选择“Identifier”检查

Author ID Author_name

ISBN Title Date_of_Publication Library_of_Congress_number

Publisher ID Publisher_name Publisher_city

Author Book Publisher

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 88: Power Designer数据库建模技术

第 5章 建立概念数据模型 ·75·

框。 8.如果由属性生成的数据库列不能为空的话,选择“Mandatory”检查框。 9.如果不想在模型中显示属性,关闭“Display”检查框。

10.单击“Check”按钮,打开“Check Parameters”窗口。

注 意: 如果属性使用了带有标准检查约束的域,那么实体的属性继承了该域定义的

标准检查约束。

11.如果需要的话,键入描述(Description)、注释(Annotation),然后单击“OK”。在直接产生实体属性的同时,将自动产生一个数据项。

小 结

l CDM代表了信息系统的全局逻辑结构,它不依赖于具体的数据库管理系统。 l 业务规则用业务术语描述了业务需求。业务规则是模型及其对象的源泉,

DataArchitect支持四种类型的业务规则:定义型、事实型、有效型、公式型。 l 描述一个业务规则是在概念设计阶段确认的,描述应该使用自然语言写成。 l 一个表达式实现一个业务规则,在物理设计阶段表达式被附加到业务规则上。表

达式使用目标 RDBMS和 4GL语言写成。所谓目标 RDBMS就是用来进行物理实现的数据库管理系统,4GL就是实现客户应用的客户端语言。

l 定义一个完整的实体包括四个任务:产生数据项、产生空实体、定义实体属性、

产生域。DataArchitect为这些任务的完成提供了很大的灵活性。 l 在 DataArchitect 中数据项和实体的属性是不同的对象。实体的属性是与实体有关

的一个数据项。 l 在概念设计阶段数据建模不考虑模型在特定的 RDBMS 上的实现。从 CDM 生成

PDM时,DataArchitect把 CDM的数据类型转换成目标 RDBMS支持的数据类型。 l 检查约束指定了数据项或实体属性的取值范围及有效性规则。检查约束的标准约

束是一般的数据控制,这些参数在概念设计阶段定义;检查约束的有效性规则是

在物理设计阶段定义的,它根据特定的 RDBMS和 4GL写成。 l 在一个实体中必须定义一个或多个实体的属性作为实体的标识符。实体的标识符

用来唯一标识实体中的一个实例。

思 考 题

1. 描述如下的 CDM对象: (1)数据项 (2)域 (3)实体

(4)实体的属性 2. 描述业务问题的目的是什么? 3. 确定下面业务规则(表 5.7)的类型。

表 5.7

例 子 类 型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 89: Power Designer数据库建模技术

·76· PowerDesigner 数据库建模技术

职工的雇佣日期必须早于或等于今天的日期

司机由驾驶证号确定 学生选择课程 每个帐号一年四季的总量等于每个 账号四个季节量的总和

4. 解释数据项和实体属性之间的关系。 5. DataArchitect为什么使用概念数据类型?从 CDM生成 PDM期间,概念数据类型

发生了什么变化?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 90: Power Designer数据库建模技术

本章介绍了在 DataArchitect模块中定义实体间联系与继承连接的方法。

实体间或实体内部的联系是建立概念数据模型的主要内容,正确地描述联系是

概念数据模型能否反映客观世界的关键,它是概念数据模型中的重点内容。学

完本章后,能够达到如下目的:

l 定义实体间的联系

l 定义继承连接

6.1 定义联系

联系是指两个实体之间或实体内部的连接或关系。 完成实体定义以后,应该在它们之间建立联系。实体的联系通常是依据业务规则确定

的,如:一个顾客在一个或多个商店中买东西,这就是一个顾客与商店间的联系。

表达联系 在概念数据模型中,联系是用实体之间的一条线来表示的,如图 6-1所示。在本章中将

详细讨论与线有关的联系名称及符号。

注 意: 在 DataArchitect 中,要改变联系线的风格,可以用鼠标右键单击联系线,

从弹出菜单中选择“Line Style”,然后选择表示线的各种风格。

双击工具选项板上的“Relationship”工具,可选择所有的联系线。

定义联系

定义联系是概念数据建模中最为关键的技术,一个完善的概念数据模型应该有易理解

的名称和代码,还应该有对联系的简要说明,在联系中应该正确理解角色的概念,基数反

映了现实世界中记录之间的数值对应关系,强制联系反映了现实世界中的业务关系,依赖

代表记录之间的主从关系,这些特性是反映业务关系的主要表现手段。 在 DataArchitect中,通过下面的特性定义联系:

第 6章

完善概念数据模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 91: Power Designer数据库建模技术

·78· PowerDesigner 数据库建模技术

图 6-1

l 名称(Name),名称是联系的一个意义代号,通过它能够识别模型中的各种联系,改善模型中联系的可读性。通常,两个实体的名称常常作为联系名称的一部分(名

称最大长度为 80个字符)。 l 代码(Code),代码是在特定数据库或 4GL 中实现该模型时使用的名称代号。为了使代码(Code)和名称(Name)相同,可单击 Code后面的等号“=”按钮。(代码最大长度为 80个字符)。

l 标签(Label),标签是为了和 PowerDesigner 早期的版本兼容而设置的。在PowerDesigner 6.1版本中可忽略这个特性。

l 角色(Role),角色是一个动词,它描述了实体间的联系。要为联系的两个方向定义角色。

l 基数(Cardinality),在联系中,一个实体中的实例数与另一个实体中实例数的比值被称为基数。联系的两个方向上都应定义基数(从每一个实体开始)。

l 强制(Mandatory),强制表示实体间的联系是否是可选的。应该从两个方向上定义强制。在模型中用穿过联系线的一条短直线表示强制,用联系线上的一个小圆圈

表示可选。 l 依赖(Is Dependent),依赖表示一个实体是否依赖于另一个实体。 在模型中双击联系线,可打开如下的“Relationship Properties”窗口(图 6-2)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 92: Power Designer数据库建模技术

第 6章 完善概念数据模 ·79·

图 6-2

6.1.1 뷇즫

角色 (Role) 用来描述联系线一个方向的含义,角色通常使用动词或动词短语来定义。例如,能够使用动词“出版(Publishes)”表示“从出版商实体到书实体方向的联系”;使用动词短语“被出版(Is published by)”表示“书实体到出版商实体方向的联系”。

图 6-3表示了出版商出版书的联系。

图 6-3

图 6-4表示了书被出版商出版的联系。

图 6-4

强制

基数

标签

名称

代码

依赖

角色

Publishes Publisher Book

Is published by被出版

Publisher Book

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 93: Power Designer数据库建模技术

·80· PowerDesigner 数据库建模技术

联系的“Relationship Properties”窗口简化了基数定义、存在性定义(强制或可选)、实体的依赖性定义等等,准确地为角色选择动词或动词词组,对确定其它选项具有重要的指

导意义。

6.1.2 믹쫽

基数(Cardinalty)用实体间实例的数值对应关系表示,它反映了两个实体间的数值联系。基数可能是: l 一对一 l 一对多 l 多对一 l 多对多 基数是有方向性的,选择基数时应考虑联系的两个方向。

基数的确定

基数的确定依赖于特定的业务规则,这些规则通常是通过与用户交谈和查阅相关文档

得到的。

基数的表示符号

在联系线上,用“乌鸦脚”( )表示“多”;用小圆圈表示“可选”;用与联系线交叉的短直线表示“强制”; 图 6-5表达了两个含义:其一是一本书必须被一个出版商出版,一本书仅与一个出版商

有关;其二是一个出版商与许多书有关,一个出版商可能出版多本书。

图 6-5

最大和最小参数

在“Relationship Properties”窗口,能够用“Max”与“Min”限制基数的上限与下限。

6.1.3 듦퓚탔

存在性(Existence)表示两个实体之间的联系是必须的或是可选的。需要在两个方向上

Publisher Book Book_Publisher

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 94: Power Designer数据库建模技术

第 6章 完善概念数据模 ·81·

定义强制或可选的存在性。 强制存在用与联系线交叉的短直线表示。可选存在用与联系线交叉的小圆圈表示。 图 6-6表达了两个含义:其一是一本书必须被一个出版商出版,一本书仅与一个出版商

有关;其二是一个出版商与许多书有关,一个出版商可能出版多本书。

图 6-6

联系表达了实体实例间的关系,联系中的基数和存在性用下列方法(图 6-7)来表示。

图 6-7

6.1.4 틀삵

依赖(Dependency)表示在联系中一个实体的存在是否依赖于另一个实体。寄生实体(Dependent Entity)是一种部分地被另一实体确定的实体。 在依赖联系中,一个实体与另一实体通过标识符相联系,当一个实体的存在没有另一

个实体的存在作为参考就不能唯一确定时,两个实体间就存在依赖联系。

表示法 依赖联系用一个三角形表示,三角形的顶点指向非寄生实体。图 6-8表示了定单(Order)

依赖于商店(Store)的依赖联系。

图 6-8

0或 1

0或多

1仅有 1

1或多

Publisher Book

Store Order

依赖联系

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 95: Power Designer数据库建模技术

·82· PowerDesigner 数据库建模技术

例子 如图 6-9所示在遍及全国的连锁书店中,如果每一个书店的定单号码从 1开始,连续地

进行下去,那么,每一个定单不能唯一地确定它是哪个书店的。为了识别一个定单属于哪

个书店,在这个定单上必须有一个书店 ID号。

图 6-9

在图 6-10中,定单和书店间存在一种依赖联系,一个定单必须来自于一个特定的商店。依赖联系的三角形顶点指向书店实体。对寄生实体定单来说,这种联系是强制的,但对非

寄生实体书店来说,这种联系是可选的。 l 一个书店可以有一个或多个定单; l 一个定单必须来自于一个书店,而且只能是一个书店; l 每个定单由定单号与书店唯一确定。

图 6-10

6.1.5 솪쾵럻뫅

递归联系

当一个实体的实例之间存在自身联系时,就产生了递归或反身联系。图 6-11中职工之间的递归联系反映了职工之间的一种管理关系。

Order

Order

Order

Order

Beijing

Xi’an store

Taiyuan

非寄生实体

寄生实体

Order Order Number Order Date Order Shipped Date

Store Stort Identifer Store Address Store City Store State Store Postal Code Store Country

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 96: Power Designer数据库建模技术

第 6章 完善概念数据模 ·83·

l 一个职工可以领导零个或多个职工; l 一个职工必须受一个职工的领导。

图 6-11

一对多联系

由前面显示的书和出版商的联系表明,书和出版商之间存在“一对多”的联系。强制

存在用与联系交叉的短直线表示,如图 6-12所示。 l 一个出版商能够出版零本或多本书; l 一本书必须由一个出版商出版,并且只能由一个出版商出版。

图 6-12

联系对象的弹出菜单

联系对象的弹出菜单允许用户定制联系对象,用鼠标右键单击联系线,显示弹出菜单(图 6-13)。

中间实体

中间实体(Associative Entity)是为了解决多对多联系而产生的一个人工实体,能够为中间实体定义属性。 用鼠标右键单击多对多联系线,在弹出的菜单中选择“Change to entity”,能够把这个

联系转换成连接两个实体的中间实体。在中间实体上能够添加属性。 给中间实体赋予联系的名称(Name)和代码(Code)。

Is published by

Publishes Book

ISBN

Title

Date of publication

Library of Congress

Publisher Publish id Publisher name Publish city

employee employee identifier employee last name employee first name employee phone employee status employee type

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 97: Power Designer数据库建模技术

·84· PowerDesigner 数据库建模技术

图 6-13

实验 6-1(指导实验) 定义联系

描述 使用工具选项板上的“Relationship”工具为 BOOKSTORE5_1.CDM中实体定义联系(图6-14)。

图 6-14

l 顾客/书店(Customer/Store)间的联系:

Book

ISBN

Title

Date of publication

Library of Congress

Publisher Publish id Publisher name Publish city

Is published by

Publishes

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 98: Power Designer数据库建模技术

第 6章 完善概念数据模 ·85·

◆ 一个顾客能够在零个或多个书店购书; ◆ 一个书店有零个或多个顾客。 l 顾客/地址(Customer/Address)间的联系: ◆ 一个顾客有零个或多个地址; ◆ 一个地址一定只有一个顾客,并且地址是由顾客确定的。 l 顾客/定单(Customer/Order)间的联系: ◆ 一个顾客能够发出零个或多个定单; ◆ 一个定单只能被唯一的一个顾客预定。 l 销售人员/定单(Salesperson/Order)间的联系:

◆ 一个销售人员能够接受零个或多个定单; ◆ 一个定单必须被一个销售人员接受,并且仅有一个销售人员接受。

l 销售人员/书店(Salesperson/Store)间的联系: ◆ 一个销售人员工作在一个书店,并且只能工作在一个书店中; ◆ 一个书店雇佣零个或多个销售人员。

节省时间的方法

在数据模型中绝大多数联系是“一对多的”,这是使用联系工具建立的缺省联系类型。

它把“一”端放在开始的实体旁,把“多”端放在终结的实体旁。当产生了一个“一对多”

联系时,把鼠标放在“一”实体上,然后拖拽到“多”实体上,以减少对“一”端的修改

需求。

步骤

定义联系的步骤如下: 1. 单击工具选项板上的 Relationship工具。 2. 把鼠标指针放在“一”端的实体上,按住鼠标右键拖拽到“多”端的实体上。 3. 用鼠标右键单击工作区的任何位置,释放 Relationship工具。 4. 将指针置于联系线上,双击联系线,打开“Relationship Properties”窗口。 5. 键入联系的 Name、Code和 Label的内容。 6. 在联系的两个方向上为 Role选择动词或动词短语。 7. 选择基数,并在联系的两个方向上选择存在性(选中“Mandatory”框,表示强制;没选中“Mandatory”框,表示可选)。

8. 如果一个实体依赖于另一个实体,在正确的方向上选择“Is Dependent”选项。

解决方案

解决方法如图 6-15所示:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 99: Power Designer数据库建模技术

·86· PowerDesigner 数据库建模技术

图 6-15

6.2 定义继承连接

继承连接用来定义一种父类(父实体)与子类(子实体)之间的特殊联系。子实体与

它的父实体共享一些属性,有一个或多个属性不被父实体或其它子实体所共享。 父实体也能有一个或多个联系不与子实体共享。

继承连接的符号

在 DataArchitect环境下,继承连接用如下方法(图 6-16)表示。 在这个例子中,子实体间是互不排斥的,一个职工既可以是图书管理员,也可以是知

识领域的专家。

互斥继承连接

当父实体的一个实例只存在一种类型的子实体实例时,这种继承连接就是互斥继承连

接,互斥继承连接由半圆和“×”组成的图形来表示。这种表示仅仅是为了描述业务问题。

在物理数据模型或者数据库生成脚本中,没有产生任何语句来强迫这种互斥继承连接。要

实现这种互斥联系,只能通过客户端应用程序保证。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 100: Power Designer数据库建模技术

第 6章 完善概念数据模 ·87·

图 6-16

互斥继承连接的例子

食品分发的顾客有两种类型:小的独立的杂货店和大的连锁超级市场(图 6-17)。顾客的两种类型是相互排斥的。也就是说,一个顾客不可能既是小的独立杂货店的顾客,又是

大的连锁超级市场的顾客。对所有的顾客,需要确定 ID号与完整地址等信息,但是对每一种顾客类型也必须有一组独立的属性。

图 6-17

在下面的例子中,一个职工不能既是一个销售人员,又是一个顾客代表, 如图 6-18所示。

父实体(父类)

子实体(子类) 子实体(子类)

继承连接

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 101: Power Designer数据库建模技术

·88· PowerDesigner 数据库建模技术

图 6-18

6.2.1 룅삨뫍쾸뮯쫴탔

当细化实体的不同属性时,使用继承连接能够把类似实体的类似属性进行概括。例如,

假定三个实体(图 6-19):图书管理员(Librarian)、管理员助理(Administrative Assistant)、知识专家(Reading Specialist)已被业务领域专家确认。

图 6-19

分析这些实体中类似的和不同的属性,将上述三个实体变化成如下的模型: l 概括上述三个实体,抽象出一个职工父实体(Employee)和三个子实体(Librarian、

Reading Specialist、Administrative Assistant),如图 6-20所示。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 102: Power Designer数据库建模技术

第 6章 完善概念数据模 ·89·

图 6-20

l 可以把图书管理员(Librarian)和知识专家(Reading Specialist)概括成专业人员父实体(Professional),如图 6-21所示。

图 6-21

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 103: Power Designer数据库建模技术

·90· PowerDesigner 数据库建模技术

6.2.2 쪹폃볌돐쳘탔뒰뿚

继承特性窗口(Inheritance Properties)中的选项

在 DataArchitect中,继承连接由“Inheritance Properties”窗口(图 6-22)中的 Name、Code、Label定义。另外,还可以使用该窗口完成下列工作: l 确定一个继承连接是互斥的(选择“Mutually exclusive”检查框); l 选择生成方式(Generation mode); l 为标识属性确定 Name、Code、Type和 Length; l 可以为继承连接输入描述、注释等; l 把业务规则附加到继承连接上; l 定义、描述、注释一个子实体; l 把业务规则附加到子实体上。

图 6-22

生成方式选项(Generation mode)

生成方式选项定义了从 CDM生成 PDM时,继承连接的生成方式。 在生成 PDM时,能够选择下列方法之一: l 生成父实体(Generate parent),仅为父实体生成一个表。

“Generate parent”方式,提供了产生一个标识属性(Specifying Attribute)的选项。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 104: Power Designer数据库建模技术

第 6章 完善概念数据模 ·91·

标识属性在 PDM表中成为一个列,这个列提供了一种从互斥子实体中辨认不同类型子实体实例的方法。

l 生成子实体(Generate children),仅为子实体生成表。 在这种生成方式中,子实体中包含了父实体的全部属性(通过选择“Inherit all”单

选按钮),也能够在子实体中只包含父实体中的标识符(通过选择“Inherit identifier”单选按钮)。

l 生成父实体/生成子实体(Generate parent/Generate children),既生成父实体表,也生成子实体表。

标识属性

标识属性仅对父实体生成方式有效,它在生成的 PDM结果表中成为一个列,这个列提供了一种从互斥子实体中辨认不同类型子实体实例的方法。

注 意: 在第 8章“生成物理数据模型”中,将测试每一个生成选项产生的 PDM的

结果。

实验 6-2(指导实验) 定义继承连接

描述

在这个实验中,使用 BOOKSTORE5_2.CDM为职工(Employee)父实体和销售员 les Person)子实体、顾客(Customer Rep)子实体定义一个继承连接,完成如下任务:

l 为职工父实体和销售员、顾客子实体建立互斥的继承连接。 l 保留缺省的生成方式。第八章中将介绍继承连接生成方式选项。

步骤 产生继承连接的步骤如下: 1. 单击工具选项板上的 Inheritance工具。 2. 按下鼠标左键,从父实体到子实体拖拽鼠标。 3. 为使此继承连接中的其它子实体包括在父实体中,从继承连接的半圆处开始按下鼠标左键,并拖拽鼠标到另一个实体上。

4. 单击鼠标右键,释放 Inheritance工具,双击继承连接,打开“Inheritance Properties”窗口。

5. 为继承连接键入 Name、Code、Label。 6. 在“Generation Mode”组框中,保留缺省设置。 7. 选择互斥检查框(Mutually exclusive),因为每一个父实体的实例,只能有一个子

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 105: Power Designer数据库建模技术

·92· PowerDesigner 数据库建模技术

实体的实例存在。 8. 通过单击“Description”和“Annotation”页,为继承连接输入描述和注释。

解决方案 解决方案如图 6-23所示:

图 6-23

实验 6-3 完成一个概念模型

描述 在这个实验中,使用联系工具,定义 LIBRARY.CDM中的联系。 步骤一:定义联系

使用联系工具定义下面的联系(后面列出了详细步骤)。 l 出版社/子出版社(Publisher/Subsidiary)间的联系(递归联系): ◆ 一个出版社可以有零个或多个子出版社;

◆ 一个出版社属于零个或一个父出版社。 l 书/出版社(Book/Publisher)间的联系:

◆ 出版社能够出版零本或多本书; ◆ 一本书必须由一个并且仅能由一个出版社出版。

l 书/复本(Book/Copy)间的联系: ◆ 一本书必定有一册或多册复本; ◆ 每册复本必定属于一本并且只属于一本书; ◆ 每册复本是由它的 ISBN号和该书的 Copy number唯一确定。

l 书/作者(Book/Author)间的联系: ◆ 一个作者必须写一本或多本书;

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 106: Power Designer数据库建模技术

第 6章 完善概念数据模 ·93·

◆ 一本书必须由一个或多个作者写成。

节省时间的方法 在数据模型中,大多数联系是“一对多”的。这是使用 Relationship工具建立的缺省联

系类型。它把“一”端放在开始实体上,把“多”端放在结束实体上。当产生“一对多”

联系时,需要注意这种缺省,以节省建立联系的时间。

步骤 定义联系的步骤如下:

1. 单击工具选项板上的 Relationship工具。 2. 把联系符号放在“一”端的实体上,然后拖拽至“多”端的实体上。 3. 用鼠标右键单击 CDM工作区的任何位置,释放 Relationship工具,使鼠标指针恢复原状。

4. 把鼠标指针放在联系线上,双击该线,打开“Relationship Properties”窗口。 5. 键入联系的 Name、Code和 Label。 6. 为联系的每个方向键入动词或动词短语。 7. 为每个方向的联系选择基数(Cardinality)和存在性(Existence)。 8. 如果一个实体依赖于另一个实体,在正确的方向上选择依赖(Is Dependent)选项。

附加说明 输入书和出版社之间联系的描述作为业务规则,并且把这个业务规则附加到书/出版社

联系上。

解决方案

解决方案如图 6-24所示:

图 6-24

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 107: Power Designer数据库建模技术

·94· PowerDesigner 数据库建模技术

步骤二:定义继承连接 为本章前面介绍的职工 (Employee)、专业人员 (Professional)、行政管理人员

(Administrative)、图书管理人员(Librarian)、知识专家(Reading Specialist)定义继承连接。 l 在 Professional和 Administrative之间建立互斥的(Mutually Exclusive)继承连接。 l Reading Specialist和 Librarian都是专业人员(Professional)。 l Reading Specialist 和 Librarian之间不建立互斥的继承连接。 l 把标识属性定义成布尔型数据类型(Boolean)。 l 定义其它实体的属性。 l 记住要使用 ID Number域。

产生继承连接的操作如下: 1. 单击工具选项板上的 Inheritance工具。 2. 按下鼠标左键,将鼠标从父实体拖拽到某一子实体上。 3. 为了在继承连接中把另一个子实体包含在父实体中,从继承连接的半圆开始按下鼠标左键,并将鼠标拖拽到另一个子实体上。

4. 在工作区中,单击鼠标右键,释放继承连接工具。双击继承连接的半圆,打开“Inheritance Properties”窗口。

5. 为继承连接输入 Name、Code、Label。 6. 保留继承连接生成方式(Generation Mode)的缺省设置。在以后的章节中将详细介绍继承连接生成方式(Generation Mode)。

7. 如果父实体存在只能有唯一的一个子实体实例存在时,选择互斥(Mutually Exclusive)检查框。

8. 如果需要的话,为继承连接输入描述(Description)和注释(Annotation)。

步骤三:完成带有如下联系的 CDM。 l Copy/Professional间的联系:

u 一个专业人员(Professional)可以预定零册或多册书的复本(Copy); u 一本书的一册复本必须被一个并且只能被一个专业人员预定。

l Administrative/Professional间的联系: u 一个行政人员(Administrative Assistant)必须服务于一个或多个专业人员; u 一个专业人员(Porfessional)能够被零个或一个行政人员 (Administrative

Assistant)领导。 解决方案

解决方案如图 6-25所示:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 108: Power Designer数据库建模技术

第 6章 完善概念数据模 ·95·

图 6-25

킡 뷡

l 联系是两个实体之间的一种联接或关系。递归或反身联系(Recursive or Reflexive)是一个实体自身之间的联系。

l 用事实型业务规则描述联系。 l 基数表达了在一个联系中两个实体实例数的比(一对一,一对多,多对多)。存在

性(Existence)表示了两个实体之间的联系是可选的(Optional)还是强制的(Mandatory)。依赖表示了在联系中一个实体的确认是否依赖于另一个实体。联系的末端符号表示基数、存在性、依赖的信息。

l 联系的两个方向上定义了基数和存在性。 l 一个寄生实体由它本身的属性和它所依赖实体的属性共同确定。 l 继承连接定义了父实体和子实体之间的一种特殊联系。子实体与父实体共享某些

属性,子实体有一个或多个附加属性不与父实体或别的子实体共享。 l 当父实体的一个实例仅有唯一的一种子实体实例存在时,继承连接是互斥的

(Mutually Exclusive)。 l 生成方式定义了概念数据模型中继承连接转换成物理数据模型时的生成方式。共

有三种生成方式:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 109: Power Designer数据库建模技术

·96· PowerDesigner 数据库建模技术

u 生成父实体选项(Generate Parent)仅为父实体产生一个表。 u 生成子实体选项(Generate Children)仅为子实体产生表。 u 生成父实体/生成子实体选项(Generate Parent/ Generate Children)为父实体和子实体都生成表。

l 标识属性(Specifying Attribute)仅对生成父实体选项有效。这个标识属性在结果表中成为一个列,该列提供了一种从互斥子实体中辨认不同类型的子实体实例的

方法。

쮼 뾼 쳢

1. 什么是“联系”? 2. 什么是递归或反身(Recursive or Reflexive)联系? 3. 什么是基数(Cardinality)?给出一个例子。 4. 解释存在性的含义(对联系而言)。 5. 解释什么是寄生实体(Dependent Entity),并给出一个例子。 6. 读下面的联系(图 6-26)。

图 6-26

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 110: Power Designer数据库建模技术

本章介绍了检查、固化和提取概念数据模型的方法。检查模型的正确性是模型设计工具为我们提供的智能化的功能,通过检查模型可以发现在建模过程

中的问题,以便对模型中的错误进行修改。通过固化和提取使团队设计队员共

享模型数据。学完本章后,能够达到如下目的: l 检查概念数据模型 l 固化概念数据模型 l 提取概念数据模型

7.1 检查概念数据模型

检查概念数据模型的过程包括:检查概念数据模型中所有的实体、数据项、联系、继

承连接的正确性,并提示错误和警告。PowerDesigner还检查数据项、域等检查约束(Check)的最大值、最小值、缺省值及列表值之间的一致性。PowerDesigner检查模型后,对模型中的错误或警告作出描述,并提出修改这些错误或警告的方法。单击这些错误或警告,

PowerDesigner打开相应的对话框,为用户改正这些错误或警告提供了方便的方法。 在概念数据模型的建立过程中,随时都可以对模型进行检查。当从 CDM生成 PDM时,

DataArchitect首先自动检查 CDM的有效性。

检查步骤

检查 CDM的步骤如下: 1. 随模型打开 CDM工作区,选择 Dictionary→Check Model,开始检查过程。 2. 单击“OK”,关闭“Check Model Messages”窗口,并且保存信息。(单击“Cancel”,

关闭该信息框,但不保存信息)。通过选择 Dictionary→Display Messages,打开“Messages”窗口,该窗口显示上次检查的结果。

第 7章

检查、固化和提取概念数据模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 111: Power Designer数据库建模技术

·98· PowerDesigner 数据库建模技术

实验 7-1(指导实验) 检查概念数据模型

描述

跟随指导操作,检查一个 CDM。

步骤

检查一个 CDM的步骤如下: 1. 从 CDM工作区中选择 File→Open。 2. 选择要检查的 CDM文件。 3. 选择 Dictionary→Check Model,打开“Check Conceptual Data Model”对话框(图

7-1)。 4. 选择需要系统提示错误和警告的对象。

图 7-1

注 意: PowerDesigner的早期版本检测的某些错误不能由PowerDesigner当前版

本检查出来。如果正在使用 PowerDesigner 早期版本生成的模型,能够通过

选择“Old model specific checks”检查框来检测这些错误。

5. 检查过程开始,在“Check Model Messages”窗口(图 7-2)列出了所有的警告和错误。

如果模型中没有错误,信息框末尾指出模型是正确的。如果发现错误,信息框末尾指

出模型是不正确的,并指出共有几个错误,如图 7-2所示。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 112: Power Designer数据库建模技术

第 7章 检查、固化和提取概念数据模型 ·99·

图 7-2

实验 7-2(指导实验) 改正错误和警告信息

描述 跟随指导操作,改正一个错误信息。

步骤

1. “Description”框中显示错误或警告的描述,在“Check Model Messages”窗口(图7-3),单击错误或警告列表中的一个错误或警告,“Suggestion”组框中显示如何改正错误或警告的建议。

图 7-3

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 113: Power Designer数据库建模技术

·100· PowerDesigner 数据库建模技术

2. 双击错误信息“Entity ORDER”,打开改正这个错误的“Attributes of the Entity:order”窗口(图 7-4)。

图 7-4

3. 为实体 Order键入一个属性,如图 7-5所示。

图 7-5

4. 单击“OK”后再检查这个模型,错误消失了,如图 7-6所示。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 114: Power Designer数据库建模技术

第 7章 检查、固化和提取概念数据模型 ·101·

图 7-6

检索信息

如果“Check Model Messages”窗口已被关闭,仍然能够查看驻留在内存中的检查信息。 为了显示上次检查的结果,选择 Dictionary→Display Messages。

检查模型的必要性

无论是单独设计模型还是团队共同设计模型,检查模型的正确性是十分有用的。对于

数据模型设计团队的每个成员来说,在把自己的模型插入或修改到总模型前,应该改正CDM中的错误。

7.2 模型的固化

从 CDM或 PDM文件到MetaWorks字典插入和修改模型数据的过程称为固化。固化频率依赖于团队修改共享数据和成员访问最新版本模型数据的需要。

为了保证从CDM生成PDM时内部 ID号的一致性,生成PDM前必须固化和提取CDM。内部 ID号又称对象 ID号,是 DataArchitect分配给模型对象并用来辨别和管理这些对象的一个数值号码。

当首次从一个文件到 MetaWorks 字典固化一个模型时,MetaWorks 分配给模型对象新的对象 ID 号。因此,固化一个模型后应该立即提取这个模型,以便新的对象 ID 号被用在模型以后的工作中。

把 CDM固化到MetaWorks字典中的步骤如下: 1. 从MetaWorks菜单条,选择 Dictionary→Connect,连接到MetaWorks字典库上。 2. 选择 Dictionary→Consolidation。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 115: Power Designer数据库建模技术

·102· PowerDesigner 数据库建模技术

3. 在“Consolidate File”窗口,选择要固化的模型,单击“OK”按钮。

4. 在“Model Consolidation”对话框中,输入或选择固化参数,完成这些工作后,单击“OK”。

实验 7-3(指导实验) 固化概念数据模型

描述

跟随指导操作,固化概念数据模型 PUBS2INT。

步骤

从 CDM文件到MateWorks字典固化模型数据的步骤如下: 1. 打开 PowerDesigner的MetaWorks模块。 2. 选择 Dictionary→Consolidation,打开“File Open”窗口(图 7-7)。

图 7-7

3. 选择 pubs2int,然后单击“OK”。 4. 如果MetaWorks没有连接到字典数据库上,“Connect”对话框打开,如图 7-8所示。

图 7-8

5. 键入名称和口令,单击“OK”,打开“Model Consolidation”对话框(图 7-9)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 116: Power Designer数据库建模技术

第 7章 检查、固化和提取概念数据模型 ·103·

图 7-9

6. 把“Consolidation Mode”设置成“Consolidate”,然后单击“OK”。 固化过程根据选择的固化模式和选项执行,这些选项在下面的练习中介绍。 7. 如果在MetaWorks字典库中没有建立这个工程,一个确认框打开,如图 7-10所示。

图 7-10

8. 单击“是(Y)”。 9. 显示固化信息,接着显示提交确认框(图 7-11)。

图 7-11

10. 单击“是(Y)”,一个修改确认框(图 7-12)打开。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 117: Power Designer数据库建模技术

·104· PowerDesigner 数据库建模技术

图 7-12

11. 单击“是(Y)”,显示修改完成的信息框(图 7-13)。

图 7-13

12. 单击“确定”,回到“Messages”窗口(图 7-14)。

图 7-14

13. 单击“OK”,退出固化过程。

7.2.1 만뮯톡쿮ꎨConsolidation Optionꎩ

修改固化选项

在“Consolidation Options”窗口(图 7-15),能够选择不同的固化选项。基本操作是:从MetaWorks菜单中选择 Options→Consolidation,或者在“Model Consolidation”窗口,单击“Options”按钮,打开“Consolidation Options”窗口,在“Consolidation Options”对话框中选择期望的选项,然后单击“OK”按钮。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 118: Power Designer数据库建模技术

第 7章 检查、固化和提取概念数据模型 ·105·

图 7-15

表 7.1列出了固化选项。

表 7.1

选项 描述

Preselect the(sub)models 每次固化时,全局模型和所有子模型被预先选定

Confirmation after the consolidation 正式修改MetaWorks字典前,MetaWorks提示确认提交固化操作

Automatic extraction 固化后模型被自动提取 With confirmation 自动提取后,提示确认提交操作 Use the author as mamager for new

submodels 在字典中固化新的子模型时,MetaWorks 把作者作为模型主人

7.2.2 만뮯쒣쪽(Consolidation Mode)

在MetaWorks字典中修改模型数据时,可以改变缺省固化模式(Consolidation Model)。表 7.2列出了固化模式选项。

表 7.2

固化模式 结 果

Consolidate (固化)

使用 CDM或 PDM文件中的数据,在字典中插入和(或)修改数据,这是缺省选项。向数据库中固化模型时,如果发现有人对模型作了修改,就要求

用户作出判断,是否进行覆盖

Replace (代替)

用 CDM或 PDM文件中的模型数据代替字典中的数据 注意:这种模式执行后,自动提取模型,所有的设计者将在新的模型下工作,固化现有模型,覆盖字典中的原有信息

Simulate (模拟)

不提交改变,只是一种模拟。模拟结束时,所有字典的内容不作修改。在实际固化的过程中,使用这个模式检测 CDM或 PDM文件的模型数据和字典中模型数据有所不同

Create (产生)

从 CDM或 PDM文件产生新的模型或工程,并且保护字典中的原始模型数据。使用这个模式产生和存储模型的另一个版本

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 119: Power Designer数据库建模技术

·106· PowerDesigner 数据库建模技术

7.3 模型的提取

提取(Extraction)

对于团队成员来说,当对存储在 MetaWorks 字典中的模型进行操作时,数据必须被写到 CDM或 PDM文件中,把数据从 MetaWorks字典写到 CDM或 PDM文件的过程称为提取。应该定期提取一个模型,以确保设计者工作在最新版本的模型下。

提取模型

为了从MetaWorks字典中提取模型,选择 Dictionary→Extraction,并且选择提取参数。 提取期间,MetaWorks显示提取过程信息。 l 单击“OK”按钮,关掉“Message”框,并且保存信息。 l 单击“Cancel”按钮,关掉“Message”框,不保存信息。 选择 Dictionary→Display messages,显示最近提取模型时产生的信息。

注 意: 当执行固化和提取时,使用如下指导:

● 一个子模型是一个全局模型上的视图,子模型随全局模型被提取和固化。

● 既可以从 DataArchitect中固化和提取,也可以从 MetaWorks客户中执行

固化和提取。DataArchitect能够用作 MetaWorks字典的客户。

● 如果工作在一个团队中,那么,在分配一份拷贝给团队的每个成员之前,

必须提取和固化这个模型。

实验 7-4(指导实验) 提取一个概念数据模型

描述

跟随指导操作,把数据从 PDClass的MetaWorks字典中提取到一个新的 CDM文件中。

步骤

为了把数据从MetaWorks字典写到 CDM或 PDM文件中,进行如下操作: 1. 选择 Dictionary→Extraction。如果没有连接到MetaWorks字典上,“Connect”对话

框(图 6-16)打开。 2. 键入用户名和口令,然后单击“OK”。 3. 在打开的“Model Extraction”对话框(图 7-17)中,选择要提取的包含模型的工

程名称。 4. 选择模型的类型(CDM)和模型名称。 5. 选择全局模型(Main Model)以及一些依赖的子模型。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 120: Power Designer数据库建模技术

第 7章 检查、固化和提取概念数据模型 ·107·

6. 键入目标文件的名称,在这个目标文件中将存放提取的模型。 7. 键入提取的模型将被存储的目录。 8. (可选项)选择“Lock entire model”检查框。这样选择后,阻止任何人修改已被提

取的模型。如果对这个模型有加锁的权限,只能作这种选择。加锁将在第十四章

中介绍。 9. 单击“OK”,“Message”窗口(图 7-18)打开,显示提取的过程。

图 7-16

图 7-17

图 7-18

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 121: Power Designer数据库建模技术

·108· PowerDesigner 数据库建模技术

10. 在“Message”框中单击“确定”。

实验 7-5 完成概念数据模型

描述

在这个实验中,检查、固化和提取 Library.CDM。 步骤一:检查 Library.CDM。

1. 随模型打开 CDM工作区,选择 Dictionary→Check Model,开始检查过程。 2. 如果需要的话,改正出现的错误。 3. 单击“OK”,关闭“Check Model Messages”框,并保存检查结果信息(单击“Cancel”,

关闭检查信息框,不保存这些信息。)

注 意: 查看最后一次检查模型的结果,可选择 Dictionary>Display Messages。

步骤二:把 Library.CDM固化到MetaWorks字典中 1. 从MetaWorks菜单,选择 Dictionary→Connect,连接到MetaWorks字典数据库上。 2. 选择 Dictionary→Consolidation。 3. 在“Consolidate File”对话框中,选择 Library.CDM文件。 4. 在“Model Consolidation”对话框中,键入或选择固化参数和固化模式。 5. 单击“OK”。

步骤三:提取一个 CDM。 把模型数据从MetaWorks字典写到 CDM或 PDM文件中,进行如下操作: 1. 选择 Dictionary→Extraction。 2. 在打开的“Model Extraction”对话框中,选择 PDClass工程。 3. 选择 CDM模型类型名称。 4. 选择 Library.CDM名称。 5. 选择全局模型以及依赖的子模型。 6. 键入提取的模型将被保存的目标文件名称。 7. 输入提取的模型将被保存的目录。 8. 单击“OK”,显示提取过程的信息窗口。 9. 在信息框中单击“OK”。

킡 뷡

l 在检查 CDM的过程中,能够发现模型中数据项、实体、联系等的错误和警告。 l 固化(Consolidation)是把新的模型数据从 CDM 或 PDM 文件插入到字典中,并

且在字典中修改现存的模型数据。提取(Extraction)是把 MetaWorks 字典中的数据写到 CDM或 PDM文件中。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 122: Power Designer数据库建模技术

第 7章 检查、固化和提取概念数据模型 ·109·

l 当首次从一个 CDM或 PDM文件把模型固化到 MetaWorks字典中时,MetaWorks为模型对象分配新的对象 ID号。因此,固化后应该立即提取该模型,以便新的对象 ID号被用在模型以后的工作中。

l 固化和提取既能够在 DataArchitect 中执行,也能在 MetaWorks 客户中执行。DataArchitect能够作为MetaWorks字典的客户。

l MetaWorks 客户提供了一个固化模型、提取模型、管理用户权限的用户界面。为了执行这些操作,MetaWorks 客户首先必须和 MetaWorks 服务器以及字典数据库建立连接。

l 根据选择的固化选项和模式执行固化过程,这些选项和模式决定了固化处理的结

果。

쮼 뾼 쳢

1. 如何检查 CDM文件? 2. 如何查看错误或警告信息? 3. 如何直接转到修改错误或警告的窗口? 4. 为什么要对模型进行固化和提取? 5. 哪两个设置决定固化处理的结果?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 123: Power Designer数据库建模技术

本章介绍从概念数据模型(CDM)生成物理数据模型(PDM)的过程,对生

成过程中两种模型对象的对应关系做了较详细的叙述,并阐述了修改 CDM和 PDM

中错误或警告的基本方法和途径。学完本章后,能够达到如下目的:

l 讨论从 CDM生成 PDM的选项;

l 解释生成选项中“preserve modifications”选项的用途;

l 认识 CDM中主要的模型对象,并了解这些对象在 PDM中生成的对象;

l 讨论 CDM中的“联系”转换成 PDM中表的外键、参照完整性的过程;

l 解释 DataArchitect是如何管理数据模型对象的;

l 讨论改正数据模型中错误或警告的基本方法和途径。

8.1 物理数据模型

正如前面的章节所述,PDM充分考虑了模型的物理实现细节;包括: l PDM所选定的目标 RDBMS的特征。 l 修改 PDM的特性以改善模型实现后的性能,增加系统可用性和安全性。

产生 PDM的途径

有四种方法生成 PDM: l 从 CDM文件生成 PDM文件。 l 通过逆向工程(Reverse engineering),从数据库生成脚本中产生 PDM。 l 通过逆向工程(Reverse engineering),从现存的数据库中生成 PDM。 l 不使用概念级数据模型设计方法,直接设计 PDM(这个过程与设计 CDM概念数

据模型的过程类似)。 本章讨论第一种方法,即从 CDM生成 PDM。

从 CDM生成 PDM

从 CDM生成 PDM,需进行如下操作: 1. 选择 Dictionary→Generation Physical Model。

第 8章

生成物理数据模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 124: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·111·

2. 打开“Generate a Physical Data Model”窗口,在“Generation options”组框中,选择适当的选项,单击“Yes”按钮。

3. 打开“Generating Physical Data Model”窗口。 4. 在“Generation”和“Preservation”页上选择适当的选项。 5. 单击“OK”,开始生成 PDM。

实验 8-1(指导实验) 从 CDM生成 PDM

描述 跟随指导操作,从 PUBS2INT.CDM 文件生成 PDM。在详细讨论生成选项和保护选项之前,本实验先介绍基本的工作步骤。

步骤 1. 打开 PUBS2INT.CDM模型文件,选择 Dictionary>Generate Physical Model,打开

“Generate a Physical Data Model”对话框(图 8-1)。

图 8-1

在该对话框中包括两项生成选项,各选项的含义如下: l 生成前保存并固化模型(Save and consolidate model before generation)选项。选择

该选项时,DataArchitect 先保存这个 CDM 文件,然后再启动 MetaWorks 固化该文件,最后才生成 PDM。

l 生成前保存模型(Save model before generation)。选择该选项时,DataArchitect先保存这个 CDM文件,然后开始生成 PDM文件,这个选项不对 CDM进行固化。

在使用过程中,应该先保存这个 CDM文件,再固化该文件,最后生成 PDM文件,这样才能保证 CDM和 PDM在MetaWorks字典中具有一致的 ID号,这时应该选择“Save and consolidate model before generation”选项。“Save model before generation”选项不能保证 CDM和 PDM在MetaWorks字典中具有一致的 ID号,一般不推荐使用这个选项。

2. 在“Generating Physical Data Model”对话框(图 8-2)窗口中单击“Generation” 页,选择生成 PDM的选项。下一节中介绍这些“Generation”选项的详细内容。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 125: Power Designer数据库建模技术

·112· PowerDesigner 数据库建模技术

图 8-2

从图 8-2中可以看出,有几种类型的生成选项,正是它们控制着由 CDM生成 PDM的过程。这些参数和输入项包括:

l 可选参数(Options) l 表前缀(Table profix) l 索引参数(Index) l 参照完整性参数(Reference) 3. 如果已经从 CDM文件生成了一个 PDM文件,以后再从 CDM生成 PDM时,可能

希望保护原来在 PDM中所做的修改。为此,可以先在“Generation”页选择“Preserve modifications”检查框,然后单击“Preservation”页,选择想要保护的具体修改项目。如果在“Generation”页不选择“Preserve modifications”检查框,则“Preservation”页的保护选项(图 8-3)不可操作。

这些选项包括保护图形(Preserve graphics)、保护标签(Preserve label)、保护描述(Preserve description)、保护注释(Preserve annotation)、保护数据类型(Preserve data type)、保护检查(Preserve check)、保护基数(Preserve cardinality)、保护域(Preserve domain)及保护业务规则(Preserve business rule),保护的业务规则分为:定义型规则(Definition rule)、事实型规则(Fact rule)、有效型规则(Validation rule)、公式型规则(Formula rule)。 4. 单击“OK”,开始生成 PDM。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 126: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·113·

图 8-3

8.1.1 짺돉닎쫽

从 CDM生成 PDM时的必选参数

从 CDM生成 PDM时,必须提供如下参数: l 数据库名称(Database Name)。它是目标数据库管理系统的名称,可从“Database

name”下拉列表框中选择 DataArchitect支持的数据库管理系统。 l PDM文件名(PDM File name)。它是物理数据模型的文件名,其扩展名为 PDM。

从 CDM生成 PDM时的可选参数

l 保护修改(Preserve modifications)。不覆盖以前生成的 PDM所作的修改,只把 CDM中改变的内容增加到原来的 PDM中。选择该选项时,可以从改变了的 CDM生成一个新的 PDM,但不会丢失原来对 PDM所作的修改。

l 生成子模型(Generate submodels)。当带有子模型的全局 CDM生成 PDM时,将生成全局的 PDM和与每一个 CDM子模型对应的 PDM子模型(关于子模型的更多信息请参阅第十三章)。如果全局 CDM模型中没有子模型,这个选项不可操作。

l 生成描述(Generate description)。选择该选项时,把 CDM 对象中的描述

(Description)拷贝到相应的 PDM对象的描述(Description)中。 l 生成注释(Generate annotation)。选择该选项时,把 CDM对象中的注释(Annotation)

拷贝到相应的 PDM对象的注释(Annotation)中。 l 生成同义实体(Generate synonym)。选择该选项时,系统把 CDM中定义的同一实

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 127: Power Designer数据库建模技术

·114· PowerDesigner 数据库建模技术

体的多个图形符号转化到 PDM中。在概念数据模型中,经常会遇到两个实体连线很长的情况,为了使图形美观,可以选择 Edit→Create a Synonym,使同一个实体在图中显示两次,这样,其中一个就可以与远距离的实体进行连接,从而避免了

连线过长,而在生成 PDM 时可以选择是否把同一实体的多个显示符号都转化到

PDM中。 l 检查模型(Check Model)。生成 PDM前,先检查这个 CDM模型,如果发现错误,

停止生成 PDM。 l 显示警告(Display Warnings)。生成 PDM期间,在“Message”框中显示检查过程

中的警告信息。

注 意: 同义实体是表示同一个实体的多个图形符号,同义实体能够改善复杂模型的

可读性。

索引参数

产生索引由下列参数确定: l 主键索引名(PK index name)。指明了从 CDM生成 PDM时,标识符转换为主键

索引时的名称。缺省的主键索引名称是在实体的 code后加“_PK”。例如:实体“职工”的 Code是 EMPLOYEE,生成 PDM时其主键索引名是:EMPLOYEE_PK。

l 外键索引名(FK index name)。指明了从 CDM生成 PDM时生成的外键索引名称。缺省的外键索引名称是在关系名的 Code 后加“_FK”。例如:关系代码为STORE_ORDER,生成的外键索引名称为:STORE_ORDER_FK。

l 索引临界值(Index threshold)。是产生索引的最小值,如果键入了一个临界值,则只有在实体表中的记录数比这个临界值大时,才产生外键索引。例如,如果输入

5000,那么由于在概念数据模型中我们估计一个实体中的实例数为 3000,没有超过 5000,这时该表上的外键不产生索引;如果一个实体中的实例数为 6000,超过了 5000,这时该表上的外键将产生索引。

该选项对于子实体表中记录较少的情况非常有用。因为直接搜索一个较少记录的表比

通过搜索这个表的索引效率更高。 注 意: 实体中能够存放的记录数(Number)是实体的一个特性,这个特性能够在实

体的特性定义中确定。如果实体特性定义中没有指定这个数,外键索引根据

系统的缺省生成。

表前缀与表的参照完整性选项

在“表前缀”(Table prefix)框中可以指定生成 PDM 时,在所有表名的前面所加的一个前缀名,例如,想在 PDM 中所有的表名前加 AA_,可以在“Table prefix”框中输入:AA_。选择表的“参照完整性”(Reference)选项可以指定生成的 PDM 中父表中的记录修改或删除时,子实体中对应记录的修改和删除规则。 l 表前缀(Table Prefix)。使用“表前缀”为 PDM中产生的表指定一个前缀名,这

个前缀名对于在同一个数据库中区分来自不同模型的表十分有用,一般来说,不

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 128: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·115·

同的子系统应该有不同的前缀名。 l 修改规则(Update Rule)。表示在生成的 PDM模型中,当子实体包含记录时,父

实体记录和子实体记录的修改规则,这些修改规则包括:不影响(None)、限制(Restrict)、级联(Cascade)、设置为空(Set Null)、设置为缺省值(Set Default),可从下拉列表框选择这些选项。

l 删除规则(Delete Rule)。表示在生成的 PDM 模型中,当子实体包含记录时,父实体记录和子实体记录的删除规则。这个选项包括:不影响(None)、限制(Restrict)、级联(Cascade)、设置为空(Set Null)、设置为缺省值(Set Default),可通过下拉列表框选择这些选项。

8.1.2 놣뮤톡쿮

保护修改(Preserve modifications)选项

因为 CDM中不包含 PDM中某些对象的信息,所以 DataArchitect提供了一种机制。当已经生成了一个 PDM 文件,并在已生成的 PDM 中对某些对象作了修改,现在要从 CDM再次生成 PDM文件时,而需要保护原来 PDM中所作的修改,在这种情况下,应选择这个选项。

前面已经提到,如果已经在“Generation”页上选择了“Preserve modification”检查框,那么应该从“Preservation”页上选择各种保护选项。如果已经从 CDM 中产生了 PDM,就应该考虑选择这些选项。通过这些选项,能够在修改 CDM 后,重新生成一个新的 PDM,而不丢失对 PDM已作的修改。

缺省状态下,“Preservation”页中的所有保护选项都被选择。如果不保护全部选项,不要选择某些保护选项的检查框。

保护修改原因

保护修改有多种原因,如:在 PDM中可能已给出外键列上 Label的更确切的含义,这时我们又对 CDM作了改动,在重新生成 PDM时,希望把 CDM中的其它修改反映到 PDM中,当不希望对 PDM中的 Label作修改,这时应该选择“Preserve label”检查框。

如果不选择“Preserve modifications”检查框,DataArchitect将从 CDM中产生一个新的PDM,并以这个新的 PDM覆盖原来的 PDM,原来在 PDM中所作的修改全部丢失。

注 意: 查阅 DataArchitect联机帮助,可得到关于使用保护选项更详细的说明。

8.2 PDM的模型特性

要修改或观察 PDM的模型特性,可选择 Dictionary→Model Properties。 在从 CDM生成 PDM的过程中,DataArchitect使用 CDM的模型特性生成 PDM的模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 129: Power Designer数据库建模技术

·116· PowerDesigner 数据库建模技术

特性(图 8-4),如:工程名称(Project Name)、工程代码(Project Code)、名称(Name)、代码(Code)、标签(Label)、作者(Author)、版本(Version)、语言(Language)、描述(Description)和注释(Annotation)等。除此之外,DataArchitect还管理着 PDM的其它特性,这些特性包括: l 数据库管理系统名称(Database Name)。PDM生成过程中选定的目标 RDBMS的

名称。 l 文件名(File)。PDM的路径和文件名。 l 产生日期(Created)。生成 PDM的日期。 l 修改日期(Modified)。生成 PDM后最后一次修改 PDM的日期。

图 8-4

注 意: 版本(Version)、位置(Location)、生成日期(Date Created)、修改日

期(Date Modified)等特性的注释可参考第五章中的有关内容。

说明和修改 PDM特性

生成日期(Created)、修改日期(Modified)、文件名(File)、数据库名称(Database name)等特性是由 DataArchitect 内部维护的,不能直接修改这些特性;但是,其它模型特性是可以修改的。例如,可以修改 PDM 的版本号以跟踪 PDM 的修改次数。例如先指定 PDM 的版本号为:2.1.0,每一次对 PDM进行修改后,要把 PDM的版本号提高一点(例如 2.1.1、 2.1.2 等等)。

为了修改从 CDM生成的 PDM的特性,进行如下操作: 1. 打开 PDM工作区,选择 Dictionary→Model Properties,打开“Model Properties”

窗口。 2. 选择要修改的选项页。 3. 对特性内容进行修改,然后单击“OK”按钮。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 130: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·117·

注 意: 能够为 PDM的模型图增加一个标题框(Title Box)。

8.3 把 CDM对象转换成 PDM对象

从 CDM 生成 PDM 的过程中,把 CDM 对象和特性转换成相应的 PDM 对象,如表 8.1所示。

表 8.1

CDM对象 相应的 PDM对象 实体(Entity) 表(Table) 实体属性(Entity Attribute) 列(Column) 标识符(Identifier) 主键或外键(由依赖或非依赖联系决定) 〈无相应的 CDM对象〉 外键(Foreign Key) 联系(Relationship) 参照完整性(Reference) 〈无相应的 CDM对象〉 索引(Index) 〈无相应的 CDM对象〉 视图(View)

下面几节将介绍在实体转换成 PDM表时,CDM中的联系和继承连接对生成的 PDM的影响。

8.3.1 냑 CDM훐뗄쪵쳥뮻돉 PDM훐뗄뇭

在 CDM中的“Entity Properties”窗口,选择“Generate table”检查框,则一个实体在PDM中生成对应的表。CDM中的实体转换成 PDM中的表(图 8-5)遵循如下规则:

l CDM中的属性生成 PDM中表的对应列。 l CDM中的标识符生成 PDM中表的主键或主键的一部分。

图 8-5

8.3.2 냑 CDM훐뗄솪쾵뮻돉 PDM훐뗄닎헕췪헻탔

在 CDM生成 PDM的过程中,CDM中的“联系”被转换成 PDM中的“参照完整性”,这些“参照完整性”是由“联系”的基数和依赖性所控制的。

实体(Entity)

Publisher

Publisher id Publisher name Publisher city Publisher sate

表(Table)

PUBLISHER

PUBLISHER ID <pk> PUB_PUBLISHER_ID<fk> PUBLISHER_NAME PUBLISHER_CITY PUBLISHER_SATE

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 131: Power Designer数据库建模技术

·118· PowerDesigner 数据库建模技术

在 CDM生成 PDM的过程中,“联系”的基数(Cardinality)不变。如:在 CDM中一个“联系”的基数是一对多(one to many),该 CDM生成的 PDM中的参照完整性也是一对多(one to many)的。对每一个 PDM的参照完整性来说,基数的最小与最大值代表父表中的一条记录对应子表中记录的最小与最大记录数。

缺省状态下,PDM中参照完整性是一对多的。若子表中外键的强制(Mandatory)特性是强制的,即选中“Mandatory”检查框,则子表中的最小记录数是“1”;若子表中外键的强制(Mandatory)特性是可选的,即不选中“Mandatory”检查框,则子表中的最小记录数是“0”。参照完整性中基数的最大数(Max),表示一条父记录最多可以连接的子记录数。

要在 PDM工作区中显示参照完整性的基数,可从菜单上选择 File→Display Preferences,打开“Display Preferences”窗口(图 8-6),选择“General”页中的基数(Cardinality)检查框。为了在 PDM中显示主键和外键,可选择键指示器(Key Indicators)选项。

CDM 中的“联系”转换 PDM 中的“参照完整性”的方法有一对多联分的转换和多对多联系的转换。

图 8-6

一对多联系的转换

l 一对多联系的转换规则如下: ◆ “一”端实体的标识符,转换成“多”端实体表的外键。 ◆ 若一对多联系存在依赖关系,则外键作为寄生实体(Dependent Entity)主键的

一部分。 ◆ 参照完整性联接父表与子表。

非依赖的一对多联系如图 8-7所示:

CDM PDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 132: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·119·

图 8-7

依赖性一对多联系的转换如图 8-8所示: 在缺省状态下,PDM中所有的参照完整性是一对多的,外键的强制特性代表最小的记

录数(Min)是零个或一个。参照完整性中基数的最大数(Max),表示一条父记录最多可以对应的子记录数。

图 8-8

多对多联系的转换

CDM PDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 133: Power Designer数据库建模技术

·120· PowerDesigner 数据库建模技术

如图 8-9所示,多对多联系转换的转换规则如下: l 实体中的标识符转换成中间实体表(Associative Table)的外键。 l 两个多端实体转移到中间表中的外键联合作中间表的主键。 l 中间表与两个多端实体表通过参照完整性联接。 在 CDM转换成 PDM的过程中,为了解决多对多联系,系统把这种多对多联系转换成

一个中间表(Associative Table)。注意:在 CDM中作者(Author)和书名(Title)实体的图形符号有阴影框,在转换时,这些阴影也被传送到 PDM中。然而,中间表以缺省的格式产生(没有阴影框)。在 CDM对象中,非缺省的格式(如:颜色和阴影),常用来帮助我们辨别在 PDM中产生的对象。

为了在 CDM中产生阴影框,应该按下列步骤执行: 1. 用鼠标右键单击实体符号,弹出如下的一个菜单(图 8-10)。 2. 选择“Shadow”。 3. 对希望以阴影显示的每个实体重复上述步骤。

图 8-9 图 8-10

8.3.3 뗝맩솪쾵뗄뮻

递归(Recursive or Reflexive)联系的转换如下: 标识符作为自身实体表的外键时,就表现出了自身参照完整性,如图 8-11所示。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 134: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·121·

图 8-11

把继承连接转换成 PDM中的表

继承连接转换成 PDM 对象由实体特性中的“Generate table”选项,和继承连接的“Generation mode”选项控制。

在实体特性(Entity Properties)窗口(图 8-12)中,实体的生成表(Generate table)检查框必须被选择。

图 8-12

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 135: Power Designer数据库建模技术

·122· PowerDesigner 数据库建模技术

生成模式(Generation mode)显示在继承连接特性(Inheritance Properties)窗口(图8-13)中。要打开继承连接特性窗口,在 CDM中双击继承连接符号(半圆符号)。

图 8-13

生成模式有三种, 分别是: l 生成父实体(Generate parent),该生成模式仅为父实体生成表。 l 生成子实体(Generate children),该生成模式仅为子实体生成表。 l 生成父实体/子实体(Generate parent/ Generate children),该生成模式为父实体和子

实体都生成表。

生成父实体模式

生成父实体模式产生与父实体对应的一个表,这个表包括: l 父实体的名称; l 与父实体属性对应的列; l 与所有子实体属性对应的列; l 与父实体和所有子实体定义的联系对应的参照完整性。 下面两种情况下选择 Generate parent模式是合适的: l 希望频繁地从父实体及其某些或全部子实体中访问数据。 l 很少从单一类型的子实体中访问数据。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 136: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·123·

从概念数据模型 PUBS2INT 的例子(图 8-14)中看到,在大多数情况下查询职工数据时,不考虑职工是销售人员还是顾客代表,这时,选择生成父实体模式是较为合适的。生

成父实体模式,在 PDM中只生成父表,查询信 息时消除了父子表数据的连接,由此改进了系统的可用性和运行效率。

图 8-14

标识属性(Specifying attribute)的特点

标识属性(图 8-15)仅对“生成父实体”模式有效。在 CDM生成 PDM时,标识属性在父表中生成一个列。通过这个列辨别子实体中互斥的记录。例如:一个职工要么是顾客

代表,要么是销售员。把 CR定义成继承连接中的一个标识属性,这个标识属性在生成的父表中作为一个列,该列用来标识一条记录是顾客代表还是销售员。注意:如果各类子记录

之间不是一种互斥的关系,请不要使用标识属性。标识属性是通过名称(Name)、代码(Code)、数据类型(Data Type)以及长度(Length)来定义的。

CDM

PDM

标识属性

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 137: Power Designer数据库建模技术

·124· PowerDesigner 数据库建模技术

图 8-15

“生成子实体(Generate Children)”模式

选择“Generate children”模式,则 CDM中的子实体生成 PDM中对应的表。在“Generate children”模式中,有两个附加选项,即继承标识符(Inherit identifier)与继承所有的属性(Inherit all),见图 8-16。这些附加选项决定了 PDM中与子实体对应的表是含有父实体全部属性对应的列,还是仅含有父实体标识符属性对应的列。

当选择了“Inherit all”选项时,每个表包括: l 对应子实体的名称; l 对应子实体属性的列; l 对应父实体所有属性的列。 在书店例子中选择“Inherit all”选项,将形成如图 8-17所示的结果。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 138: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·125·

图 8-16

图 8-17

当选择“Inherit identifier”选项时,每个表包括: l 对应子实体的名称; l 对应子实体属性的列; l 对应父实体标识符的列。 在书店例子中选择“Inherit identifier”选项,将形成如下的结果(图 8-18):

图 8-18

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 139: Power Designer数据库建模技术

·126· PowerDesigner 数据库建模技术

满足下列两种情况时,选择“Generate children”模式是合适的: l 希望对每个子实体生成的表进行频繁的数据访问。 l 不需要对父实体中的全部记录进行查询,也不需要对部分或全部子实体同时进行

访问。 例如,在上述例子中,如果要么查询销售人员,要么查询顾客代表,则选择“Generate

children”模式是合适的。 生成父实体模式或者生成子实体模式,使父实体表和子实体表不同时在物理模型中出

现,这就消除了父实体表和子实体表中数据间的联系,改善了系统的可用性,提高了系统

的使用效率。

注 意: 当选择“生成子实体(Generate children)”模式和“继承标识符(Inherit

identifier)”选项时,会丢失物理数据模型中父实体的非标识符属性。例如:

销售员父实体和新雇员、管理人员子实体之间存在继承连接,当选择“生成

子实体”模式和“继承标识符”时,将会丢失模型中销售员实体的非标识符

属性。

“生成子实体(Generate children)”模式和“继承标识符(Inherit

identifier)”选项适用于多级继承连接结构。对多级继承连接结构,选择这

些选项时,父实体的非标识属性在父实体中表现出来。

生成父实体/子实体(Generate parent/Generate children)模式

选择这种模式时,PDM中不但生成父实体表,同时也生成每个子实体表,还生成了参照完整性,如图 8-19所示。

父实体对应的表包括: l 父实体的名称; l 与父实体属性对应的列。

子实体对应的表包括: l 子实体对应的名称; l 与子实体属性对应的列; l 与父实体标识符对应的列或所有父实体属性对应的列; 如果选择了“Inherit identifier”选项,子实体表中仅有与父实体标识符对应的列。 如果选择了“Inherit all”选项,子实体表中生成所有父实体属性对应的列。 l 父实体与子实体之间的参照完整性。 例如,下面(图 8-20)是从书店 CDM例子中选出的一个继承连接。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 140: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·127·

图 8-19

图 8-20

当选择“生成父实体”(Generate parent)、“生成子实体”(Generate children)、“继承所有的属性”(Inherit all)选项时,上面例子中的 CDM生成如下 PDM(图 8-21):

CDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 141: Power Designer数据库建模技术

·128· PowerDesigner 数据库建模技术

图 8-21

对同样的 CDM,如果选择生成父实体(Generate parent)、生成子实体(Generate children)、继承标识符(Inherit identifer)选项,生成的 PDM如下(图 8-22):

图 8-22

PDM

PDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 142: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·129·

什么候使用生成父实体/生成子实体(Generate parent/Generate children)模式 满足下列两种情况时,选择这种模式(Generate parent/Generate children)是合适的: l 访问父实体及某些或全部子实体中数据的机会是均衡的。 l 访问带有一个子类型的父实体中数据的机会是均衡的。 例如,当要查询所有的职工,或者只查询新职工,或者只查询管理人员时,三类查询

的机会均衡,这时选择这种模式比较合适。

8.4 模型对象和对象 ID号

对象 ID号是DataArchitect为数据模型对象指定的一个数字号码。在建模的整个过程中,DataArchitect使用对象 ID号(不是对象的名称或代码)来辨认和管理模型对象,这些对象ID号贯穿于:

l 物理级和概念级多次反复的设计过程中; l CDM和 PDM的连续改进中; l 从 CDM不断生成 PDM的过程中。 DataArchitect将对象 ID号与其它有关对象的信息一起存储为CDM和 PDM文件中的内

部定义。

从 CDM生成的 PDM对象

当 CDM生成 PDM时,DataArchitect为 PDM对象指定: l 它们自己的对象 ID号(OID); l 它们在 CDM中的源对象 ID号(SOID); 源对象 ID 号(SOID)把 CDM中的对象和 PDM中的对象连接起来,这个 PDM对象

是由源对象生成的。然而,CDM中没有关于它所生成的 PDM对象的信息。 图 8-23描述了对象 ID号在 CDM和 PDM中的对应关系。

在 PDM中直接建立 PDM对象

当在物理级直接建立 PDM对象,而不是在 CDM中产生对象然后生成 PDM对象时,DataArchitect为在 PDM 中直接建立的这个对象指定一个 ID 号,并且把它的源对象号设置为 0。这时在物理级直接产生的对象没有连接到 CDM模型对象上,如图 8-24所示。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 143: Power Designer数据库建模技术

·130· PowerDesigner 数据库建模技术

实体和联系 CDM中的 ID号 PDM中的对象 PDM中的 ID号

Publisher 实体 OID=1 Publisher table OID=8 SOID=1

Book实体 OID=2 Book table OID=9 SOID=2

Bk/Pub联系 OID=3 Bk/Pub reference OID=10 SOID=3

ID_No域 OID=4 ID_No Domain OID=11 SOID=4

图 8-23

实体和联系 CDM中的 ID号 PDM中的对象 PDM中的 ID号

Publisher 实体 OID=1 Publisher table OID=8 SOID=1

Book实体 OID=2 Book table OID=9 SOID=2

Bk/Pub联系 OID=3 Bk/Pub reference OID=10 SOID=3

ID_No域 OID=4 ID_No Domain OID=11 SOID=4

Total Books OID=12 SOID=0

图 8-24

8.5 修改 CDM和 PDM文件

数据建模的过程是一个不断反复的过程,在建模过程中,要求设计者多次修改 CDM和PDM数据模型。概念数据建模是发现数据并建立实体间联系的过程,需要不断地修改 CDM。物理数据建模提供模型的具体实现细节以使 PDM在特定的RDBMS环境下保证数据的完整性、可用性和高性能。

在正确的级别(概念级或物理级)建立和修改模型是十分关键的。要使 CDM符合特定业务信息的需求,应该在概念级修改模型。要增强数据模型的物理实现特性,应该在物理

CDM PDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 144: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·131·

级修改模型。在建模过程中应遵循下面的规则: l 在 CDM中增加实体与数据项,以满足业务信息的需求。在 PDM中增加表和列,

只是为了改进模型的物理实现。 l 在概念级给对象赋予一个有意义的名称,在物理级不需要重新命名。 l 在概念级精确地定义基数和存在性,在物理级不需修改参照完整性。 l 概念级用有意义的术语表达业务规则的“描述”,物理级不需要修改这些业务规则

的“描述”。

实验 8-2 生成 PDM

描述 在这个实验中,从 Library.CDM模型文件生成了一个 PDM。生成之前,按下列要求选择模型中继承连接的生成模式(Generation mode)。 l 为职工(Employee)与其子实体间的继承连接选择“生成子实体”(Generation

Children)和“继承所有”(Generate children/Inherit all)的属性选项。 l 为专职人员(Professional)与其子实体间的继承连接,选择“生成父实体(Generate

Parent)”选项。 使用 Sybase SQL Anywhere作为目标数据库管理系统,接受缺省的文件名,然后开始生

成 PDM。

步骤 1. 随模型打开 CDM工作区。选择 Dictionary→Generate Physical Model,显示一个确

认对话框并确认后,打开“Generating physical data model”窗口。 2. 从“Database name”下拉列表框中,选择目标数据库管理系统 Sybase SQL

Anywhere。 3. 接受 PDM file name的缺省设置,这个文件名是由 CDM生成的 PDM文件名。(实

际工作中可选择合适的路径和 PDM文件名,为做练习先接受缺省设置值)也可以单击问号(?)按钮打开一个窗口,选择一个文件名,还可以键入一个特定的 PDM文件名。DataArchitect 能够在这个文件名中写入模型数据,如果选择了以前生成的 P D M 文件,D a t a A r c h i t e c t 用新的 P D M 覆盖这个模型文件。

4. 在“Generation”页上选择合适的选项(为做练习先接受缺省设置)。 5. 选择保护修改(Preserve modifications)选项(为做练习先接受缺省设置)。 6. 单击“OK”,开始生成 PDM。 7. 检查 PDM的结果,注意多对多联系和继承连接的转换。

解决方案 解决方案如图 8-25所示:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 145: Power Designer数据库建模技术

·132· PowerDesigner 数据库建模技术

在实体特性(Entity Properties)窗口,实体的生成表(Generate table)特性必须起作用。

图 8-25

킡 뷡

l PDM是根据物理实现细节表达的数据模型,包括所选 RDBMS的特征、信息处理需求、改进性能和可用性等

l 有四种生成 PDM的方法: ◆ 由 CDM生成 PDM; ◆ 通过数据定义脚本的逆向工程生成 PDM; ◆ 通过现存数据库的逆向工程生成 PDM; ◆ 直接建立 PDM。 l 从 CDM生成 PDM的过程中,把 CDM对象转换成 PDM对象。 l CDM中的实体转换成 PDM中的对象遵循下面规则: ◆ 在实体的特性中,如果选择了“Generate table”检查框(系统缺省为选择该检

查框),CDM中的一个实体转换成 PDM中的一个表。 ◆ CDM中实体的属性转换成 PDM中表的一个列。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 146: Power Designer数据库建模技术

第 8 章 生成物理数据模型 ·133·

◆ CDM中实体的标识符转换成 PDM中表的主键。 l 联系转换成 PDM 中的参照完整性是由基数(Cardinality)和依赖性(Dependent)决

定的。 l 继承连接转换成 PDM中的对象是由“生成模式(Generation mode)”决定的。 l 当从 CDM生成 PDM对象时,DataArchitect在 PDM中指定了对象本身的 ID号以

及该对象在 CDM中的源对象 ID号,通过对象 ID号和源对象 ID 号,连接 PDM和 CDM中的对象。

l 在物理级直接产生 PDM对象时,DataArchitect为该对象指定一个对象 ID 号,并且把该对象的源对象 ID号设置为零。

l 在正确的级别建模和修改模型是十分关键的。如果要修改业务规则、增加信息实

体及联系,应该在概念级工作;如果只是增强模型的物理实现细节,应该在物理

级工作。

쮼 뾼 쳢

1. 什么是 PDM? 2. 描述 DataArchitect中产生 PDM的四种方法。 3. 描述从 CDM生成 PDM的生成选项。 4. 如何使用“保护修改(Preserve modifications)”生成选项。 5. 填写下表(表 8.2)

表 8.2

CDM对象 相应的 PDM对象

Table

Column

Primary Key

Foreign Key

Reference

6. 解释 CDM中的对象 ID号与其生成的 PDM中的对象 ID号之间的关系。 7. 至少给出三种在正确级别建模的指导方法。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 147: Power Designer数据库建模技术

调整物理数据模型对于概念模型的物理实现具有重要的现实意义。一个数

据模型实现后,其性能高低与物理模型的调整关系密切,在模型的具体实现细

节上应做认真的研究。本章详细介绍了调整物理数据模型的手段和方法。学完

本章后,能够达到如下目的:

l 讨论调整 PDM的原因;

l 产生表的有效性规则以及列的 Check约束;

l 调整参照完整性;

l 产生视图、候选关键字列、索引;

l 带数据修改数据库中表的结构。

9.1 调整物理数据模型

PDM中需要调整的项目

从 CDM生成 PDM后,需要调整的项目有: l 数据完整性和一致性; l 数据库的可用性、性能和安全性 这些调整必须在物理级完成,因为这些特性与 RDBMS有密切的关系。

业务规则和 PDM的调整

业务规则是调整物理数据模型的重要指导纲领。DataArchitect把 CDM中产生的业务规则转换到 PDM中,并且把这些业务规则应用到 PDM相应的对象上。然而,业务规则涉及到的对象可能在 CDM 中并不存在(如视图),这就需要先在 CDM 中定义这些业务规则,当生成 PDM后,产生 CDM中不存在的对象,再把业务规则应用到这些对象上。另外,也可以在 PDM中定义规则,然后把这些规则应用到 PDM对象上。

调整物理数据模型

第 9章

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 148: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·135·

9.2 数据完整性和一致性

数据完整性(Integrity)和一致性(Consistency)是通过下面两种约束类型实现的: l 表约束和列约束; l 参照完整性约束。

9.2.1 뇭풼쫸뫍쇐풼쫸

简单来说,约束是在数据库的表和列上定义的限制条件,表约束和列约束对表和列的

数据进行了限制。DataArchitect使用检查约束(Check Parameter)定义表约束和列约束,检查约束定义了数据的取值范围和有效性规则,能够把检查约束应用到域、列、数据项以及实

体的属性上。 DataArchitect支持标准约束和有效性规则两种检查约束。

标准约束

标准约束是一般的数据控制,诸如最大值、最小值和缺省值,格式,度量单位(即数

据的使用单位,如:公斤、米、个、条等)。 进行如下操作,设置标准约束: 1.选择 Dictionary→List of Domains或者 Dictionary→List of Columns,打开域列表(List

of Domains)或列列表(List of Columns)窗口(图 9-1)。

图 9-1

2.选择一个域或列(注意每一行开始的箭头)。 3.单击“Check”按钮,打开“Check Parameters”对话框(图 9-2)。 4.键入标准约束的值,然后单击“OK”。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 149: Power Designer数据库建模技术

·136· PowerDesigner 数据库建模技术

图 9-2

标准约束各项内容如表 9.1所示: 表 9.1

标准项目 描 述

Minimum 最小可接受的值,它必须小于等于最大值

Maximum 最大可接受的值,它必须大于等于最小值

Default 在没有输入数据时的缺省值,它必须界于最大值和最小值之间,并且必须是列表中的值

Unit 标准度量单位(数据项中数据的计量单位,如:公斤、米、个等)

Format 数据的格式(例如:999999.99)

Lowercase 迫使所有的字母都转换成小写字母

Uppercase 迫使所有的字母都转换成大写字母

Cannot Modify 选择该检查框,在物理表中保护数据不被修改

List of Values 授权值,这些值必须界于最大值与最小值之间

Label 标识一个授权值反映到用户界面上的数据,如在表中某个列的值为“M”,反映到用户界面上的数据为“男”

有效性规则

有效性规则是根据业务需求确定的数据控制规则,这些规则是在物理级定义的。

DataArchitec支持服务器端和客户端两种有效性规则的定义。 l 服务器端有效性规则,是由 RDBMS 强迫完成的有效性规则。服务器端有效性规则

是使用 SQL语句及其目标 RDBMS支持的 SQL扩展语句实现的。

l 客户端有效性规则,是由客户端强迫完成的有效性规则。客户端有效性规则是使

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 150: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·137·

用客户应用开发环境支持的 3GL或 4GL语言实现的。

在检查约束中使用有效性规则

当有效性规则应用到域、列上时,它的表达式能够产生检查约束。检查约束是根据业

务规则确定的。 要在检查约束中使用有效性规则,可进行如下操作: 1.从业务规则列表(List of Business Rules)中选择有效性业务规则,然后把它附加(Attach)到 Domain、Column、Table、Reference、View、Index、Alternate Key上。

2.从域列表(List of domain)或列列表(List of column)中,选择应用了业务规则的域(Domain)或列(Column),然后单击“Check”按钮。

注 意: 在检查约束对话框中附加的有效性规则表达式不能修改。

检查约束和业务规则

表 9.2举例说明了业务规则与检查约束的关系。 表 9.2

业 务 规 则 检 查 约 束

ID号必须是大于等于 1000的整数 标准约束:最小值(Minimum)是 1000

如果一个职工不选择保险计划,那么他的保险号为:A12 标准约束:缺省值(Default)为 A12

职工必须是下列类型之一: 专业人员,技术人员、经营人员、管理人员 标准约束:值列表(List of Values)

出版书的日期必须早于或等于当前日期 用 4GL写成的有效性规则,或者是检查这个条件的 SQL语句

职工工作的终止日期必须晚于开始日期或者是 空值

用 4GL写成的有效性规则,或者是检查这个条件的 SQL语句

实验 9-1(指导实验) 产生有效性规则,

并将此应用到列上作为检查约束

描述

跟随指导操作,产生如下的有效性业务规则,并把它应用到列上做检查约束。 职工的 ID必须大于零。

产生列约束的步骤 1.在 PDM中定义有效性类型的业务规则。 2.把表达式附加到业务规则上。 3.把业务规则应用到列上。

以下是在 PDM中定义业务规则的步骤(步骤 1~5): 1.打开 BOOKSTROE8.PDM(图 9-3)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 151: Power Designer数据库建模技术

·138· PowerDesigner 数据库建模技术

图 9-3

2.选择 Dictionary→List of Business Rules,打开“List of Business Rules”窗口(图 9-4)。

图 9-4

3.在 Name与 Code列中键入 Emp_ID。 4.从 Type下拉列表框中选择“Validation”。 5.单击“Define”按钮,打开“Business Rule Definition”窗口(图 9-5),在“Description”框中键入如下描述:职工的 ID号必须大于零。

以下是把表达式附加到业务规则上的步骤(步骤 6~9):

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 152: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·139·

图 9-5

6.选中“Server”单选按钮。 7.单击“Expression”窗口(在“Client”和“Serve”单选按钮的下面)。然后单击“Zoom”按钮,打开“SQL Query Editor”窗口(图 9-6)。

图 9-6

8.单击合适的分类(Category),选择相应的对象,组成下面的有效性规则表达式:Emp_ID>0。

9.单击“OK”返回到“Business Ruler Definition”窗口(图 9-7)。

图 9-7

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 153: Power Designer数据库建模技术

·140· PowerDesigner 数据库建模技术

以下是把有效性规则应用到列上的步骤(步骤 10~21): 10.在“Business Ruler Definition”窗口中单击“Attach”按钮,打开“Select Objects”

窗口(图 9-8)。 11.从“Available objects”下拉列表框中选择“Column”。

图 9-8

12.选择职工 ID对象(EMPLOYEE.EMP_ID),如图 9-9所示。

图 9-9

13.单击“Add”按钮,EMPLOYEE.EMP_ID出现在右窗格的“Selected objects”列表框中(图 9-10)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 154: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·141·

图 9-10

14.单击“OK”,直到返回 PDM主窗口。 15.选择 Dictionary → List of Columns,打开 “List of Columns”窗口(图 9-11)。

图 9-11

16.选择 Employee_identifier。 17.单击“Check”按钮,打开“Check Parameters”对话框(图 9-12)。 18.在“Check Parameters”对话框中接受缺省的 Constraint name,或键入其它名称。 19.单击“Validation Rules”页。 20.有效性规则及其表达式出现在“Validation Rules”页上(图 9-13)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 155: Power Designer数据库建模技术

·142· PowerDesigner 数据库建模技术

图 9-12

图 9-13

21.单击“OK”退出。

最后的结果

业务规则联合生成数据库脚本 当生成数据库脚本时(通过选择 Database→Generate Database),有效性规则出现在数

据库生成脚本中。这里有一个例子: Create table EMPLOYEE

(

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 156: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·143·

EMP_ID integer not null

constraint CKC_EMP_ID_EMPLOYEE check (

(Emp_ID>0)),

EMPLOYEE_LAST_NAME char(10) null ,

EMPLOYEE_FIRST_NAME char(10) null ,

EMPLOYEE_HIRE_DATE char(10) null ,

EMPLOYEE_PHONE char(10) null ,

EMPLOYEE_STATUS char(10) null ,

EMPLOYEE_TYPE char(10) null ,

EMP_EMPLOYEE_IDENTIFIER char(10) not null,

Constraint PK_EMPLOYEE primary key (EMP_ID)

)

9.2.2 닎헕췪헻탔

参照完整性(RI)规则约束着不同表中主键与外键之间的关系。

参照完整性

PowerDesigner具有在 PDM中定义参照完整性的能力,PowerDesigner支持下面的参照完整性约束: l 限制(Restrict)。不允许进行修改或删除操作。若修改或删除主表的主键时,如

果子表中存在子记录,系统将产生一个错误提示。这是缺省的参照完整性设置。

l 置空(Set Null)。如果外键列允许为空,若修改或删除主表的主键时,把子表中

参照的外键列设置为空值(NULL)。

l 置为缺省(Set Default)。如果指定了缺省值,若修改或删除主表的主键时,把子

表中参照的外键设置为缺省值(Default)。

l 级联(Cascade)。把主表中主键修改为一个新的值时,相应修改子表中外键的值;

或者删除主表中主键的记录时,要相应删除子表中外键的记录。

定义参照完整性

定义参照完整的步骤如下: 1.在模型中双击参照完整性(两个表间一条线带箭头的),打开“Reference Properties”窗口(图 9-14)。

2.单击“Integrity”按钮,打开“Referential Integrity”对话框(图 9-15)。 3.键入 Name、Code、Constraint name的值,并为下面特性选择合适的值。 l 基数(Cardinalitiy); l 修改约束(Update constraint); l 删除约束(Delete constraint);

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 157: Power Designer数据库建模技术

·144· PowerDesigner 数据库建模技术

l 强制父(Mandatory parent); l 改变父允许(Change parent allowed)。

4.单击“OK”。

图 9-14

图 9-15

参照完整性特性

在 DataArchitect 中,参照完整性是根据参照完整性的名称、代码以及完整性约束名定

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 158: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·145·

义的,另外还包括如下特性: l 基数(Cardinality)。最小最大基数可取下面的值(表 9.3):

表 9.3

基数 最 小 最 大

0 一个父记录不拥有子记录 不能为零

1 每一个父记录至少有一个子记录存在 每一个父记录至多有一个子记录存在

任何整数 一个父记录至少拥有这个整数的子记录 一个父记录最多拥有这个整数的子记录

N 不能为 n 一个父记录拥有任何数量的子记录

l 修改约束(Update constraint)。这个特性阐明在父表中修改主键值时如何影响

子表中的外键值。

l 删除约束(Delete constraint)。这个特性阐明在父表中删除一条记录时如何影

响子表中的外键值。

l 强制父(Mandatory parent)。如果选择了这个检查框,在子表中的每一个外键值

在父表中必须有一个相应的主键值与之对应。

l 允许改变父(Change parent allowed)。如果选择了这个检查框,子表中的外键

值能够改变成父表中的另一个主键值。

修改约束和删除约束

修改约束和删除约束可取下面任何一个: l 无约束(None); l 限制(Restrict); l 级联(Cascade); l 置空(Set null); l 置缺省值(Set default)。

修改和删除约束的影响

选择修改或删除约束,对父表和子表有如下影响(表 9.4):

参照完整性和业务规则

参照完整性约束基于一个或多个业务规则。从业务规则到参照完整性(Reference Integrity 简称 RI)约束是一个手工过程,业务规则直接定义约束。下表举例说明了业务规则与参照完整性的关系(表 9.5)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 159: Power Designer数据库建模技术

·146· PowerDesigner 数据库建模技术

表 9.4

值 操作 对父表的改变 子表中的结果

None 不做任何操作 父表中的参照值(主键)能够修改或删除 没有任何改变

Restrict 修改或删除

如果在子表中有一个或多个匹配的子记录存在时,在父表中

的参照值(主键)不能被修改或

删除

没有任何改变

Cascade 修改或删除 在父表中的参照值(主键)能够被修改或删除

修改或删除了子表中的参照值(外键)

Set null 删除 在父表中的参照值(主键)能够被删除

设置子表中的参照值(外键)为 Null

Set default 删除 在父表中的参照值(主键)能够被删除

设置子表中的参照值(外键)为缺省值,这个缺省值是在列

上指定的

表 9.5

业 务 规 则 参照完整性

如果图书馆中有一册或多册书的复本时,书的信息一定不能删除 Delete constraint Restrict

当一个行政管理助手终止在图书馆的工作时,对由这个助手领导的所有专业人员的行政助手职工 ID号,设置为空

Set null

当一个图书管理员或知识专家终止了在图书馆的雇佣关系时,他的雇员 ID号保留在专业人员登记簿中

None

从业务规则到参照完整性约束是一个手工过程,下面的练习中将作进一步的说明。

实验 9-2(指导实验) 定义参照完整性

描述 跟随指导操作,为列定义参照完整性,使用如下的规则: 把所有表中终止了雇佣关系的职工 ID号设置为:9999。

步骤 要定义参照完整性,需进行如下操作: 1.选择 File → Physical Model → Open,然后选择 PUBS2INT.PDM,在 PDM工作区中,打开 PUBS2INT模型(图 9-16)。

2.双击 Store/Employee 参照完整性联系线,打开“Reference Properties”对话框(图9-17)。

3.单击“Integrity”按钮,打开“Referential Integrity”对话框(图 9-18)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 160: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·147·

图 9-16

图 9-17

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 161: Power Designer数据库建模技术

·148· PowerDesigner 数据库建模技术

图 9-18

4.接受缺省的 Constraint name。 5.选择“Update constraint”组中的“Cascade”单选按钮;选择“Delete constraint”组中的“Cascade”单选按钮。

6.选择“Mandatory parent”,该选项意味着子表中的每一行,在父表中必须有一个对应的行。

7.选择“Change parent allowed”,该选项意味着子表中的外键值能够改变成父表中的另一个主键值。

8.单击“OK”。 9.为 Employee/Sales_Person_Store重复步骤 1~8。 10.为 Employee/Order重复步骤 1~8。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 162: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·149·

9.3 视图

数据的可用性、性能、安全性能够通过下列方法来实现: l 视图; l 候选关键字列; l 索引。

9.3.1 쫓춼뗄뚨틥벰닺짺

视图是在一个或多个表中观察数据的方法。它由一个或多个表中的一组列组成。 视图中并不包含数据,它只包含一个用 SQL数据操纵语言(DML)写成的查询,这些

SQL 语句从基础表产生的逻辑表中组合数据。视图每次组合所需的数据都要调用基础表。一旦定义了一个视图,这个视图就成为数据库中永久的组成部分,直到数据库删除。

视图改善了数据的可用性,它为需要通过复杂 SQL查询访问数据的用户提供了简单易用的方法。视图通过实施复杂访问限制,改善了数据的安全性。

有两种方法产生视图: l 在 PDM中,为选择的表产生视图; l 产生空视图,然后从列表中选择表。

注 意: 缺省情况下,视图对象的图形符号显示在模型中。要隐藏视图对象的图形符

号可选择 Dictionary→Views→List of views,打开视图列表(List of views)

窗口,从视图列表(List of views)中,去掉显示(Display)检查框,则

该视图对象从模型中消失。

实验 9-3(指导实验) 在 PDM中为选择的表产生视图

描述

跟随指导操作,使用下面的业务规则产生视图。 PUBS2INT.PDM 模型中,要求职工的电话号码视图中包含:职工的姓名、书店的电话号

码、书店所在城市。

步骤 1.UBS2INT.PDM(图 9-19)中,选择产生视图所需的对象——职工(Employee)和书店(Store)表。

2.Dictionary → View → ew。DataArchitect 从选择的对象上产生一个视图对象(图 9-20)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 163: Power Designer数据库建模技术

·150· PowerDesigner 数据库建模技术

图 9-19

图 9-20

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 164: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·151·

3.双击视图对象符号,定义视图的特性并修改视图的内容,打开“View Properties”窗口(图 9-21)。

图 9-21

4.在“View Properties”窗口键入表 9.6中的数据:

表 9.6

特 性 值 描 述

Name Phone List 视图的名称,最大为 80个字符

Code Phone_List 视图的参考名称,这个代码使用在数据库生成脚本中

Label 职工的电话号码视图 对视图的描述,最大为 254个字符

Query only 不选择 只是为了查询定义视图,不能通过这个视图修改表

Updatable 单击“Updatable”单选按钮

为查询和修改定义视图,这个视图既能用于查询,也能用于对表进行修改

Generate view 选择这个检查框 数据库生成脚本中包含视图生成语句

With check option 选择这个检查框 在视图中插入记录进行控制

User-defined SQL 不选择 使用用户定义的 SQL 查询代替标准的SQL查询

5.通过下列方法修改视图: (1) 单击“Query”按钮。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 165: Power Designer数据库建模技术

·152· PowerDesigner 数据库建模技术

(2) 单击“Column”页。 (3) 通过操作使 Column/Expresion框中包含 Employee表的 emplname、empfname

列和 Store表中的 phone、city列。 6.单击“OK”,返回到“View Properties”窗口。 7.单击“OK”,返回到 PDM工作区。

练习 在这个练习中,先产生一个空视图,然后再选择表。 1.选择 Dictionary → Views → New,打开“Choose the Table and References of the

Query”窗口。 2.从“Available objects”的下拉列表框中选择“Table”,再选择视图中包含的表(按下 Shift键,单击要选择的表,可选择多个表),然后单击“Add”按钮。

3.从“Available objects”下拉列表框中,选择“Reference”。 4.从列表框中选择相应的参照完整性,然后单击“Add”按钮。 5.单击“OK”,一个视图的图形符号显示在模型中。 6.双击视图符号,打开“View Properties”窗口。 7.为视图键入 Name和 Code,然后单击“OK”。

9.3.2 닩톯쫓춼

SQL查询

在“View Properties”窗口,选择一个编写 SQL查询语句的界面。

Query按钮

在“View Properties”窗口,单击“Query”按钮,打开“Query Difinition”窗口,在这个界面上,通过“指指点点”可以产生和修改 SQL查询语句。

SQL按钮

在“View Properties”窗口,单击“SQL”按钮,打开“SQL Query Editor”窗口,在这个窗口上可以直接编辑 SQL查询语句。

验证一个查询

能够在“Query Difinition”窗口验证一个查询语句,DataArchitect使用 ODBC驱动验证视图的查询是否正确。

验证查询的步骤

1.在 PDM中首先连接到包含表的数据库上。 2.在“Query Definition”窗口,单击“Verify SQL Syntax”(一个翘起的大拇指图标)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 166: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·153·

3.如果查询是正确的,出现下面的信息: The SQL syntax for this query is correct.

4.如果查询语句中有错误,目标 RDBMS返回错误信息。不同的数据库管理系统可能会有不同的错误信息。要了解错误信息,请查阅相应数据库管理系统的资料。

9.4 候选关键字

候选关键字是由一个或多个列组成的,它们的每组值与一条并且只有一条表中的记录

相对应。 候选关键字具有充当主键的资格,只是没有被选做主键。它为数据访问提供了方便,

调整了数据的可用性。候选关键字一般是用户更熟悉的字段。例如,人们熟悉“身份证号”,

而不熟悉“职工 ID”,候选关键字通过对用户隐藏主键值来调整数据的安全性。 候选关键字也可以是外键,但它不能是主键。 指定一个列为候选关键字的步骤如下: 1.在 PDM中,双击表的图形符号,打开“Table Properties”窗口。 2.单击“Alt Keys”按钮,打开“Alternative Keys”窗口。 3.为候选关键字键入 Name和 Code。 4.单击“Add”按钮,打开“List of columns”框。 5.双击要作为关键字的列,把这个列指定为候选关键字。 6.如果需要,可改变 Constraint name,可应用业务规则,也可添加注释、描述、选

项等。 7.单击“OK”,返回“Table Properties”窗口。

实验 9-4 (指导实验) 指定候选关键字

描述 跟随指导操作,指定候选关键字,使用下面的规则: 每种书的书名是唯一的,人们通过辨别书名确定一本书,而不是通过辨别书的 ID号来

确定一本书。

步骤 1.在 PUBS2INT.PDM中,用鼠标右键单击 Title表,从弹出菜单中选择“Properties”,打开“Table Properties”窗口(图 9-22)。

2.单击“Alt keys”按钮,打开“Alternate Keys of Table:Title”窗口(图 9-23)。 3.为候选关键字键入 Name和 Code。 4.单击“Add”按钮,显示“List of Columns”窗口(图 9-24)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 167: Power Designer数据库建模技术

·154· PowerDesigner 数据库建模技术

5.双击“Title Text”列,把 Title Text列指定为候选关键字(图 9-25)。

图 9-22

图 9-23

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 168: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·155·

图 9-24

图 9-25

6.如果需要,可以键入如下几个为文档和报告而设置的选项: l 标签(Label) l 约束名(Constraint name) l 描述(Description) l 注释(Annotation) l 规则(Rule) l 选项(Option)

7.单击“OK”,返回到“Table Properties”窗口。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 169: Power Designer数据库建模技术

·156· PowerDesigner 数据库建模技术

9.5 索引

索引是一个与表有关的数据结构,它是通过索引列进行逻辑排序的。索引能够调整模

型的可用性,改进系统的性能,消除查找到记录之前在表中的多次扫描。索引的存在减慢

了数据的修改(插入、修改、删除)速度。 DataArchitect定义了一个索引对象,这个索引对象是根据索引的类型、代码、索引列以

及索引列的排列顺序确定的。

索引的类型

DataArchitect支持四种索引类型,如表 9.7所示:

表 9.7

索引类型 描 述

主键索引(Primary Key) 主键列构成索引列

外键索引(Foreign Key) 外键列构成索引列

唯一性索引(Unique) 索引一个列或联合的列,在表的这些列中没有两个值是完全相同的

聚簇索引(Clustered) 索引列的物理顺序和逻辑顺序(索引后的顺序)是完全相同的

索引特性

每个索引包括如下特性(表 9.8):

表 9.8

特 性 描 述 最大长度

Name 索引的名称 80

Code 索引的参照名 80

Label 索引描述性的标签 254

Index Type 表示一个索引是否是主键索引、外键索引、候选关键字索引、唯一性索引、聚簇索引 无

Table 索引的表 无

Column 索引的列 无

Sort Order 记录的排列方式(升序或降序) 无

Type 索引类型的所有者(只适用于 RedBrick, unify, oracle 数据库管理系统) 无

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 170: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·157·

实验 9-5(指导实验) 产生索引

描述

跟随指导操作,使用下面的规则产生索引。 作者数据常常通过 Last name字段访问。

步骤 1.在 PUBS2INT.PDM中,双击 Author表;或者单击工具选项板上的“Properties”工 具,并在模型中单击 Author表,打开“Table Properties”对话框(图 9-26)。

图 9-26

2.单击“Indexes”按钮,打开“Indexes of the Table:AUTHOR”对话框(图 9-27)

图 9-27

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 171: Power Designer数据库建模技术

·158· PowerDesigner 数据库建模技术

3.在“List of indexes”中单击空行或单击“Insert”按钮,在行的开始出现一个箭头。 4.键入 Lname_indx作为索引的名称和代码(图 9-28)。也可以先键入一个名称,然后在 Code列中单击等号(=)按钮;或者先在 Code框中键入代码,然后在 Name列中单击等号(=)按钮。

图 9-28

5.不要选择:Primary key、Foreign key、Alternate key、Unique、Cluster检查框。

注 意: 如果选择了 Primary key检查框,Unique检查框自动被选中。

6.单击“Add”按钮,打开当前表的“List of Columns”对话框(图 9-29)。 7.选择“Author Last Name”列为索引列。

图 9-29

8.单击“OK”返回“Indexes of the Table:AUTHOR”窗口,选择的列在“List of columns ”

组框中出现(图 9-30)。 9.选择表示排列顺序的升序的“Ascending”单选按钮。 10.单击“OK”按钮,完成索引定义。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 172: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·159·

图 9-30

实验 9-6(指导实验) 为候选关键字定义索引

描述 跟随指导操作,为以前产生的候选关键字定义索引。

步骤 1.在 PUBS2INT.PDM中,双击 Title表,或者在模型中单击工具选项板上的 Properties工具,再单击 Title表,打开“Table Properties”窗口。

2.在“Table Properties”窗口,单击“Indexes”按钮,打开 TITEL表的“Indexes of the Table:TITLE”窗口(图 9-31)。

图 9-31

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 173: Power Designer数据库建模技术

·160· PowerDesigner 数据库建模技术

3.单击“Insert”按钮,为候选关键字定义一个索引。 4.在 Name和 Code中输入:TITLE_ALT_INDX,如图 9-32所示。

图 9-32

5.单击“Add”按钮,选择与索引有关的列,打开“List of Columns”对话框(图 9-33)。

图 9-33

6.单击“Title Text”列。 7.单击“OK”后,该列名出现在“List of columns”组框中(图 9-34)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 174: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·161·

图 9-34

8.需要时可填写如下内容: l 标签(Label) l 描述(Description) l 注释(Annotation) l 业务规则(Rule) l 选项(Option) l 排列顺序(Sort)

9.单击“OK”,返回到“Table Properties”窗口。

9.5.1 듓쯷틽훐즾돽튻쇐

从索引中删除一列的步骤如下: 1.在“Indexes of the Table”窗口,从“List of indexes”中选择索引。 2.从“List of columns”组框中,选择要删除的列。 3.单击“List of columns”组框下面的“Delete”按钮。 4.单击“OK”,返回到“Table Properties”窗口。

9.5.2 즾돽쯷틽

能够使用两种方法删除索引: l 从表中删除索引。 l 从索引列表中删除索引。

从表中删除索引

从表中删除索引的步骤如下: 1.在“Indexes of the Table”对话框中,选择要删除的索引。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 175: Power Designer数据库建模技术

·162· PowerDesigner 数据库建模技术

2.单击“List of columns”组框中的“Delete”按钮。 3.单击“OK”,返回到“Table Properties”窗口。

从索引列表中删除索引

从索引列表中删除索引的步骤如下: 1.在“Indexes of the Table”对话框中,选择要删除的索引。 2.单击“List of Indexes”组框中的“Delete”按钮。 3.单击“OK”,返回到模型工作区。

实验 9-7 调整物理数据模型

描述

在这个实验中,将按顺序完成以下工作: l 定义一个有效性规则; l 定义参照完整性; l 产生视图; l 定义候选关键字; l 产生索引。

9.5.3 뚨틥튻룶폐킧탔맦퓲

在 Library.PDM模型中使用下面的业务规则,在一个列上定义一个有效性规则。 书出版日期必须早于或等于当前日期。 首先定义一个业务规则(注意:这个规则也可在 CDM中定义),然后把这个规则应用

到列上,最后定义服务器端有效性规则,完成这个业务规则的功能。 定义有效性规则的步骤如下: 1.如果没有在 CDM中定义上述业务规则,则可以从“List of Business Rules”窗口中产生并定义这个业务规则。

2.打开“List of Columns”对话框,选择这个列。 3.单击“Check”按钮,打开列的“Check Parameters”对话框。 4.在“Constraint name”中键入约束的名称。 5.在“Check Parameters”窗口,单击“Rules”按钮。 6.单击“Add”按钮,打开“List of Business Rules”列表。 7.选择应用到有效性规则上的业务规则,单击“OK” 按钮。 8.选择“Client expression”或“Server expression”单选按钮。 9.单击“Zoom”按钮,使用 SQL查询编辑器窗口构造有效性规则(也可以在单选按钮下的文本框中键入客户端表达式、服务器端表达式,还可以为这个规则填写注释

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 176: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·163·

等)。 10.单击“OK”按钮,结束有效性规则的定义。

9.5.4 뚨틥닎헕췪헻탔

使用下面的规则定义参照完整性: 当一个管理员终止了在图书馆的工作关系时,把他管理的所有专业人员的管理员 ID号

设置为空。 定义参照完整性的步骤如下: 1.随模型打开 PDM工作区,双击带箭头的联系线,打开“Reference Properties”窗口。 2.单击“Integrity”按钮,打开“Referential Integrity”对话框。 3.键入“Constraint name”,也可接受缺省名称。 4.为“Update”和“Delete”约束选择所需的选项。 5.如果允许改变子实体的父体,则选择“Change Parent Allowed”检查框。 6.单击“OK”按钮。

9.5.5 닺짺쫓춼

使用下面定义型业务规则产生一个视图: 这个视图能够给出作者的姓名、书的 ISBN号、出版日期、图书馆号、出版社名称以及

出版社所在城市。

节省时间的方法

为了节省建立视图的时间,首先选择构造视图所需的表,然后执行下列步骤: 1.选择产生视图所需的表。 2.选择 Dictionary → Views → New。DataArchitect从选择的表中产生一个视图对象。 3.双击这个视图对象的图形符号,定义视图的特性并修改视图的内容。 4.在“View Properties”窗口的“Definition”页上,为视图键入名称(Name)、代码(Code)、标签(Label)等。 5.选择编写 SQL数据操纵语言(DML)的友好界面: (1) 单击“Query”按钮,打开“Query Definition of the View”窗口,在这个窗口,

通过鼠标的“指指点点”可以定义并检查视图的正确性。 (2) 单击“SQL”按钮,进入“SQL Query Editor”窗口,利用 SQL查询编辑器可

以直接输入 SQL语句。 6.使用上述两种方法修改视图,使其符合要求(例如删除不需要的字段)。 7.单击“OK”,返回到“View Properties”窗口。 8.单击“OK”,返回到 PDM工作区。

9.5.6 뚨틥뫲톡맘볼ퟖ

跟随指导操作,使用下面的事实型业务规则,把一个列定义为候选关键字。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 177: Power Designer数据库建模技术

·164· PowerDesigner 数据库建模技术

职工的社会保险号必须是唯一的。

步骤 1.打开 EMPLOYEE实体的“Table Properties”窗口。 2单击“Alt Keys”按钮,打开“Alternate Keys of Table:EMPLOYEE”窗口。 3.为候选关键字键入 Name和 Code。 4.单击“Add”按钮,打开 EMPLOYEE表的“List of Columns”对话框。 5.双击要作为候选关键字的列,把它指定为候选关键字。 6.(可选项)可为候选关键字键入约束名(Constraint name)。 7.单击“OK”,返回到“Table Properties”窗口。 8.单击“Indexes”按钮,打开“Indexes of the Table:EMPLOYEE”对话框。 9.为候选关键字列定义索引。 10.单击“OK”,返回到“Title Properties”窗口。

9.5.7 닺짺쯷틽

使用下面的规则产生索引: 书的信息常常通过书名来检索,而不是通过 ISBN号来检索。

在 DataArchitect中,可以从“Table Properties”窗口产生索引,也可以通过“Dictionary→List of Indexes”菜单产生索引。

在表上增加索引的步骤如下: 1.打开“Table Properties”窗口。 2.单击“Indexes”按钮,打开“Indexes of the Table”窗口。 3.单击“Insert”按钮。 4.为索引键入 Name和 Code等。 5.单击“Add”按钮,打开当前表的“List of columns”窗口。 6.在“List of columns”窗口,单击要作为索引的列。若要选择多个列,按下 SHIFT键(相邻的列)或按下 CTRL键(不相邻的列),依次单击作为索引的列。

7.单击“OK”,返回到“Indexes of the Table”对话框。 8.选择升序(Ascending)或降序(Descending)单选按钮,这个选项决定了表中记录的排列顺序。

9.选择合适的索引类型。 10.单击“OK”,直到返回 PDM工作区。 在索引列表中增加索引的步骤如下: 1.选择 Dictionary→List of Indexes,打开“List of Indexes”对话框。 2.单击“New”按钮。 3.为索引键入 Name和 Code等。 4.单击 table列中的省略号(…)按钮,打开“List of Tables”窗口。 5.为索引选择一个表。 6.单击“OK”,返回到“List of Indexes”窗口。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 178: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·165·

7.单击“Define”按钮,打开“Indexes of the Table”窗口。 8.单击“Add”按钮,打开当前表的“List of Cloumns”窗口。 9.选择一列或多列作为索引列。 10.单击“OK”,返回到“Indexes of the Table”对话框。 11.选择升序(Ascending)或降序(Descending)单选按钮。 12.选择索引类型。 13.单击“OK”,返回到“List of Indexes”对话框。

9.6 带数据修改表结构

在MIS系统开发过程中,常常把生成的快速原型系统交付用户去使用。在用户使用时,各种需求分析时的错误将逐渐暴露出来,这就需要对物理模型进行修改,如增加和减少表

的列、修改列的数据类型等,但此时旧表中已经输入了许多数据。使用 DataArchitect 可以实现带数据修改表的结构。

带数据修改表结构的原理如图 9-35所示:

图 9-35

具体步骤如下: 1.先观察一下表 PERSON的定义:

create table PERSON

(

SERIAL_NUMBER int not null,

PERSON_ID char(10) not null,

NAME char(8) not null,

PERSON_HIRE_DATE date not null,

PERSON_PHONE char(20) ,

带 数 据 的 表

(PERSON)

按新结构产生临时

表(tmp_PERSON) 把 (PERSON)表中

的 数 据 插 入 到

(tmp_PERSON)中

Drop( PERSON)表

以修改后的结构

建立(PERSON)

把 Tmp_PERSON

表中的数据插入

新建的 PERSON

表中

Drop

tmp_PERSON表

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 179: Power Designer数据库建模技术

·166· PowerDesigner 数据库建模技术

PERSON_STATUS char(1) not null,

PERSON_TYPE char(2) ,

primary key (SERIAL_NUMBER)

);

新结构中删除 PERSON_STATUS 列,再把主键 SERIAL_NUMBER 的数据类型改为varchar(10)。

注 意: 在 DataArchitect 中应先把修改前的模型进行档案化,然后再修改表结构,

修改表结构后不要对模型进行档案化,待数据库的表结构修改成功后,再次

把修改后的模型档案化。如果不按上述步骤进行,将不会得到预期的结果。

2.把当前的 PDM 模型档案化,即选择 Database→Archive Model,把文件保存为c:\example\Person.apm

3.修改表结构。 4.选择 Database→Modify Database,打开如图 9-36 所示窗口。在该窗口的“Archive

model”框中输入存档的文件名 c:\example\Person.apm。选择Modify table、Primary key等检查框。

图 9-36

5.单击“Generate script”按钮,生成修改表结构的 SQL文本: if exists (select 1

from sysobjects

where id = object_id('tmp_PERSON')

and type = 'U')

drop table tmp_PERSON

go

create table tmp_PERSON

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 180: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·167·

(

SERIAL_NUMBER int(4) not null,

PERSON_ID char(10) not null,

NAME char(8) not null,

PERSON_HIRE_DATE timestamp not null,

PERSON_PHONE char(20) null ,

PERSON_STATUS char(1) null ,

PERSON_TYPE char(2) null

)

go

insert into tmp_PERSON (SERIAL_NUMBER, PERSON_ID, NAME, PERSON_HIRE_DATE,

PERSON_PHONE,

PERSON_STATUS, PERSON_TYPE)

select SERIAL_NUMBER, PERSON_ID, NAME, PERSON_HIRE_DATE, PERSON_PHONE,

PERSON_STATUS, PERSON_TYPE

from PERSON

go

if exists (select 1

from sysobjects

where id = object_id('PERSON')

and type = 'U')

drop table PERSON

go

create table PERSON

(

SERIAL_NUMBER varchar(10) not null,

PERSON_ID char(10) not null,

NAME char(8) not null,

PERSON_HIRE_DATE timestamp not null,

PERSON_PHONE char(20) null ,

PERSON_TYPE char(2) null ,

constraint PERSON primary key (SERIAL_NUMBER)

)

go

insert into PERSON (SERIAL_NUMBER, PERSON_ID, NAME, PERSON_HIRE_DATE,

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 181: Power Designer数据库建模技术

·168· PowerDesigner 数据库建模技术

PERSON_PHONE, PERSON_TYPE)

select SERIAL_NUMBER, PERSON_ID, NAME, PERSON_HIRE_DATE, PERSON_PHONE,

PERSON_TYPE

from tmp_PERSON

go

if exists (select 1

from sysobjects

where id = object_id('tmp_PERSON')

and type = 'U')

drop table tmp_PERSON

go

commit

go

6.单击“Modify database”按钮,生成 SQL语句后与数据库相连,直接执行 SQL语句对数据库进行带数据的修改。

数据库中的数据非常宝贵,所以建议在带数据修改表结构时应该首先使用“Generate script”按钮生成 SQL文本,然后仔细阅读生成的 SQL语句,当确定 SQL语句没有错误,且完全符合要求时才直接改变实际的表结构,这样可以在一定程度上防止数据丢失。

9.7 生成测试数据的方法

在 MIS 系统的开发过程中,经常希望为数据库表生成一些随机的测试数据,DataArchitect为我们提供了生成测试数据的一种快捷方法。

生成测试数据的方法如下: 1.选择 Dictionary→Profiles→List of Profiles,打开“List of Profiles”窗口(图 9-37)。

图 9-37

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 182: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·169·

1.单击“New”按钮,在 Name、Code 列中键入这个 Profile 文件的名称和代码,在Class列中选择一种类型:Number、Character或 Date/Time。

2.按照步骤 2,建立三个 Profile文件,如图 9-38所示:

图 9-38

4.选择 Database→Generate Test Data,打开“Test Data Generation”窗口(图 9-39)。

图 9-39

5.在“Parameters”页的 Tables组框中选择生成测试数据的表。选择“Delete old data”检查框表示在生成测试数据前,删除表中的数据。在“Default number of rows”框中输入要生成测试数据的记录数;在“Default number profile”框中选择刚才建立的“数字”Profile文件;在“Default character profile”框中选择“字符”Profile文件;

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 183: Power Designer数据库建模技术

·170· PowerDesigner 数据库建模技术

在“Default date profile”框中选择“日期和时间”Profile文件。在“Number of rows”和“Options”页中选择合适的选项。

6.单击“Create Test Data”按钮,开始生成测试数据,并显示生成过程信息窗口(图9-40)。

图 9-40

7.单击“OK”按钮,完成测试数据的生成过程。

9.8 DataArchitect与客户端开发工具的接口

DataArchitect与客户端开发工具的接口是指下面的内容: l 使用扩展属性; l 视图自动生成查询。

9.8.1 쪹폃삩햹쫴탔

在实际开发中,常常希望不要做重复性的工作,比如:在 DataArchitect 中每个实体的属性都有中文名字,所以希望在客户端利用已经输入的这些中文名称,该功能可以利用扩

展属性功能来实现。 下面利用 DataArchitect 缺省定义的扩展属性来说明如何把这些中文名字应用到客户端

(如:PowerBuilder)上。具体操作方法如下: 1.选择 Dictionary→ Extended Attributes→ Import Attributes,如果客户端使用

PowerBuilder 4.0版本,就选择文件 Powerbld.exa;如果使用的是 PowerBuilder 5.0版本,就选择 Powerpfc.exa,这样就读入了系统缺省的扩展属性。如果使用的是其它种类的客户端开发工具,就选择相应的 exa文件。

2.选择 Dictionary→Extended Attributes→List of attributes,打开“Extended Attribute Definition”窗口(图 9-41),该窗口中列出了所有系统缺省的扩展属性。选中PB_Header项,可以看到这个扩展属性的值是%Column Name%,它表示用列的名称

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 184: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·171·

作为数据窗口中列的中文名字。

图 9-41

3.选择 Client→PowerBuilder Attribute Generation,打开“DataWindow Attribute Generation”窗口(图 9-42)。选择“Generation options”组框中的生成选项,单击“OK”按钮,开始生成扩展属性。实际上在生成扩展属性时,DataArchitect向数据库中 PowerBuilder的系统表中插入数据(系统表是 PowerBuilder与数据库连接后建立的)。所以当选择“OK”后,DataArchitect就弹出 ODBC的窗口,从中选择一个数据源,数据将插入到所选的数据源中。

图 9-42

4.然后在 PowerBuilder的数据窗口就可以看到列的中文名字了。 在 DataArchitect中先定义一个列的有效性规则,然后再生成到 PowerBuilder的系统表

中,当进入 PowerBuilder后,就可以看到这个列的有效性规则了。

9.8.2 쫓춼폫 PowerBuilder Query

在物理数据模型中设计的视图有两种处理方法: l 可以在数据库中生成视图。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 185: Power Designer数据库建模技术

·172· PowerDesigner 数据库建模技术

l 可以不在数据库中生成视图,而是转化为客户端的 PowerBuilder Query对象 要在数据库中生成视图,可在数据库生成选项窗口选择相应的视图后,单击“Generate

Database”按钮。这项工作比较容易完成。 下面主要介绍如何把视图转化为 PowerBuilder Query对象: 1.选择 Client→PowerBuilder Query Generation。 2.在打开的窗口中选择将要存放这个 Query的 pbl名称。 3.选择 List后面的“?”按钮,可以选择所生成的视图。 4.单击“OK”,如果成功,就会得到下面的信息:PowerBuilder Query has been succesfully

generate。

킡 뷡

l 从 CDM 生成 PDM 后需要调整物理数据模型,也需要改进数据库的可用性、性能和

安全性。

l 数据的完整性和一致性是通过表的约束、列的约束、参照完整性约束实现的。

l DataArchitect使用两种类型的检查约束定义表和列的约束,即标准约束和有效性

规则约束。

♦ 标准约束是对一般数据的控制,通常是在概念级定义的。

♦ 有效性规则是根据一定要求制定的数据控制规则,它是在物理级。DataArchitect支持服务器端有效性和客户端有效性两种类型的定义。

l 参照完整性(RI)强迫实体服从主外键之间的约束。

l DataArchitect支持视图、候选关键字以及索引的定义,以此调整数据库的可用性、

性能和安全性。DataArchitect支持五种类型的索引定义,即主键索引、外键索引、

候选关键字索引、唯一性索引、聚簇索引。

l 可以带数据修改表结构。已投入运行的管理信息系统,经常需要修改分析设计时

不合理的表结构,如增加和减少表的列、修改列的数据类型等,但此时旧表中已

经输入了许多数据。使用 DataArchitect可以实现带数据修改表的结构。

l 在 DataArchitect 中应先把修改前的模型进行档案化,然后再修改表结构,修改

表结构后不要对模型进行档案化,待数据库的表结构修改成功后,再次把修改后

的模型档案化。如果不按上述步骤进行,将不会得到预期的结果。

l DataArchitect提供了一种快捷的生成测试数据的方法。

l 利用 DataArchitect 的扩展属性功能,完成客户端扩展属性的定义。使用扩展属

性能够缩短客户端应用程序的开发时间,保证数据模型中的中文名称应用到数据

库表中,这一功能通常是借助于客户端工具在数据库中的系统表完成的,如:

PowerBuilder安装后将在数据库系统中生成有关扩展属性的 5个 PB系统表。

l 物理数据模型中的视图有两种处理方法:可以在数据库中生成视图,也可以不在

数据库中生成视图,而是直接转化为客户端的 Query对象。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 186: Power Designer数据库建模技术

第 9章 高速物理数据模型 ·173·

쮼 뾼 쳢

1.说明从 CDM生成 PDM后,调整 PDM的两个原因。 2.在 DataArchitect环境下,为什么常常定义表和列的约束。 3.解释标准约束和有效性规则约束之间的不同。 4.说明 DataArchitect支持的五种索引类型,并对它们进行描述。 5.检查 PDM模型的过程包括哪些工作? 6.如何带数据修改表结构?带数据修改表结构时应注意什么问题? 7.如何利用 DataArchitect的扩展属性功能,完成客户端扩展属性的定义? 8.如何生成测试数据?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 187: Power Designer数据库建模技术

本章详细介绍了触发器、存储过程和函数的建立方法,对建立过程中的概

念作了详细的说明。学完本章后,能够达到如下目的:

l 能够定义存储过程,了解存储过程的功能;

l 解释触发器模板、触发器及触发器脚本三者的不同;

l 解释模板项,并说明它的用途;

l 解释宏,并说明宏的用途;

l 举例说明变量的类型;

l 描述为触发器和存储过程生成 SQL脚本的两种方法;

l 使用 SQL Query Editor编辑 SQL语句。

10.1 触发器(Trigger)

当对一个表执行特定的操作时,被调用或者被“触发”的 SQL语句称为触发器。触发器能够依次调用 SQL语句或者存储过程。能够使用 DataArchitect在物理数据模型中定义触发器。

触发器是事件驱动的 SQL代码,当插入、删除、修改指定的表和列中的数据时,这些代码将自动执行,因此触发器总是与特定的数据库表及特定的数据库事件(如插入(Insert)、删除(Delete)、修改(Update)等)相联系。 触发器的优点

触发器不依赖于任何客户端应用程序,也不依赖于访问数据库的语言。触发器有如下

优点: l 标准化。在整个应用上,触发器保证了数据的完整性和一致性。一旦在表上建立

了触发器,它就存储在数据库中。这种方法消除了各个客户应用程序的冗余编码,

便于规则发生变化时对编码进行修改。 l 高效率。触发器初始执行后,作为编译的代码执行。它的运行速度快,与在客户

工作站上执行这些代码相比,在服务器上执行这些代码减少了网络通讯量和网络

冲突。触发器把数据完整性代码放在服务器平台上,比放在客户工作站上更有效。

第 10章

触发器、存储过程和函数

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 188: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·175·

l 安全性。触发器运行要有表主人的授权,但是,触发器能够被在表中插入、删除、

修改记录的任何一个用户触发。任何一个应用程序或交互式子用户都无法避开触

发器。 触发器的功能

触发器对于强制执行的工作是非常有用的,它主要用于下面两种情况: l 保证数据的完整性和一致性规则太复杂,不能用数据定义语言(DDL)定义它们, 这时使用触发器非常有效。

l 实现数据之间逻辑联系的业务规则。 例如:在职工表中插入一个新的职工记录时,业务规则要求职工的工作终止日期字段是

一个空值。这个规则不能使用数据定义语言中 CREATE TABLE 语句定义。它需要一个触 发器。

对于不能由其它手段实现的规则可考虑使用触发器,以此改善系统的效率。如:参照

完整性、表或列的约束等。 触发器的类型

触发器是根据所触发事件的类型进行分类的。通常的 RDBMS支持三种类型的触发器: l 插入触发器(Insert trigger),在表中企图插入记录时触发。 l 删除触发器(Delete trigger),在表中企图删除记录时触发。 l 修改触发器(Update trigger),在表中企图修改记录时触发。

PowerDesigner的触发器

在 PowerDesigner中,所有的触发器有如下共同特征: l 可以生成触发器模板。 l 可以根据业务规则产生触发器,这些触发器称为定制触发器(Customized triggers)。 l 系统缺省触发器,这些触发器不能根据业务规则产生。

触发器列表

PowerDesigner提供了一个缺省触发器列表。这些缺省触发器能够由选择的 RDBMS自动建立。例如 Sybase SQL Anywhere的触发器类型如图 10-1所示。 触发器术语

触发器的有关术语介绍如下(表 10.1): 能够根据业务规则修改和制作触发器模板、模板项和触发器,也能够把触发器模板的

改变应用到当前模型或全局模型上,还能够把触发器的改变应用到当前模型的特定表上。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 189: Power Designer数据库建模技术

·176· PowerDesigner 数据库建模技术

图 10-1 表 10.1

术 语 描 述

触发器模板(Trigger template) 触发器模板是生成触发器脚本的通用模型

模板项(Trigger item) 可以重复使用的、实现参照完整性的脚本块

触发器(Trigger) 当对表进行操作时可以自动执行的一段 SQL语句代码

触发器脚本(Trigger script) 包含表特定信息的、可执行的 SQL脚本

实验 10-1(指导实验) 产生缺省触发器

描述 在本实验中,跟随指导操作,可为定单(Order)表产生一个缺省触发器,即“BeforeUpdate

Trigger”。 步骤

1. 打开 PUBS2INT.PDM。 2. 选择 Dictionary →Triggers and Procedures → List of Triggers。 3. 打开“List of Triggers”对话框(图 10-2)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 190: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·177·

图 10-2

4. 从下拉列表框中选择“ORDER”表(图 10-3)。

图 10-3

5. 首先选择“BeforeUpdateTrigger”,再选择“User-defined”检查框(图 10-4)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 191: Power Designer数据库建模技术

·178· PowerDesigner 数据库建模技术

图 10-4

实验 10-2(指导实验) 产生定制触发器

描述 在本实验中,按照指导可为职工(Employee)表产生一个定制触发器。

步骤 执行下列步骤,可为职工(Employee)表产生定制触发器——“AfterUpdateTrigger”。 1. 打开“List of Triggers”对话框(图 10-5),在下拉列表框中选择职工(Employee)表。

2. 单击行号为 4 的触发器——“AfterUpdateTrigger”(注意:不同的 RDBMS,其触发器的类型不同)。

3. 单击“Zoom”按钮。 可以使用下面的窗口(图 10-6)修改触发器的 SQL语句。

4. 注意分类(Category)、对应分类对象名和描述(Description)列表框。在“Category” 列表框中选择一个分类,则在相邻的列表框中显示该分类的对象,选择该分类的

对象,则在“Description”列表框中显示该对象的叙述性描述。能够使用编辑环境在触发器中插入 SQL脚本语言。其方法如下: (1)在触发器定义文本框中,单击想修改的脚本处。 (2)选择分类(Category)列表框中的合适分类,再选择需要的对象。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 192: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·179·

(3)单击“Add”按钮。

图 10-5

图 10-6

5. 增加触发器的名称,在触发器名称的前面键入“%%”表示注释。 6. 单击“Preview”按钮可查看触发器脚本。 7. 单击“OK”按钮,返回到“List of Triggers”窗口(注意:用户定义(User-defined)和生成(Generate)检查框自动被选择(图 10-7))。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 193: Power Designer数据库建模技术

·180· PowerDesigner 数据库建模技术

图 10-7

8. 单击“OK”按钮,保存定制触发器。

10.2 生成 SQL脚本

触发器、存储过程的 SQL脚本是一个独立于数据库生成过程的脚本。触发器、存储过程由特殊的生成参数和选项控制。

10.2.1 뒥랢웷폫듦뒢맽돌짺돉닎쫽뗄짨훃

设置触发器与存储过程生成参数的步骤如下: 1. 选择 Database→Generate Trigger and Procedure,打开触发器、存储过程生成参数窗口(图 10-8)。

2. 单击“Options”页,选择触发器生成选项。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 194: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·181·

图 10-8

10.2.2 짺돉톡쿮

DataArchitect为触发器、存储过程、函数提供了生成脚本的选项,包括: l 通用选项(General组框中的选项); l 参照完整性选项(Referential integrity组框中的选项)。 选择 Database→Generate Options,或从生成参数对话框中单击“Options”页,打开

“Generation Options”窗口(图 10-9)。

图 10-9

生成脚本选项

生成脚本各选项介绍如下(表 10.2):

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 195: Power Designer数据库建模技术

·182· PowerDesigner 数据库建模技术

表 10.2

选 项 选择的结果

Uppercase 脚本的内容全部是大写字母

Lowercase 脚本的内容全部是小写字母

No accent 在脚本中用非重读字符代替重读字符

Code 脚本通过对象的 Code引用对象

Name 脚本通过 Name引用对象

Windows(ANSI) 脚本使用 ANSI字符集

DOS(OEM) 脚本使用 DOS字符集

Add titles 脚本中的每一节增加一个标题(例如 Database Name)

ODBC Syntax

当选择“ODBC syntax”检查框时,DataArchitect生成 ODBC语法脚本,而不生成特定的 RDBMS 语法脚本。如果不选择“ODBC syntax”检查框,DataArchitect使用 RDBMS的专用语法生成脚本。选择“ODBC syntax”检查框时,ODBC 不支持的参照完整性选项变成灰色,这意味着 ODBC不支持这些参照完整性

Check model 生成数据库或脚本前检查 PDM,如果发现错误停止生成

参照完整性选项

数据库中有如下两种生成参照完整性的方法: l 使用触发器。 l 使用 Declarative在脚本中生成说明性参照完整性。 参照完整的有效性选项依赖于目标 RDBMS。如果 RDBMS支持两种强迫参照完整性,

那么可以选择说明性参照完整性或触发器。如果 RDBMS 不支持这些选项,则这些选项是灰色的,不能被选择。

10.2.3 캪뒥랢웷ꆢ듦뒢맽돌짺돉뿉틔퓋탐뗄뷅놾컄볾

DataArchitect为生成触发器和存储过程提供了两种选择。在特定的 RDBMS环境下运行这些触发器和存储过程的 SQL脚本,能够在数据库中产生触发器和存储过程。

生成一个脚本

生成触发器和存储过程脚本的方法如下: 1. 选择 Database→Generate Trigger and Procedure,打开“Generation Options”窗口。 2. 在“File Name”框中键入存放触发器和存储过程的 SQL文件名(扩展名为 SQL)。 3. 在“Directory”框中键入存放 SQL文件名的目录。 4. 选择生成参数。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 196: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·183·

5. 单击“Options”,打开选项页。 6. 选择通用选项(General)和参照完整性(Reference Integrity)选项。 7. 单击“Generate Script”按钮。

在数据库中直接产生触发器

DataArchitect 能够直接生成触发器。为此,必须通过 ODBC 或其它专用接口连接到数据源上。在数据库中直接产生触发器的方法如下:

1. 选择 Database→Generate Trigger and Procedure,打开“Generation Options”窗口。 2. 在“File Name”框中键入文件名。 3. 在“Directory”框中键入目录名。 4. 选择生成参数。 5. 单击“Options”,打开选项页。 6. 选择通用选项(General)和参照完整性选项(Reference Integrity)。 7. 单击“Create Triggers”按钮,打开数据库连接对话框。在这个对话框中,将提示要连接的数据源和连接参数。

8. 从下拉列表框中选择数据源。 9. 键入用户名和口令。 10. 单击“Connect”按钮。如果提示数据源,再键入连接参数。这时,出现一个信息窗口显示生成过程。

能够通过适当的 ODBC驱动有选择地连接到目标数据库,然后执行 SQL脚本,生成触发器和存储过程。选择生成参数和选项后,必须确认这些选择。

实验 10-3(指导实验) 为存储过程和触发器生成脚本

描述 本实验将在 PUBS2INT.PDM中为存储过程和触发器生成脚本。

步骤 1. 选择 Database→Generate Trigger and Procedure,打开“Generation Options”窗口。 2. 接受缺省的文件名 crebas.sql。 3. 接受缺省的目录。 4. 在触发器和存储过程页上,选择目标 RDBMS的触发器和存储过程生成选项。 5. 单击“Options”,选择期望的目标 RDBMS的参照完整性选项和通用选项。 6. 单击“Generate script”按钮,开始产生触发器和存储过程脚本。生成结束后保存

这个脚本。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 197: Power Designer数据库建模技术

·184· PowerDesigner 数据库建模技术

10.3 触发器模板及 SQL查询编辑器

10.3.1 뒥랢웷쒣냥

触发器模板(Trigger Template)是用来生成触发器 SQL脚本的通用模型。触发器模板具有如下特征: l DataArchitect提供了它所支持的每一种 RDBMS的一组模板类型。 l 特定的一组模板随目标 RDBMS的变化而不同。 l 支持的每一种 RDBMS的模板定义被保存在 DEF文件中。 l 有各种类型的触发器模板(Insert、Update、Delete)。

模板项

触发器模板是由触发器模板项组成的。触发器模板项是可重复使用的脚本块,这些脚

本块用来实现参照完整性约束。可获得的触发器模板项随触发器的类型和目标 RDBMS 的不同而变化。 修改触发器模板的必要性

触发器模板是一个为触发器生成 SQL脚本的基本模型。如果某应用系统需要在每种触发器上实现某种特殊的规则,那么可以修改触发器模板,而不是修改每一个触发器。 修改模板的步骤

要修改模板定义,可进行如下操作: 1. 打开“Trigger templates”窗口。 2. 选择要修改的触发器模板,在“Definition”框中修改该触发器模板的定义。 3. 单击“Preview”按钮,可看到该触发器模板的定义。 4. 保存修改后的触发器模板。

应用修改后的触发器模板的步骤

能够把修改后的触发器模板应用到目标 RDBMS 的当前模型中,也能够把修改后的触发器模板应用到所有的已存在的模型及以后的模型中。通过下列步骤使用修改后的触发器

模板: 1. 选择 Dictionary→Triggers and Procedures→Trigger Templates,打开“Trigger

Templates”窗口(图 10-10)。 2. 在列表中单击一个触发器模板,该触发器模板的定义出现在“Definition”框中(见

图 10-11)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 198: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·185·

图 10-10

图 10-11

3. 在“Apply to”下拉列表框中,选择“Current Model”时,修改后的触发器模板仅在当前模型中有效;如果选择“All Models”,修改后的触发器模板在所有的模型中有效。

注 意:CDF 文件中保存了应用到所有模型中的已修改的触发器模板,该文件是在选择了

“All Model”并修改了触发器模板时产生的,它与 DEF 文件取相同的名称并保

存在 DEF目录中。例如,如果 PDM使用 Sybase SQL Anywhere 5.0作为目标 RDBMS,

那么,CDF文件名为 SQLANY5.CDF。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 199: Power Designer数据库建模技术

·186· PowerDesigner 数据库建模技术

4. 在“Definition”框中插入对该触发器模板的修改内容(也可单击“Zoom”按钮,通过特定的工具修改)。

5. 单击“Modify”按钮,一个星号出现在模板列表的后面,表示这个触发器模板已被修改。

6. 单击“OK”按钮。

10.3.2 SQL닩톯뇠벭웷

DataArchitect提供了一个通过鼠标“指指点点”编辑和验证 SQL语句的界面——SQL查询编辑器(SQL Query Editor),这个界面有助于编写触发器和存储过程的 SQL脚本。单击“Zoom”按钮,可访问这个界面;另外,也能够在脚本中直接输入语言元素。 表 10.3列出了触发器模板的五种脚本分类(Category)元素。 表 10.3

分 类 描 述

变量(Variables) 表特定信息(例如:%COLNAME%)

宏(Macros) 通用操作的封装脚本(例如:.ERROR)

函数(Functions) 特定 RDBMS的函数(例如:String())

操作符(Operators) 逻辑操作符(例如:>、<、=)

模板项(Template items) 完整性约束的宏(例如:DeleteParentRestrict)

实验 10-4(指导实验) 制作触发器模板和模板项

描述

在这个实验中,跟随指导操作,检查 Sybase SQL anywhere 触发器模板和模板项,在PUBS2INT.PDM中修改触发器模板,然后把触发器模板重新设置为缺省模板。 步骤一:检查触发器模板。

1. 在“Trigger Templates”窗口,选择“BeforeDeleteTrigger”模板。 2. 单击“Items”按钮,打开“Trigger Template Items for BeforeDeleteTrigger”窗口。

检查 DeleteParentRestrict和 DeleteParentSetNull宏脚本。 3. 单击“Cancel”按钮,返回到“Trigger Templates”对话框。 4. 单击“Zoom”按钮。 5. 通过从 DeleteParentRestrict到 DeleteParentSetNull改变缺省定制模板。 (1)记住光标的初始位置。 (2)如果没有把光标放在合适的位置,想重新开始,请在触发器模板定义对话框 中单击“Default”按钮,并选择恢复原始值(Restore Original Value)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 200: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·187·

存储过

客户应用 客户应用 客户应用

图 10-12

(3)单击“Modefy”按钮,标记修改后的触发器模板(修改后的触发器模板后面出现一个星号),选择“Apply to”下拉列表框中的内容,把修改后的触发器模板应用到当前模型中。

6. 在触发器模板定义对话框中单击“Default”按钮,并选择“Set Default Value”,可以把模板的脚本恢复到 DataArchitect的缺省设置。

步骤二:定制触发器模板。 1. 在 PDM工作区,选择 Dictionary→Trigger and Procedures→Trigger Template,打开

“List of Trigger Templates”窗口。 2. 单击“BeforeDeleteTrigger”模板。 3. 单击“Zoom”按钮,打开“Definition”窗口。 4. 在定义文本框中,删除“DeleteParentRestrict”模板项。 5. 选择模板项分类,选择“DeleteParentSetNull”模板项,单击“Add”按钮,并选

择“Add Template Item Name”。 6. 单击“OK”按钮,返回到模板列表窗口。 7. 单击“Modify”按钮,标记修改后的触发器模板。 8. 选择“Apply to”下拉列表框中的“Current model”选项,把触发器模板的修改应

用到当前模型中(注意:其它模型中不使用这个修改后的模板)。 9. 单击“OK”按钮,保存修改后的模板。

10.4 存储过程和函数

存储过程是由特定数据库管理系统

的 SQL 语句和控制流语句构成的语句集合。它能够带有参数,调用其它过程,返

回一个状态值给调用者,指示成功或失

败,返回一个参数给调用者。存储过程还

能在远程的数据库管理系统中调用。能够

使用 DataArchitect 在物理数据模型中定义存储过程,然后把它们传向数据库管理

系统中,并且永久地把存储过程的代码保

存在数据库中。存储过程或函数的运行是

通过客户端应用程序来调用执行的。应用

程序与存储过程或函数之间的关系如图 10-12所示。 存储过程和函数在以下几方面有所不同: l 函数把结果返回到调用环境; l 存储过程没有为调用环境返回结果。 存储过程和函数在以下几方面是类似的:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 201: Power Designer数据库建模技术

·188· PowerDesigner 数据库建模技术

l 能够使用 DataArchitect定义它们; l 实现业务逻辑、事务、运算法则; l 不能实现完整性约束; l 包含特定数据库管理系统的语法。

10.4.1 듦뒢맽돌뗄폅좱뗣

优点

存储过程是从客户应用或访问数据库的语句中分离出来的。存储过程的设置大大提高

了 SQL语句的功能、效率和灵活性,具体表现在: l 改善了性能。 存储过程与原始 SQL语句或批处理中的 SQL语句的最大区别在于它是预先编译好的,

当第一次运行一个过程时,数据库服务器对它进行分析并准备好一个执行计划,最后把这

个计划存储在系统表中,以后过程的每次执行都可以依据这个存储的计划,由于大部分查

询处理工作已做好,不需再花费时间进行编译,因此存储过程执行过程较快。在客户工作

站上,通常调用存储过程比把一系列的 SQL语句发送到数据库引擎上更有效。当一份申请首次调用存储过程时,它被编译进数据库引擎的虚拟内存中,并在内存中运行。编译后的

代码,被保留在内存中以便于以后的运行,这个工作完全在数据库服务器平台上执行,该

平台比客户工作站执行效率更高。 l 改善了安全性。 存储过程简化了安全机制,它可以简化对某些操作的授权。例如,假如一个用户不希

望别人在它的表上使用 SELECT 语句,他可以写一个仅可以修改这个表的某些行或列的存储过程,然后将调用该过程的权限授给特定的用户,这样其它用户就可以通过该存储过程

访问这个表。 l 减少了网络通讯量。 在客户/服务器环境下,存储过程经过编译和优化后,存储在服务器端而不是客户端。

这样,在网络上传输的只是一个远程调用和最终的执行结果,而不是一系列的 SQL语句和它们的返回结果,从而大大减少了网络上的传输量,提高了系统性能。

l 完成一些难以完成的工作。 如果本地数据库服务器和远程数据库服务器都允许远程登录,那么本地数据库服务器

就可以执行其它数据库服务器上的存储过程。例如,可以在本地服务器上写一个触发器,

当某一事件发生(如删除、更新或插入)时,该触发器执行远程服务器上的存储过程。 l 提高了开发者的劳动生产率。 存储过程消除了开发者为一个事务或一个运算法则的多次需求而写和测试 SQL语句的

重复劳动。调用一个存储过程比写 SQL语句更快、更简单。 l 有利于专门技术的使用。 技术熟练的开发者能够集中精力,写出复杂查询、运算法则和事务的存储过程。其它

具有一般 SQL经验的开发者能够调用这些存储过程。 l 简化了应用的维护,增加了应用的灵活性。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 202: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·189·

存储过程有助于从应用逻辑中把业务规则分离出来。当业务发生变化,需要修改业务

规则时,这个变化只影响存储过程。与改变、测试和调整一个及多个客户的成千上万个用

户程序相比,改变和测试存储过程是更有效、更省时间、少犯错误的好方法。 l 保证了运算法则的一致性。 存储过程能够确保运算法则每次以同样的精度运行。与此相反,在一个或多个客户应

用中多处存放的嵌入式 SQL语句,它们写的稍有不同,就会产生不同的结果。

存储过程的缺点

存储过程潜在的缺点如下: l 难以保持负荷平衡。 存储过程提出了一种在服务器上集中处理的模型,用集中处理代替事务的分布处理。

这种方法,除非服务器的性能进行了优化,符合存储过程运行的需求,否则它会降低服务

器的性能。 l 增加了管理要求。 存储过程是一个共享的资源。管理员必须确保使用这些存储过程,不允许同一个业务

规则、事务、运算法则的多个存储过程存在。 l 存储过程在不同的 RDBMS上语法不同。 存储过程使用了特定厂商扩展的 SQL语句。一般来讲,存储过程代码不能方便地在不

同的 RDBMS之间进行转换。

10.4.2 쪹폃듦뒢맽돌쒣냥뚨틥듦뒢맽돌뫍몯쫽

存储过程模板

定义存储过程和函数从存储过程模板开始,由存储过程模板可以为特定的事务、操作

或运算法则定义存储过程。存储过程模板的结构如图 10-13所示:

图 10-13

步骤

使用存储过程模板定义存储过程和函数的步骤如下:

模板(Template)

Item Item

存储过程脚本(可执行

的 SQL语句)

定制的代码

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 203: Power Designer数据库建模技术

·190· PowerDesigner 数据库建模技术

1. 随模型打开 PDM 工作区,选择 Diction→aryTriggers and Procedures→List of Procedures,打开“User-Definied Procedures”窗口(图 10-14)(注意:这个窗口中包含用户定义的函数)。

2. 在列表中单击一个空行。

图 10-14

3. 为存储过程键入 Name、Code和 Label。 4. 如果要产生的对象不是存储过程,而是一个函数,需要选择”Function“检查框。 5. 单击“Zoom”按钮,打开“Definition”窗口。 6. 使用 DataArchitect 提供的模板开始编辑存储过程或函数,为存储过程和函数建立

脚本。在这个界面上能够使用“指指点点”的方法编写存储过程或函数的脚本,

也能直接在脚本编辑框中键入各种语言元素。一个存储过程或函数包括下面类型

的语句(表 10.4):

表 10.4

分 类 描 述

函数 特定 RDBMS的函数

操作符 逻辑操作符

存储过程中还可包括如下对象的代码: l 表(Table) l 列(Column) l 连接(Join)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 204: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·191·

l 业务规则(Business Rule) 7. 在存储过程或函数的脚本框中,单击想要插入语句元素的位置。 8. 从“Category”列表框中选择一个分类(图 10-15)。例如,选择变量(Variables),

在右边的列表框中显示出变量列表。

图 10-15

9. 从变量列表中选择一个变量。 10. 单击“Add”按钮,在光标所在位置插入选择的变量。 11. 单击“OK”按钮,返回到“User-Definition Procedures”窗口。 12. 单击“OK”按钮,保存存储过程或函数的脚本。

注 意: 当打开 PDM工作区时,已经选择了一个目标 RDBMS,因此,在 PDM工作区中完成

的全部工作,包括定义存储过程,都属于这个特定的 RDBMS。

为存储过程定义一个定制的模板

如图 10-16所求,能够根据特定的标准制作一个存储过程模板,用模板产生的存储过程脚本中都包括这个模板。例如:一个信息管理系统的存储过程可以使用统一的注释,通过

这些注释,能够保证所有使用这个模板的存储过程有相同的注释。对特定的目标 RDBMS来说,定制的模板能够应用到全局物理数据模型中,也可以应用到特定的物理数据模型中。

像产生触发器模板项一样,可以为存储过程和函数定义模板项。这些模板项为产生存储过

程和函数提供了便于使用的结构。 步骤

修改存储过程和函数模板项的步骤如下:

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 205: Power Designer数据库建模技术

·192· PowerDesigner 数据库建模技术

1. 选择 DictionaryTrigg→er and Procedures→Trigger Template Item,打开“Trigger Template Items”窗口(图 10-17)。

图 10-16

图 10-17

2. 选择模板项 CustomProc,并编辑这个模板项。 3. 从“Apply to”下拉列表框中选择“Current Model”,这样,修改后模板项只在当

前的模型中起作用。同样,若选择“All Model”,修改后的模板项对全局模型起 作用。 4. 可以直接修改模板项,也可以单击“Zoom”按钮,打开“Definition”窗口后对模

存储过程模板

存储过程

存储过程脚本(可执行

的 SQL语句)

定制的存储过

程模板

存储过程

存储过程脚本(可执行

的 SQL语句)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 206: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·193·

板项进行修改。 5. 单击“OK”按钮。

实验 10-5(指导实验) 制作一个存储过程的模板项

描述 在这个实验中,跟随指导操作,观察 DataArchitect 的存储过程模板项,并把制作的模

板项应用到模型中。制作模板项是为了在存储过程中调用错误(ERROR)宏。请记住光标的初始位置。如果操作失误,想要重新开始,请单击“Default”按钮,并选择“Restore Original Value”。

步骤

1. 随模型打开 PDM 工作区,选择 Dictionary→Triggers and Procedures→Triggers Template Items,打开“Trigger Template Items”窗口(图 10-18)。

图 10-18

2. 从“Trigger Template Items”列表中选择 CustomProc,在“Definition”框中显示该模板项的脚本(图 10-19)。

3. 单击“Zoom”按钮,打开 SQL查询编辑器。 4. 通过编辑该模板项的定义制作出符合用户要求的模板项。其方法如下:

(1) 在定义文本框的 begin语句后,想要插入语句的位置单击鼠标左键。 (2) 选择宏(Macro)的分类(Category)。 (3) 选择宏名为 ERROR()的宏。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 207: Power Designer数据库建模技术

·194· PowerDesigner 数据库建模技术

(4) 单击“Add”按钮,并键入错误实例(图 10-20)。 5. 单击“OK”,返回“Trigger Template Items”窗口(图 10-21)。 6. 从“Apply to”下拉列表框中选择“Current Model”。 7. 单击“OK”保存这个模板。

图 10-19

图 10-20

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 208: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·195·

图 10-21

10.5 宏

宏是被封装了的、可重复使用的执行通用任务的脚本。当制作一个符合用户要求的

BeforeDeleteParent 触发器时,可以使用特定类型的宏和模板项。宏提供了经过测试的执行通用任务的代码,简化了修改模板的过程,改善了脚本的质量。DataArchitect提供了多种标准的宏,给出了这些宏的 Label、Description、语法和例子。宏是通过一个黑点(.)来标识的,在宏名的前面都有一个黑点。

下面(表 10.5)就是一个宏的例子。

表 10.5

宏 ERROR

Label .ERROR()

Discription 处理错误

语法 ERROR(<errno>,“<errmsg>”)

例子 ERROR(-2001,“Parent does not exist”)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 209: Power Designer数据库建模技术

·196· PowerDesigner 数据库建模技术

10.6 变量

下图(图 10-22)中两个百分号之间的字符串就是变量:

图 10-22

变量是参照特定数据库表的占位符。当一个脚本从一个模板中产生时,变量被相应的

数据库表所代替。变量使用在模板、模板项和宏中。 变量有如下五种类型: l 表 l 列 l 参照完整性 l 触发器和存储过程 l 错误信息

实验 10-6 触发器、存储过程和函数

描述 在这个实验中,可制作一个符合要求的定制触发器、存储过程、模板和模板项,另外

还可为触发器和存储过程产生脚本。 步骤一:制作一个符合要求的模板项。

在这个实验中,可为 Library.PDM制作一个定制触发器模板,目的是让它调用 ERROR宏。请记住光标的初始位置,如果操作失误,想要重新开始,请单击“Default”按钮,然后选择 Restore Original Value。另外,要把制作的定制模板应用到 Library PDM模型中。

1. 随模型打开 PDM 工作区,选择 Dictionary→Triggers and Procedure→Trigger

Before delete trigger “%TRIGGER%” for table “%TABLE%” Before delete trigger “tdb_administrative” for table “administrative”

在模板中的变量

在脚本中的变量值

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 210: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·197·

Template Items,打开“Trigger Template Items”窗口。 2. 单击 CustomProc模板项,在“Description”框中显示模板项的脚本。 3. 单击“Zoom”按钮,打开该模板项的“Definition”窗口。 4. 编辑该模板项。

(1) 在定义文本框中单击要插入内容的位置。 (2) 择Macro分类。 (3) 选择 ERROR()宏。 (4) 单击“Add”按钮。

5. 单击“OK”按钮,返回“Trigger Template Items”窗口。 6. 在“Apply to”下拉列表框中选择“Current Model”,把这个模板项应用到当前模

型中。 7. 单击“OK”按钮,保存该模板项。

步骤二:定制一个缺省触发器。

在 Library.PDM中为 Customer表定制缺省 BeforeDeleteTrigge模板。 本实验将通过改变 Set Null,为 Administrative表定制 BeforeDeleteTrigger模板。这个模

板只应用到与 Administrative表有关的模板上。为了定制一个触发器,进行如下操作: 1. 随模型打开 PDM 工作区,选择 Dictionary→Triggers and Procedures→List of

Triggers,打开“List of Triggers”窗口。 2. 单击“One Table”单选按钮,从下拉列表框中选择一个表。 3. 单击“All”单选按钮,列出所有与该表有关的触发器,在列表中单击一个触发器。 4. 单击“User-Defined”检查框,在“Definition”框中显示触发器脚本。 5. 单击“Zoom”按钮,打开“Definition”窗口。 6. 编辑该触发器的脚本定制这个模板。

(1) 在定义文本框中,单击想要插入和修改文本的位置。 (2) 从列表框中选择项目,把光标置于希望插入该项目的位置,单击“Add”按钮。 (3) 单击“Preview”按钮,观察脚本。

7. 单击“OK”按钮,返回“List of Triggers”窗口。 8. 单击“OK”按钮,保存定制触发器。

步骤三:定制触发器模板和模板项。 检查 Sybase SQL Anywhere的 DataArchitect触发器模板和模板项。修改触发器模板并

把修改后的模板重新设置为缺省模板。 1. 在“Trigger Templates”窗口,选择 BeforeDeleteTrigger模板。 2. 单击“ Item”按钮,打开触发器模板项对话框,检查 DeleteParentRestrict 和

DeleteParentSetNull模板项。 3. 单击“Cancel”按钮,返回到“Trigger Templates”窗口。 4. 单击“Zoom”按钮。 5. 通过把 DeleteParentRestrict改为 DeleteParentSetNull修改模板定义。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 211: Power Designer数据库建模技术

·198· PowerDesigner 数据库建模技术

(1) 记住光标的初始位置。 (2) 如果操作失误,想要重新开始,请在触发器模板定义对话框中,单击“Default”

按钮,并选择“Restore Original Value”。 (3) 单击“Modify”按钮,标记修改后的触发器模板,选择“Apply to”下拉列

表框中的“Current Model”,把修改后的触发器模板应用到当前模型中;选择“All Models”,把修改后的触发器模板应用到全局模型中。

6. 在“Trigger Templates”窗口,单击“Default”按钮,然后选择“Set Default Value”,即把模板脚本恢复为缺省值。选择“Restore original value”可把模板脚本恢复为开始编辑的模板脚本。

步骤四:定制触发器模板。

1. 在 PDM工作区中,选择 Dictionary→Triggers and Procedures→Trigger Template,打开“Trigger Templates”窗口。

2. 单击 BeforeDeleteTrigger模板。 3. 单击“Zoom”按钮,打开“Definition”窗口。 4. 在脚本定义框中,删除 DeleteParentRestrict模板项。 5. 选择模板项分类(Category),选择 DeleteParentSetNull模板项,单击“Add”按钮,

并选择“Add Template Item Name”。 6. 单击“OK”按钮,返回到“Trigger Templates”窗口。 7. 单击“Modify”按钮,在该模板项的后面出现一个星号(*),表示该模板选项已

经做了修改。 8. 在“Apply to”下拉列表框中选择“Current model”,把修改应用到当前的模型中。 9. 单击“OK”按钮,保存修改后的模板。

步骤五:为存储过程和触发器生成脚本。 1. 选择 Database→Generate Triggers and Procedures,打开“Parameters for Sybase SQL

Anywhere 5.5”窗口。 2. 键入保存触发器和存储过程的 SQL文件名,或接受缺省的 cretrg.sql文件名。 3. 键入保存这个触发器和存储过程文件的目录名,或接受缺省的当前目录名。 4. 在“Trigger and Procedure Generation”页,选择目标 RDBMS相应的参数选项。 5. 单击“Options”页,并选择需要的参数。

步骤六:产生并保存脚本。 单击“Generate Script”按钮,开始产生脚本并保存这个脚本文件。

步骤七:直接产生触发器和存储过程。 1. 单击“Generate Triggers”按钮。 2. 在“Connect to an ODBC Data Source”对话框中,进行如下操作: (1) 从“Data source name”下拉列表框中选择一个数据源。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 212: Power Designer数据库建模技术

第 10章 触发器、存储过程和函数 ·199·

(2) 键入有效的 User name和 Password。 (3) 单击“Connect”按钮,连接到目标 RDBMS。

DataArchitect信息窗口开始显示产生触发器和存储过程的信息。

小 结 l 存储过程是包含 SQL语句和控制流语句的集合,控制流语句对于不同的数据库管

理系统是不一样的。因为存储过程使用了特定的扩展 SQL语句,所以存储过程必须在物理级定义。

l 业务规则和事务处理的变化使存储过程代码不能满足实际工作的要求,

DataArchitect提供了通用模板,这个模板为存储过程、函数及触发器提供了全局结构,可以通过修改模板对全局的存储过程、函数及触发器进行修改。

l DataArchitect对定义存储过程、触发器和函数有三级抽象: ♦ 存储过程模板是产生特定存储过程、触发器和函数的通用脚本定义。能够制

作符合用户要求的通用模板,方便地产生存储过程、触发器和函数。用户制

作的模板能够应用到全局 PDM中,也能够应用到一个特定的 PDM中。 ♦ 存储过程用特定的业务规则和事务逻辑定义。 ♦ 存储过程脚本是一组包含 SQL和控制流语句的脚本,产生存储过程后,只有

把它保存在特定的 RDBMS中,这个存储过程才能起作用。 l 触发器是一种特殊类型的存储过程,它是通过数据库事件触发后自动执行的。 l 触发器根据触发它们的事件类型可分为:插入触发器、删除触发器、修改触发器。 l DataArchitect把触发器的定义分为三个级别。

♦ 触发器模板是产生触发器的通用定义脚本,用户可以根据特定的业务规则制作触器模板,并把它应用到一个特定的 PDM或所有的 PDM中。

♦ 由 DataArchitect 缺省的触发器模板产生的触发器称为缺省触发器,能够使用缺省触发器,也能制作符合特定业务规则的触发器。

♦ 触发器脚本是特定事件和数据库表可执行的 SQL语句。 l DataArchitect所支持的 RDBMS的触发器模板定义存储在 DEF文件中。

思 考 题

1. 描述和比较下列各项:存储过程模板、存储过程、存储过程脚本。 2. 描述和比较下列各项:触发器模板、触发器、触发器脚本。 3. 解释缺省触发器和定制触发器之间的不同。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 213: Power Designer数据库建模技术

本章介绍了检查物理数据库模型与产生数据库或数据库生成脚本的过程。检查物理数

据模型为我们提供了查找模型中错误的智能化方法;通过生成数据库脚本可以确认模型在

实际数据库中生成对象的数据库语言,并可以更深刻地理解数据库语言,帮助数据库模型

设计者进一步理解模型对象的意义,使用这些数据库生成脚本可以脱离模型环境在数据库

中建立数据库对象。学完本章后,能够达到如下目的:

l 学会检查 PDM;

l 改正 PDM中发现的错误;

l 产生数据库或数据库生成脚本。

11.1 检查物理数据模型

检查物理数据模型包括检查所有 PDM模型中的表、列、参照完整性,最终得出模型是否正确的结论。

检查 PDM的结果

PowerDesigner检查 PDM时,使用下面的通用检查规则: l 每个表必须至少有一个列。 l 每个表必须有一个主键。 l 每个索引必须至少有一个列。 l 每个参照完整性必须至少有一个列对。 能够在任何时候检查PDM。当产生数据库或数据库脚本时,DataArchitect自动检查PDM

的有效性。 l 如果 DataArchitect 在 PDM 中发现一个错误,数据库(或数据库生成脚本)停止 生成。 l 如果在 PDM中有问题,但不是错误,DataArchitect显示警告信息,并完成生成过程。

检查 PDM的步骤

1.选择 Dictionary→Check Model,或者按 F4,打开“Check Physical Data Model”窗

第11章

检查物理数据模型生成数据库

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 214: Power Designer数据库建模技术

第 11章 检查物理数据模型生成数据库 ·201·

口(图 11-1)。

图 11-1

2.选择需要的选项,并单击“OK”按钮。这些选项将在下面作进一步的讨论。

11.1.1 볬닩뫍룄헽 PDM톡쿮

在“Check Physical Data Model”窗口,能够指定 PDM对象显示的三种类型错误信息(Model errors、Model warnings、Database constraints),也能指定错误的改正选项(Manual correction、Simulate automatic correction、Automatic correction),还能指定是否检查由PowerDesigner早期版本生成的模型中的特殊错误。

检查选项

检查 PDM结束后,系统显示三种类型的提示信息: l 错误(Error),这种类型的信息妨碍了数据库的生成,是不可忽视的主要问题。

l 警告(Warning),这种类型的信息是次要的或建议修改的问题,不影响数据库的

生成。

l 数据库约束(Database constrain),这种信息表示联系与数据库不相容。

在“Check Physical Data Model”窗口的“Check options”组框中,能够为 Table、Index、column、Reference等 PDM对象选择检查结果信息的显示类型。

旧模型特定检查(Old model specific checks)

当选择“Old model specific checks”检查框时,系统检查由 PowerDesigner早期版本开发的模型。这时检查如下项目: l 名称是否唯一(Unique Name);

l 代码是否唯一(Unique Code);

l 表上是否存在聚簇(Existence of a Cluster on a table)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 215: Power Designer数据库建模技术

·202· PowerDesigner 数据库建模技术

更正选项(Correction options)

在“Check Physical Data Model”窗口,能够选择如下更正模型选项: l 手工改正(Manual Correction),只显示错误和警告信息,靠手工改正它们。 l 模拟自动改正(Simulate Automatic Correction),显示错误和警告信息,并显示改

正过程,但这个改正实际上并没有进行,只是一种模拟。 l 自动改正(Automatic Correction),显示错误和警告信息,并自动改正模型中包含

的错误。

11.1.2 듭컳뫍뺯룦

检查结果

当检查 PDM 模型结束后,打开“Check Model Messages”窗口(图 11-2),列出检查 结果。

图 11-2

Description和 Suggestion区

在“Check Model Messages”窗口的“Description”和“Suggestion”区,显示错误或警告的描述和建议修改的信息,用户能够根据这些信息更正模型。

改 正

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 216: Power Designer数据库建模技术

第 11章 检查物理数据模型生成数据库 ·203·

“Correct”按钮

在“Check Model Messages”窗口,选择错误或警告信息行,然后单击“Correct”按钮,即可打开更正该错误或警告的窗口。也可以双击该信息行,打开更正该错误或警告的窗口。

重新显示错误信息和警告

如果单击“OK”按钮,关掉了“Check Model Messages”窗口,全部的错误和警告就存储在内存中。为了显示上次检查发现的错误和警告,选择 Dictionary→Display Messages。

显示、保存、打印和编辑信息文本与 CDM检查的处理过程一样。

实验 11-1(指导实验) 检查 PDM

描述

跟随指导操作,检查 CHECKTEST.PDM。 步骤

1.随模型打开 PDM工作区,选择 Dictionary→Check Model,打开“Check Physical Data Model”窗口。

2.在“Check Physical Data Model”窗口中,选择“Check options”和“Correct options”选项,然后单击“OK”按钮。

3.在“Check Model Messages”窗口,浏览信息、观察 Description和 Suggestion,会看到既有错误又有警告信息。

4.注意这些错误和警告的 Description和 Suggestion,根据上面提到的方法改正每一个错误和警告,然后单击“OK”按钮。

11.2 产生数据库或产生数据库生成脚本

如图 11-3所示,DataArchitect从 PDM定义的对象产生数据库或产生数据库生成脚本。

图 11-3

PDM

生成参 生成选

+ = DB DEF 文件

数据库

生成脚

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 217: Power Designer数据库建模技术

·204· PowerDesigner 数据库建模技术

生成参数和选项控制着整个处理过程和结果。生成参数和选项的有效性依赖于目标

RDBMS,这些参数和选项是由特定的 RDBMS的 DEF文件确定的。对目标 RDBMS无效的参数和选项,在参数对话框中是不可选择的(灰色的)。

11.2.1 DEF컄볾

DataArchitect 对每一种它所支持的 RDBMS 有一个 DEF 文件。每一个 DEF 文件包含DataArchitect用来生成特定 RDBMS数据库脚本和数据库的参数。

DEF文件参数

DEF文件包含以下参数: l 数据库特征定义参数(Database characteristics definition parameters)。这

些参数代表目标数据库 RDBMS 是否允许空关键字,同时还指定了命令结束符及目

标 RDBMS字符串使用的引号。

l 数据库命令定义参数(Database commands definition parameters)。这些参数

指定产生和删除表、列、索引、视图的命令;数据库选项的缺省值;目标 RDBMS

支持的函数。

l 使用生成脚本的方法(How to use generated script)。这些参数包括目标 RDBMS

运行单个或多个脚本的说明。

l 数据类型转换表(Data translation table)。这些参数是概念数据模型中数据类

型转换到特定 RDBMS物理数据模型数据类型的对应关系。

l 触发器变量(Trigger variables)、触发器生成参数(Trigger generation

parameters)、触发器定义(Trigger definitions)。这些参数包括特定目标 RDBMS

触发器模板(缺省为:Insert触发器、Update触发器、Delete触发器)的代码。

修改 DEF文件

DEF文件是 ASCII格式的文件,使用文本编辑器可以打开并修改这些文件。修改目标RDBMS 的 DEF 文件是一种十分有效的方法,这种方法使数据类型转换和数据库生成脚本的语法发生全局改变。

例如:DataArchitect映射概念数据类型时间戳(timestamp)到 Sybase SQL Anywhere 时间戳类型。如果想让 DataArchitect 把时间戳转换成日期时间型(DateTime),需要把 DEF中的 TS=TIMESTAMP改变成 TS=DATETIME。修改 DEF文件是一件极其慎重的事,修改之前,应把缺省的 DEF文件保存为另一个文件。因为 Sybase公司对用户改变了 DEF文件造成的损失不进行技术支持,另外也可以再次使用缺省的 DEF文件。

注 意: 应该牢记在对 DEF作修改之前应对原始 DEF做好备份。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 218: Power Designer数据库建模技术

第 11章 检查物理数据模型生成数据库 ·205·

11.2.2 짺돉쫽뻝뿢

数据库生成参数

要选择生成参数,选择 Dictionary→Generate Database,或者按 CTRL+G,打开目标RDBMS参数对话框(图 11-4)。

图 11-4

大多数生成参数是用来选择数据库生成对象的。例如在 Tables 组框中,能够选择在数据库中生成的表或视图(“List”单选按钮)。

注 意: “Begin script”和“End script”参数是为说明数据库生成脚本而设计的。

如果选择这两个参数,在“Table properties”窗口通过“Script”按钮定

义的“Begin script”和“End script”就会附加在表生成语句的前后。要

定义“Begin script”和“End script”的内容,在“Table properties”

窗口,单击“Script”按钮。

生成选项

单击“Options”选项页,打开生成选项(图 11-5)。 存储过程和触发器的生成选项与数据库生成选项是同一个窗口,要了解这些选项请参

看第 10章中的有关内容。

注 意: 当选择“ODBC syntax”检查框时,DataArchitect生成 ODBC语法脚本,而不

生成特定的 RDBMS 语法脚本;如果不选择“ODBC syntax”检查框,

把所选

的视图

生成到

数据库

中 把所有的

表生成到

数据库中

表生成参

存储脚本

的文件名

列生成

参数

视 图 生

成参数

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 219: Power Designer数据库建模技术

·206· PowerDesigner 数据库建模技术

DataArchitect使用 RDBMS的专用语法生成脚本。选择“ODBC syntax”检查

框时,ODBC不支持的参照完整性选项变成灰色,这意味着 ODBC不支持这些参

照完整性。

图 11-5

生成选项窗口

选择 Database→Generation Options,打开“Generation Options”窗口(图 11-6)。

图 11-6

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 220: Power Designer数据库建模技术

第 11章 检查物理数据模型生成数据库 ·207·

注 意: 选择“Declarative”还是选择“Trigger”是一个比较复杂的议题,这一议

题已超出了本书的范围。通常,Trigger对实现强制完整性规则和维护数据之

间的联系十分有用。但是,Trigger较为复杂,在系统维护、系统测试方面比

Declarative要消耗更多的时间。最理想的解决方法是:混合使用 Declarative

和 Trigger,使它们在多种场合下达到最优选择。

实验 11-2(指导实验) 生成数据库脚本

描述

跟随指导操作,产生数据库生成脚本,接受缺省的文件名称、路径、生成参数、生成

选项。

步骤

要产生数据库生成脚本,进行如下操作: 1.选择 Database→Generate Database,打开“Parameters for Sybase SQL Anywhere”窗口(图 11-7)。

2.在 File name 框中接受缺省的文件名 crebas.sql,在 Directory 框中接受缺省的目 录名。

3.接受其它缺省的生成参数和选项。

图 11-7

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 221: Power Designer数据库建模技术

·208· PowerDesigner 数据库建模技术

4.单击“Generate script”按钮,打开如图 11-8所示的确认框。

图 11-8

5.单击“是(Y)”按钮。 6.打开数据库生成脚本文件,并浏览这个文件。

11.2.3 쪹폃ODBC짺돉쫽뻝뿢

ODBC是Windows环境下连接到数据库管理系统的标准接口,ODBC被设计成为一个开放的、方便的、标准的应用程序接口(API),这个 API 能够提供访问关系型和非关系型数据库管理系统的接口,同时也提供了逆向工程这些数据库管理系统的能力。

步骤

直接使用 ODBC 生成数据库,其步骤与生成数据库脚本的步骤基本相同,下列步骤是与生成数据库脚本步骤不同之处。

1.生成数据库脚本时,单击“Generate script”按钮,而生成数据库时单击“Create database”按钮。

2.打开“Connect to an ODBC data Source”对话框。 (1) 从下拉列表框中选择一个数据源。 (2) 键入有效的 User name和 Password,连接到目标 RDBMS上。 (3) 单击“Connect”按钮,如果系统提示数据源,键入连接参数,这些参数随目

标数据源的变化而不同。 DataArchitect信息窗口显示生成过程。

实验 11-3 检查 PDM并生成数据库

描述

在这个实验中检查 LIBRARY.PDM 物理数据模型,改正其中的错误,然后使用 ODBC数据源为这个模型产生数据库。

步骤一:检查 LIBRARY.PDM。

1.随 LIBRARY.PDM模型打开 PDM工作区,选择 Dictionary→Check Model,开始检查过程。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 222: Power Designer数据库建模技术

第 11章 检查物理数据模型生成数据库 ·209·

2.在打开的“Check Physical Data Model”窗口中,选择“Check options”和“Correction options”组框中的选项,然后单击“OK”按钮。

3.在“Check Model Messages”窗口中浏览信息。 4.单击“Correct”按钮,改正所有的错误。 5.单击“OK”按钮。

步骤二:生成数据库。

从 LIBRARY.PDM生成数据库,接受缺省的 File name、Directory、生成参数、生成选项。生成一个数据库的步骤如下。

1.选择 Database→Generate Database,打开“Parameters for Sybase SQL Anywhere” 窗口。

2.接受缺省的 File name:crebas.sql和缺省的当前目录。 3.接受缺省的生成参数和选项。 4.单击“Create database”按钮,在打开的“Connect to an ODBC data Source”窗口中,填入相应的数据源连接参数。

l 从“Data source name”下拉列表框中选择一个数据源。

l 键入一个有效的 User name和 Password。

l 单击“Connect”按钮。连接到目标 RDBMS上。注意:连接参数随目标数据源的变

化不同而不同。

DataArchitect信息窗口显示生成处理的过程。

킡 뷡

l 检查PDM模型能够确定模型的有效性,在设计和修改模型的任何时候都能检查PDM。

DataArchitect在生成数据库和数据库脚本时自动检查 PDM。

l 生成参数和生成选项控制着模型检查的处理结果,它们的有效性依赖于目标 RDBMS

的 DEF文件。

l 多数生成参数要求指定选择生成的数据库对象,少数生成参数要求指定数据库对

象存放的地方。生成选项控制着数据库生成脚本和参照完整性约束的细节。

l PDM能够产生数据库生成脚本,或者产生 ODBC数据库。使用 ODBC产生数据库前,

必须确定目标 RDBMS的数据源,并提供连接到这个数据源上所需要的连接信息。

쮼 뾼 쳢

1. 如何检查 PDM? 2. 如何解决 PDM检查中发现的错误? 3. 如何产生数据库生成脚本? 4. 如何直接产生数据库?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 223: Power Designer数据库建模技术

本章介绍了利用 DataArchitect 从现存数据库中逆向工程产生模型文件的步骤。逆向

工程对于改造无模型文档的 MIS 系统具有重要的现实意义,学完本章后,能够达到如下

目的:

l 描述 ODBC在逆向工程中的作用;

l 描述从数据库中逆向工程的一般步骤;

l 描述从数据库生成脚本中(数据定义语言 DDL)逆向工程的一般步骤。

12.1 通过逆向工程生成 PDM

在 DataArchitect 中,逆向工程是读数据库分类表或读生成脚本产生 PDM 的过程。

DataArchitect能够从 PDM生成 CDM,如图 12-1所示。

图 12-1

逆向工程的原因

逆向工程主要用于下列情况: l 设计和实现的、已经存在的数据库没有建立数据模型。 l 数据模型不能反映现存数据库设计的实际情况。 l 现存数据库的数据模型丢失。 l 现存的数据库需要转换到不同的 RDBMS上,这时需要有不同的物理数据模型。

DB 生成脚本

DB Catalog

CDM PDM

第12章

逆 向 工 程

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 224: Power Designer数据库建模技术

第 12章 逆 向 工 程 ·211·

逆向工程的步骤

逆向工程的步骤如下: 1.从数据库生成脚本产生一个 PDM文件,也可以从数据库目录分类表使用 ODBC生成 PDM。

2.从 PDM生成 CDM。 图12-2是DataArchitect通过逆向工程方法使用数据库生成脚本结合DEF文件生成PDM

的过程。

图 12-2

从数据库生成脚本生成 PDM的步骤 从数据库生成脚本生成 PDM,按下列步骤进行: 1.选择 File→Reverse Engineering,打开“Reverse engineering a database”窗口。 2.从“Database name”下拉列表框中选择数据库管理系统。 3.单击“Using a script file”单选按钮。 4.选择“New Window”检查框,在新的窗口中生成 PDM文件。为了把新的对象放入打开的 PDM中,清除“New Window”检查框。

5.单击“OK”,打开“Script File Name”窗口。 6.选择一个 Script文件,然后单击“OK”按钮,出现显示生成过程的信息框。 7.单击“OK”,新的 PDM出现在窗口中。

多脚本文件

如果有几个脚本文件,在执行逆向工程前,把所有脚本文件组合成一个单独的主文件。

当 DataArchitect从数据库生成脚本逆向工程时,使用特定 RDBMS定义的 DEF文件。

12.2 使用 ODBC生成 PDM

图 12-3是DataArchitect采用逆向工程的方法通过ODBC把数据库分类目录中的数据库对象生成 PDM的过程。

DataArchitect

DB Script

DEF PDM

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 225: Power Designer数据库建模技术

·212· PowerDesigner 数据库建模技术

图 12-3

ODBC驱动的能力确定了逆向工程处理的结果,因此,由 ODBC产生的结果也许不同于 DataArchitect使用 DEF文件和数据库生成脚本产生的结果。

逆向工程的步骤如下: 1.确认数据库作为 ODBC数据源。 2.从数据库分类目录使用 ODBC生成 PDM。 3.从 PDM生成 CDM。

定义一个数据源

定义一个数据源的步骤如下: 1.在 PDM工作区中,选择 Database→Configure Database,打开“ODBC数据源管理器”对话框(图 12-4)。

2.单击“添加”按钮,显示 ODBC驱动程序列表。

图 12-4

3.为目标 RDBMS环境选择合适的驱动程序。 4.单击“确定”,打开相应驱动程序选项对话框(图 12-5)。

DataArchitect

ODBC DB

Catalog PBD

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 226: Power Designer数据库建模技术

第 12章 逆 向 工 程 ·213·

图 12-5

5.输入需要的选项(注意:使用“Browse”按钮可简化输入参数)。 6.单击“OK”。

配置一个数据源

配置一个数据源的步骤如下: 1.在 PDM工作区中,选择 Database→Configure Database,打开数据源对话框。 2.从列表框中选择正确的数据源。 3.单击“配置(C)”按钮,打开显示相应驱动程序选项对话框。 4.输入需要的选项。 5.单击“OK”。 通过逆向工程生成 PDM的步骤如下: 1.在 PDM工作区中,选择 File→Reverse Engineering。另外,也可以在 CDM工作区中,选择 File→Physical Model→Reverse Engineering,打开“Reverse Engineering a Database”窗口(图 12-6)。

2.从“Database name”下拉列表框中选择一个 RDBMS。 3.单击“Using an ODBC driver”单选按钮。 4.选择“New Window”复选框,将在新的窗口中产生 PDM。 5.单击“OK”,打开“Connect to an ODBC Data Source”窗口(图 12-7)。 6.从“Data source name”下拉列表框中选择一个数据源。 7.键入有效的 User name和 Password。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 227: Power Designer数据库建模技术

·214· PowerDesigner 数据库建模技术

图 12-6

图 12-7

8.单击“Connect”按钮。输入的连接参数随目标 RDBMS的不同而不同。 9.在“ODBC Reverse Engineering”窗口(图 12-8)中,选择想要逆向工程的选项。

图 12-8

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 228: Power Designer数据库建模技术

第 12章 逆 向 工 程 ·215·

10.单击“OK”按钮开始逆向工程的过程,一个信息窗口显示处理过程。 11.当逆向工程处理完成后,单击“OK”,在 PDM工作区中显示生成的 PDM结果。

12.3 从 PDM生成 CDM

从 PDM生成 CDM的逆向工程处理,把物理数据模型对象转换成概念数据模型对象,它们的对应关系如表 12.1所示:

表 12.1

PDM对象 CDM对象

表(Table) 实体(Entity)

列(column) 数据项(Data Item)、实体属性(Entity Attribute)

主键或外键(Primary or Foreign key) 标识符(Identifier)

参照完整性(Reference) 一对多联系(One-to-Many relationship)

中间表(Associative(Join) table) 多对多联系(Many-to-Many relationship)

当从 PDM逆向工程生成 CDM时,DataArchitect为概念数据模型对象指定对象 ID号,概念数据模型中的对象没有携带 PDM中关于辨认相应物理数据模型对象的信息,因此,当从 PDM逆向工程生成 CDM时,PDM和 CDM没有连接。

步骤 为了从数据库生成的 PDM中产生 CDM,应执行下列步骤: 1.在 PDM工作区中,选择 Dictionary→Generate Conceptual Model,打开处理确认框(图

12-9)。

图 12-9

2.单击“是”按钮,确定想要生成概念数据模型。如果 PDM 是正确的,生成的概念数据模型出现在 CDM工作区中。

实验 12-1 逆 向 工 程

描述 DataArchitect直接从数据库生成脚本中使用特定 RDBMS的 DEF文件逆向工程,不需

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 229: Power Designer数据库建模技术

·216· PowerDesigner 数据库建模技术

要 ODBC。在这个实验中,从数据库生成脚本(PROJECT.SQL)产生 PDM。

步骤一:从数据库生成脚本逆向工程。 1.在 PDM工作区,选择 File→Physical Model→Reverse Engineering,打开“Reverse

Engineering a Database”窗口。 2.从“Database name”下拉列表框中选择一个数据库管理系统。 3.选择“New window”复选框,在新的窗口产生一个 PDM文件。 4.单击“Using a script file”单选按钮,再单击“OK”按钮,打开“Script File Name”窗口。

5.从“Script File Name”窗口,选择脚本文件,然后单击“OK”,一个信息框显示处理过程。

6.当逆向工程处理完成时,单击“OK”按钮,在 PDM工作区中出现生成的 PDM。

注 意: 为了把多个脚本逆向工程为一个 PDM 文件,首先把多个脚本文件组合成一个

脚本文件,然后再进行逆向工程。

步骤二:从 PDM逆向工程为 CDM文件。

从 PDM生成 CDM的步骤如下: 1.在 PDM工作区中,选择 Dictionary→Generate Conceptual Model,打开一个确认窗口,单击“是”按钮。

2.如果 PDM正确,概念数据模型将出现在 CDM工作区中。

킡 뷡

l 在 DataArchitect 中逆向工程是“读”数据库分类表或“读”数据库产生脚本生

成 PDM的过程。DataArchitect能够从 PDM生成 CDM。

l DataArchitect 使用目标 RDBMS 的 DEF 文件从数据库生成脚本逆向工程一个数据

库。DataArchitect使用 ODBC驱动从数据库分类表中逆向工程一个数据库。

l ODBC 驱动的能力决定了逆向工程处理的结果,因此,ODBC 产生的结果不同于

DataArchitect使用 DEF文件和生成脚本产生的结果。

l 从数据库分类表逆向工程的步骤如下:

(1) 从数据库分类表使用 ODBC生成一个 PDM。 (2) 从 PDM产生 CDM。

l 从数据库生成脚本逆向工程的步骤如下: (1) 从生成脚本中生成 PDM。 (2) 从 PDM中生成 CDM。

l 无论 PDM是哪种目标 RDBMS的物理数据模型,从 PDM生成 CDM的步骤相同。 l 从数据库分类表中逆向工程一个 PDM时,数据库必须被定义为 ODBC数据源。

思 考 题

1.描述 DataArchitect逆向工程数据库的两种方法。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 230: Power Designer数据库建模技术

第 12章 逆 向 工 程 ·217·

2.逆向工程同一个数据库的两种方法会产生不同的结果,试说明理由。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 231: Power Designer数据库建模技术

本章介绍了把一个复杂的模型划分成多个子模型的方法。子模型的划分对于团队开发

具有重要的意义。通过划分子模型,便于多个开发人员共同完成一项复杂的设计工作。学

完本章后,能够达到如下目的:

l 讨论子模型与团队工作的关系及工作任务的划分; l 能够把一个模型划分成多个子模型; l 讨论全局模型和子模型的关系; l 产生、打开、显示、删除子模型; l 在相关子模型中维护对象.

13.1 全局数据和子模型

全局数据

当使用 MetaWorks 中的 Dictionary→List of Projects 菜单建立了一个工程后,在DataArchitect 中打开一个模型文件并对该模型文件进行固化,这时,该模型文件就在MetaWorks字典中产生了一批模型数据。包含在这个字典中的数据就是全局数据。

子模型

包含全局数据的模型通常是由子模型组成的,设计组的成员通常工作在自己的子模型

中。使用子模型便于管理,这些子模型共同构成全局模型。设计组成员开始工作时,从字

典中提取子模型,当对子模型作了修改后,再把修改后的子模型固化进MetaWorks字典中。采用这种方法,全局数据将随子模型的修改而不断地改变。

CDM 和 PDM 两种数据模型都能被分解成子模型,子模型不能单独存在,它是从全局模型中选择的一组图形模型对象。

13.2 分解全局模型

全局模型能够分解成多个子模型。通过从全局模型中挑选模型对象,产生完成各种功

第13章

带有子模型的工作

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 232: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·219·

能的子模型。把一个全局模型分解成多个子模型,可根据各种标准,如: l 按功能分解(如:帐务、销售、市场等),它是最常采用的分解标准。 l 按组织单位分解(如:指挥部、子公司等)。 l 按地理区域分解(如:南美、欧洲、中国等)。 子模型还能进一步分解成更小的子模型。图 13-1简要说明了全局模型分解成多个子模

型的过程。

图 13-1

实验 13-1(指导实验) 产生一个子模型

描述 跟随指导操作,从全局数据模型中产生一个子模型。

步骤 1.在 DataArchitect的 CDM工作区中,打开 PUBS2INT.CDM全局模型。 2.选择对象 Title、Publisher、Roysched,它们的联系被包含在子模型中。(按下 SHIFT键,单击对象,能够选择多个对象)。

3.选择 Dictionary→Submodel→New,打开一个窗口,该窗口带有新产生的子模型,如图 13-2所示。

图 13-2

全局模型

子模型 子模型 子模型 子模型

子模型 子模型 子模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 233: Power Designer数据库建模技术

·220· PowerDesigner 数据库建模技术

4.选择 Dictionary→Model Properties,打开“Model Properties”窗口(图 13-3),键入模型特性的项目,然后单击“OK”。

图 13-3

5.选择 File→Close,关闭子模型工作区,返回到全局模型工作区。 6.重复步骤 2~5,产生第二个子模型:Author_submodel(包括 Author,Title,Publisher三个实体以及这些实体间的联系)。

7.重复步骤 2~5,产生第三个子模型:Store_submodel(包括 Sales person、Customer Representative、Store三个实体以及这些实体间的联系)。

实验 13-2(指导实验) 打开一个子模型

描述 跟随指导操作,从全局模型中打开一个子模型。

步骤 1.在 DataArchitect 中打开 PUBS2INT.CDM 全局模型,选择 Dictionary→Submodel→

Open,打开“Open Submodel”窗口(图 13-4),显示现有子模型列表。

图 13-4

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 234: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·221·

2.单击列表中的一个子模型,然后单击“OK”按钮,打开子模型工作区。 3.选择 Fil→eClose,关掉这个子模型,返回到全局模型工作区。

实验 13-3(指导实验) 打开子模型列表

描述 跟随指导操作,从全局模型中打开子模型列表。

步骤 1.在 DataArchitect 中,打开 PUBS2INT.CDM,选择 Dictionary→Submodel→List of

Submodels,打开“List of Submodels”窗口(图 13-5),显示一个子模型列表。

图 13-5

2.从列表中选择一个子模型,然后单击“Open”按钮,打开所选择的子模型,浏览这个子模型。

3.选择 File→Close,关闭这个子模型,返回到全局模型窗口。

实验 13-4(指导实验) 删除一个子模型

描述 跟随指导操作,从全局模型中删除一个子模型。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 235: Power Designer数据库建模技术

·222· PowerDesigner 数据库建模技术

步骤 1.从 DataArchitect 中打开 PUBS2INT.CDM,选择 Dictionary→Submodel→List of Submodels,打开“List of Submodels”窗口,显示一个子模型列表,如图 13-6

所示)。 2.在“List of Submodels”窗口中选择 Author_submodel。 3.单击“Delete”按钮。 4.单击“OK”按钮,返回到全局模型窗口。

图 13-6

注 意: 删除子模型,并没有从全局模型中删除子模型中对象的定义,只是从全局模

型中删除了子模型的定义。

13.2.1 좫뻖쒣탍뫍ퟓ쒣탍훐뗄뛔쿳

一个模型对象能够包含在一个或多个子模型中。不论同一个模型对象的图形符号包含

在多少个子模型中,这个模型对象只有一个定义和一个对象 ID号。

在子模型中产生一个新的模型对象

在子模型中进行设计工作时,最常见的工作是添加一些新的模型对象。添加了新的模

型对象后,这些模型对象的定义也出现在全局模型中。例如:当在子模型中添加一个实体

时,这个实体的定义附加到全局模型中。但是,对象的图形符号不会自动显示在全局模型

中。要使添加的模型对象符号显示在全局模型中,必须通过 Dictionary→Submodel→Update Graphics菜单选项修改全局模型的显示。

调整子模型

定义了一个子模型后,通过下列方法对子模型作调整: l 从子模型中移去对象(全局模型中并没有删除这些对象的符号和定义,只是在子

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 236: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·223·

模型中不出现而已)。 l 把全局模型中的对象增加到子模型中。 l 把对象从一个子模型转移到另一个子模型中。 l 把对象从一个子模型复制到另一个子模型中。

实验 13-5(指导实验) 完善子模型的功能

描述 跟随指导操作,调整 Pub_submodel,以完善子模型的功能(分解 PUBS2INT.CDM全局

模型,得到 Pub_submodel子模型。)

步骤一:改变子模型。 图 13-7是 Pub_submodel子模型。

图 13-7

1.在 Pub_submodel子模型中,产生一个新的实体 Book Category,它们之间的联系基于下面的规则:

(1) 一个 Title必须被一个并且仅被一个 Book Category所描述。 (2) 一种 Book category能描述零本或多个 Title。

2.关闭Pub_submodel子模型,返回到PUBS2INT全局模型工作区,能看到Book Category实体吗?通过 Dictionary→List of Entities,打开“List of Entities”窗口,能看到 Book Category吗?注意这个实体的“Display”检查框未选中。

步骤二:修改全局模型的显示。 修改 PUBS2INT.CDM全局模型的显示,把 Book category符号显示在全局模型中。 1.选择 Dictionary→Submodel→Update Graphics,打开“PowerDesigner—Confirmation”窗口。

2.单击“是(Y)”按钮,在子模型中添加的对象全部显示在全局模型中。

注 意: 如果只想修改模型中实体间联系的变化,选择“否(N)”按钮。显示的结果

包含所有新的、修改了的对象之间的联系。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 237: Power Designer数据库建模技术

·224· PowerDesigner 数据库建模技术

步骤三:从相关模型向子模型中添加对象。 把 PUBS2INT.CDM全局模型中的 Author实体增加到 Pub_submodel子模型中。 1.选择 Dictionary→Submodel→Add/Remove Object, 打开“Select Objects”窗口(图

13-8)。

图 13-8

2.从“Available Objects”下拉列表框中,选择“Entity”,再从“Entity”下面的框中选择“AUTHOR”实体,然后单击“Add>>”按钮。

3.单击“OK”。

注 意: DataArchitect自动包括了 Author/Title之间的联系。

步骤四:把代表实体或联系的图形符号转移到相关的子模型中。 1.先在 Pub_submodel子模型中,产生Wholesaler和 Shelf两个实体。 2.要把 Wholesaler实体从 Pub_submodel 子模型转移到 Store_submodel子模型中,需做如下工作:

(1) 在源子模型(Pub_submodel)中,选择要移动的对象。 (2) 选择 Dictionary→Submodel→Move Symbols,打开“Select the Target Model”窗口 (图 13-9)。 (3) 选择目标子模型(Store_submodel)。

图 13-9

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 238: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·225·

3.单击“OK”。 步骤五:从子模型中移去一个模型对象。

多次精选是模型设计中必不可少的过程。Wholesaler实体不应该被包含在 Pub_submodel子模型中,在这里,我们不谈这个实体是否是系统所需要的。现在,只想从 Pub_submodel子模型中移去Wholesaler实体。

1.选择 Dictionary→Submodel→Add/Remove Object,打开“Select Objects”窗口(图13-10)。

2.从“Available objects”下拉列表框中选择一种模型对象类型,再从“Select objects”列表框中选择想要从子模型中移去的一个或多个对象。

图 13-10

3.单击“Remove《”按钮。要从子模型中移去选择类型的全部对象,单击“Remove All《”按钮。

4.单击“OK”。 5.Wholesaler实体在子模型中消失,但它的定义仍保留在全局模型 PUBS2INT.CDM中(在实体列表中可以看到该实体)。选择 Dictionary→Submodel→Update Graphics,单击“是”按钮,修改 PUBS2INT.CDM全局模型,Shelf和Wholesaler实体在全局模型中显示出来,但子模型中却不显示已移去的Wholesaler对象。

步骤六:把全局模型或子模型中的模型对象符号拷贝到另一个子模型中。 在设计过程中,经常需要把全局模型或子模型中的一个或多个模型对象符号复制到另

一个或多个子模型中。为了实现这个目的,可按下列步骤进行: 1.从 PUBS2INT.CDM工作区中,选择将要拷贝的实体 Order(如果要选择多个模型对象,在按下 SHIFT键的同时,依次单击要选择的对象)。

2.选择 Dictionary→Submodel→Copy Symbols,打开“Select the Target Model”窗口(图13-11)。

3.选择一个目标子模型。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 239: Power Designer数据库建模技术

·226· PowerDesigner 数据库建模技术

4.单击“OK”。

图 13-11

13.2.2 듓쒣탍믲ퟓ쒣탍훐즾돽뛔쿳

从工作区中删除对象

当从模型或子模型的工作区中删除一个模型对象时,可以只删除模型对象的图形符号,

也可以既删除模型对象图形符号也删除该模型对象的定义。这两种情况依赖于删除对象时

的确认选项。 l 当删除模型对象的“Confirm Deletion in the Global Model”窗口出现时,选

择“delete symbols and associated objects”选项,然后单击“OK”按钮,这

个模型对象的图形符号和定义从模型中彻底删除。

l 当删除模型对象的“Confirm Deletion in the Global Model”窗口出现时,选

择“detach symbols”选项,然后单击“OK”按钮,这个模型对象的图形符号被

删除,但它的定义仍保留在全局模型中。

从列表中删除一个对象

从对象列表中删除一个对象时,是否把模型对象的定义和图形符号全部从该模型中删

除,依赖于这个列表是全局模型中的对象列表还是子模型中的对象列表。 l 如果对象列表是全局模型中的对象列表,那么模型对象的定义和图形符号全部从

该模型中删除。

l 如果对象列表是子模型中的对象列表,那么对象的图形符号从该子模型中删除,

但该对象的定义仍然保留在全局模型中。如果在全局模型和其它子模型中包含这

个对象的图形符号,那么该图形符号仍然保留在这些模型中。

注 意: 当从全局模型中删除了一个对象的定义时,对象的图形符号从所有的子模型

中被删除掉。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 240: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·227·

13.3 工程和模型

一个工程可以包含一个或多个全局模型,它提供了一个管理信息系统的整体结构,在

工程实践中通常把一个全局数据模型分解成多个子模型,以便于对模型的管理和为程序员

分配工作量,另外也应该保存不同时期数据模型的多种版本,以便于追溯前期的工作。 图 13-12说明了工程、全局模型及子模型之间的关系。

图 13-12

步骤 定义工程的步骤如下: 1.在 DataArchitect中,选择 Dictionary→Model Properties,打开“Model Properties”窗口。也可以在 MetaWorks 中,选择 Dictionary→List of Projects,打开“List of Projects”窗口,单击“New”按钮,输入 Name、Code、Label的值。

2.在“Definition”页上,键入 Project name和 Project code。 3.单击“OK”按钮。

13.4 数据共享策略

在工程中各个全局模型不能共享数据。为了在整个设计中共享通用的数据集合,应该

在一个全局模型中定义共享数据,并定义对应设计工作的子模型。 为了共享通用的数据集合,并把它们应用到其它全局模型中,先定义共享数据,然后,

在 DataArchitect中,使用合并(Merge)处理,把共享数据传送到其它模型中。

工程

HR.CDMV1.0

HR.CDM V2.0

HR.CDM V1.0

HR.CDM V2.0

子模型 子模型 子模型 子模型 子模型 子模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 241: Power Designer数据库建模技术

·228· PowerDesigner 数据库建模技术

13.4.1 뫏늢쒣탍

合并(Merge)模型的步骤

1.为特定的设计工作建立一个模型文件。 2.把含有共享数据的模型和特定设计的模型合并在一起。这时特定设计的模型文件中包含了共享的数据。

3.在这个特定设计的模型中,再定义其它的模型对象。 合并两个模型(或者两个 CDM,或者两个 PDM)的步骤如下: 1.在 DataArchitect→中,先打开非共享数据的模型文件。 2.选择 FileUtilites→Merge,打开文件选择对话框。 3.选择含有共享数据的模型文件。 4.单击“OK”按钮。

13.4.2 뢽볓쫽뻝뿘훆

版本化和档案化

为了控制 CDM和 PDM的不同版本,能够在“Model Properties”窗口(图 13-13)输入版本(Version)号,也能够使用 PDM窗口的 Database→Archive model菜单对模型文件档案化(Archive)。

版本控制

在“Model Properties”窗口,能够手工修改版本号,以便于跟踪 PDM和 CDM,这种方法在数据共享环境下是特别有用的。

图 13-13

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 242: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·229·

为什么要将 PDM档案化

在一个工程的进展过程中,也许需要修改数据库。在修改数据库之后,必须把 PDM档案化,档案化后的 PDM不能对数据库再进行带数据修改,档案化后的模型与实际数据库中的结构应该相同。

档案化一个 PDM的步骤

1.选择 Database→Archive Model。 2.键入一个以 APM为扩展名的文件名,然后单击“OK”。

修改模型

一个模型档案化后,能够继续作必要的修改。 l 如果完全是物理级的变化,如增加或删除一个索引或视图,则能够在 PDM 中直接

修改。

l 如果在数据特性上影响到基本数据的变化,如在表中增加删除列,增加或删除一

个完整的表,就应该在 CDM中作修改,然后生成一个新的 PDM。

实验 13-6 在模型中建立子模型

描述 本实验在 Library.CDM中定义了三个子模型。 l 人力资源子模型(职工、专业人员、行政人员、图书管理员、知识专家实体以及

这些实体的继承连接关系)。 l 书定单子模型(书、书的复本、作者、出版商以及这些实体间的联系)。

l 书租用子模型(书、书的复本、作者、出版商以及这些实体间的联系)。

定义了这些子模型后对它们进行调整,以完善子模型的功能。

步骤一:产生一个子模型。 1.在 DataArchitect的 CDM工作区中,打开全局模型。 2.选择包含人力资源子模型的对象。 3.选择 Dictionary→Submodel→New,打开一个窗口,该窗口带有新产生的子模型。 4.选择 Dictionary→Model properties,打开“Model Properties”窗口,键入该子模型的特性。

5.选择 File→Close,关闭子模型窗口,返回到全局模型工作区窗口。 6.重复 2-5步制作书定单子模型。 7.重复 2-5步制作书租用子模型。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 243: Power Designer数据库建模技术

·230· PowerDesigner 数据库建模技术

步骤二:删除一个子模型。 1.选择 DictionarySubmodel→List of Submodels,显示了一个子模型列表。 2.单击人力资源子模型。 3.单击“Delete”按钮。 4.单击“OK”。

注 意: 删除一个子模型并不真正从全局模型中删除它的对象,只是从全局模型中删

除了子模型的定义。

步骤三:调整子模型,以完善子模型的功能。 图 13-14是本步骤调整后的 Library.CDM子模型:

图 13-14

1.在书定单子模型中产生一个新的实体——Author Category(一个作者可以被零个或一个作者的分类描述,一个作者的分类能够描述零个或多个作者)。

2.查看 Library.CDM 全局模型,看到作者分类(Author Category)实体了吗?在Library.CDM 中查看一下实体列表,看到作者分类(Author Category)实体了吗?在下一步骤中,通过 Dictionay→Submodel→Update Graphics菜单修改 Library.CDM模型,以显示作者分类(Author Category)的图形符号。

步骤四:修改模型对象的显示。 1.从 Library.CDM模型中选择 Dictionary→Submodel→Update Graphics。 2.当确认框出现时,单击“是”按钮。

注 意: 如果只想修改相关模型中反映“联系”变化的显示,在确认框中单击“否”,

显示的结果中包含了在模型中存在的所有新的和修改了的对象之间的联系。

步骤五:为子模型增加对象。 1.选择 Dictionary→Submodel→Add/Remove Objects,打开“Select Objects”窗口。 2.从“Available Objects”下拉列表框中选择“Professional”实体。 3.单击“Add”按钮(要在子模型中增加全部对象,单击“Add All”按钮)。 4.单击“OK”。

注 意: DataArchitect自动包含书、复制品、定单、专业人员和复制品之间的联系。

步骤六:把模型对象的图形符号转移到相关的子模型中。 1.在书定单子模型中,选择“Professional”实体。 2.选择 Dictionary→Submodel→Move Symbols,打开“Select the Target Model”窗口。 3.选择书租用子模型。 4.单击“OK”。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 244: Power Designer数据库建模技术

第 13章 常有子模型的工作 ·231·

5.返回到书定单子模型中,注意到“Professional”实体消失了。 步骤七:从子模型中移去对象。

1.在书租用子模型中,选择 Dictionary→Submodel→Add/Remove Objects,打开“Select Objects”窗口。

2.从子模型中选择要移去的“Copy”实体。单击“Remove”按钮(要从子模型中移去所选类型的全部对象,单击“Remove all”按钮)。

3.单击“OK”。

步骤八:把图形符号拷贝到相关的子模型中。 1.从书定单子模型中,选中“Copy”和“Professional”实体。 2.选择 DictionarySubmodel→Copy Symbols,打开“Select a Target Model”窗口。 3.选择书租用子模型。 4.单击“OK”。 5.这时“Copy”和“Professional”实体出现在两个子模型中。

킡 뷡

l CDM和 PDM都能够分解成子模型。通过从全局模型中挑选模型对象,可以把一个模

型分解成多个子模型。子模型的划分是按不同的分类方法确定的,如:功能、组

织机构、地理范围等。子模型本身也能进一步分解成多个子模型。

l 子模型只是从全局模型中挑选的某些模型对象图形符号的集合,事实上,子模型

本身并不真正存在,只是全局模型的一个视图。

l 同一个模型文件的多个子模型中能够包含一个或多个相同的对象。

l 对象显示在每一个包含它的子模型中,同时也出现在全局模型中。不管同一个对

象在子模型中出现了多少次,它只有一个对象定义和一个对象 ID号。

l 当一个对象在子模型中产生时,它的定义也出现在全局模型中。对象的图形符号

不会自动显示在全局模型中,必须通过 Dictionary→Submodel→Update Graphics

修改全局模型,使其包含新产生的对象,这样才能在全局模型中显示这些新增加

的模型对象。

l 定义子模型后,可能需要从子模型中移去一些对象,也可能需要从全局模型中添

加一些对象,还有可能需要把一些对象从一个子模型中转移到另一个子模型中。

l 可以为子模型增加对象,也可以把对象从一个子模型转移到另一个子模型中,还

可以从子模型中移去模型对象符号。

l 如果从子模型中删除一个对象时,选择了“Delete Symbol and Associated Objects

from Submodel”选项,那么,模型对象的图形符号和对象定义从这个模型中彻底

删除。如果从子模型中删除一个对象时,选择了“Detach symbol only”选项,

那么,只是从模型中删除模型对象的图形符号,它的定义仍保留在全局模型中。

l 如果一个对象从全局模型的对象列表中删除,那么,对象符号和对象定义从全局

模型中彻底删除。如果一个对象从子模型对象列表中删除,那么只从子模型中删

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 245: Power Designer数据库建模技术

·232· PowerDesigner 数据库建模技术

除了这个对象的图形符号,它的定义仍保留在全局模型中。

l 一个工程可包含多个模型,工程为管理信息系统的多个 CDM 和 PDM 提供了一个全

局框架。通过模型的版本对模型进行版本控制。

쮼 뾼 쳢

1. 解释子模型和全局模型之间的关系。 2. 子模型能够用什么方法修改?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 246: Power Designer数据库建模技术

本章主要介绍 MetaWorks 的使用方法,通过 MetaWorks 可以对设计团队中每个队员的

模型数据进行控制,在 MetaWorks 的控制下设计团队既能协调工作又能共享模型数据,是

进行团队开发必不可少的工具。学完本章后,能够达到如下目的:

l 了解团队工作在工程中的作用;

l 产生 MetaWorks用户账号;

l 产生 MetaWorks组;

l 产生 MetaWorks用户口令;

l 了解固化细节和固化冲突。

14.1 团队工作和劳动划分

对于一个复杂的大型工程,仅靠一个人是难以及时实现的,在这种情况下只能把工作

任务分配给团队中的每个成员去完成。 工作的划分要能够使团队成员在各自的专业领域内工作,并保证在给定的时间期限内

完成各自的任务。

工程设计中的角色及其作用

工程设计中的角色及其作用如表达 14.1所示。 表 14.1

角 色 作 用

管理员(Administrator)

产生和删除MetaWorks字典;产生用户组和用户口令;阻止用户使用数据库;

产生和删除工程;为工程人员分配工作

任务

工程管理人员(Project Manager)

管理全局数据;固化全局模型和子模

型;产生和删除全局模型和子模型;修

改全局模型和子模型的特性;为用户分

配全局模型和子模型;管理用户组,管

理数据冲突

第14章

使用 MetaWorks进行团队控制

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 247: Power Designer数据库建模技术

·234· PowerDesigner 数据库建模技术

续表 角 色 作 用

设计者(Designer) 产生和删除子模型;修改全局模型和子

模型的特性;提取和固化全局模型与子

模型;管理数据冲突

14.2 MetaWorks工程概述

MetaWorks有助于对全局应用提供一个结构,这个结构是由工程、模型和子模型组成的。无论是团队工作还是独立工作,MetaWorks都能帮助设计者管理数据。

工 程

一个应用被划分成多个工程。一个工程是一个全局的框架,在工程中能够存储模型,

也能够包含很多 CDM、PDM和仓库结构模型(WAM)、流程分析模型(PAM),还能够包含它们的多个子模型和多个版本。

模 型

每一个模型包含与特定应用有关的数据,一个模型常常被划分成多个子模型。

子模型

子模型包含模型中的一部分数据。设计者对一个或多个子模型负有责任。

MetaWorks的特征

MetaWorks 支持团队数据建模和数据库设计,这个工作是通过共享的 MetaWorks 字典和管理共享的工具实现的。

使用MetaWorks字典能够完成如下工作: l 为MetaWorks字典产生用户账号。 l 在MetaWorks字典中产生模型和子模型,并把它们分配给一些用户。 l 锁定和解开模型。 l 提取和固化模型与子模型。 l 比较对象定义和管理数据冲突。 l 查询MetaWorks字典。 l 在MetaWorks字典中修改对象。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 248: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·235·

14.3 产生 MetaWorks用户账号

MetaWorks 用户账号是用户访问 MetaWorks 字典的第一道的关口,拥有了用户账号才有可能访问MetaWorks字典。

管理员为需要访问 MetaWorks 字典的每一个团队队员产生一个用户账号。为了产生用户账号,管理员必须完成下列工作:

1.以 ADMIN的身份连接到MetaWorks字典上。 2.从“List of Users”对话框中,单击“New”,键入新的用户名称。 3.键入所需的用户信息,单击“OK”。 4.重复步骤 2和 3,产生所有的用户。

实验 14-1(指导实验) 产生单用户账号

描述 跟随指导操作,产生单用户账号。

步骤 1.从MetaWorks菜单中,选择 Administrator→List of Users。 2.以 ADMIN身份连接到MetaWorks字典,然后打开“List of Users”窗口(图 14-1)。

图 14-1

3.单击“New”按钮,在新行的开始处出现一个箭头(图 14-2)。 4.在“User name”列键入该用户的别名(最大 30个字符),这个名称在连接对话框中使用。

5.在“Full name”列中键入用户的全称。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 249: Power Designer数据库建模技术

·236· PowerDesigner 数据库建模技术

图 14-2

6.在“Comment”域中键入注释。 7.选择“Administrator”检查框,产生一个管理员账号。这种用户账号有和管理员 ADMIN相同的权限。不要选择“Locked”检查框,选择该检查框锁定了这个用户账号,拒绝该用户连接到MetaWorks字典上。

8.单击“OK”。

实验 14-2(指导实验) 产生口令

描述 跟随指导,产生口令。

步骤 1.在“List of Users”对话框(图 14-3)中,单击“Password”按钮。

图 14-3

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 250: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·237·

2.打开“Enter a Password”窗口(图 14-4),在“Password”域中键入口令。

图 14-4

3.在“Confirmation”框中再次键入口令,以确认口令的有效性。 4.单击“OK”。

实验 14-3(指导实验) 修改口令

描述 跟随指导,修改口令。

步骤 1.选择 Administration→Password,打开“Password Change”窗口(图 14-5)。

图 14-5

2.在“Old password”域中键入旧口令。 3.在“New password”域中键入新口令。 4.在“Password confirmation”域中再次键入新口令,以确认新口令的有效性。 5.单击“OK”。

14.4 产生组

组是在工程、模型和子模型中拥有相同权限的一组用户的集合。建立组后易于同时给

几个用户授权。能够为字典中的所有工程或指定的工程、模型、子模型定义组。一个组能

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 251: Power Designer数据库建模技术

·238· PowerDesigner 数据库建模技术

够有下面的成员: l 多个用户; l 组管理员,组管理员能够为组添加用户,也能从组中删除用户; l 其它组。

产生一个组

MetaWorks 自动产生一个公共组(Public)。新产生的任何一个用户账号都被缺省指配给 Public组。

产生组的步骤

1.选择 Administration→List of Groups,打开“List of Groups”窗口。 2.单击“New”按钮,在空行的开始处显示箭头。 3.键入组信息(名称、全名、注释)。 4.单击“OK”。

实验 14-4(指导实验) 产生组

描述 跟随指导操作,产生组。

步骤 1.选择 Administration→List of Groups,打开“List of Groups”窗口(图 14-6)。

图 14-6

2.单击“New”按钮,在空行的开始处显示一个箭头(图 14-7)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 252: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·239·

3.在“Name”列键入该用户的名称(最大 30个字符)。 4.在“Full name”列中键入该用户的全称(最大 30个字符)。

图 14-7

5.在“Comment”域中键入关于组的注释说明(最大 254个字符),然后单击“OK”,如图 14-8所示。

图 14-8

在组中添加一个用户或一个组

只有管理员或组管理员才能改变组中的成员。在组中添加一个用户或一个组的步骤 如下:

1.从“List of Groups”窗口中选择一个组。 2.在组对话框中单击“Members”按钮。 3.打开一个用户或组的列表。 4.在列表中选择用户或组。 5.(可选项)选择“Manager”检查框,使其成为组管理员。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 253: Power Designer数据库建模技术

·240· PowerDesigner 数据库建模技术

实验 14-5(指导实验) 在组中添加用户或组

描述 跟随指导操作,产生一个组。

步骤 1.选择 Administration→List of Groups,打开“List of Groups”窗口(图 14-9)。 2.从“List of Groups”窗口选择一个组(例如 HR)。

图 14-9

3.单击“Members”按钮,打开“Members of the group HR”窗口(图 14-10)。

图 14-10

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 254: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·241·

4.单击“Add”按钮,打开用户或组列表(图 14-11)。 5.从列表中选择用户或组。

图 14-11

6.单击“OK”,选择的用户或组出现在“Members of the group HR”窗口(图 14-12)。

图 14-12

7.(可选项)选择“Manager”检查框,使这个用户成为组管理员。

注 意: 一个组的管理员能从组中增加和删除用户,一个组中可以有多个管理员。

8.在每一个对话框中单击“OK”。

14.5 给用户和组授权

表 14.2 列出了各种权限的类型,工程、模型、子模型中的这些权限能够指定给一个或多个用户和组。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 255: Power Designer数据库建模技术

·242· PowerDesigner 数据库建模技术

表 14.2

权 限 含 义 读(Read) 只读(Read only) 提取(Extract) 读和提取(Read and extract)

读和提取(Read and extract) 修改(Modify)、固化(Consolidate)、剪切/拷贝/粘贴(cut/copy/paste) 写(Write) 在模型中产生子模型(Create a submodel in a model) 读(Read),提取(extract),写(write) 在工程中产生一个模型或在模型中产生一个子模型 管理(Manage) 授权

分配权限

为了给工程、模型或子模型分配权限,进行如下操作: 1.在 List of Projects、List of Models或 List of Submodels窗口,选择“Rights”按钮,打开“Rights on the xxxx”窗口。

2.从列表框中选择一个用户或组。 3.从“Rights”下拉列表框中选择适当的权限(Read、Extract、Write、Manage)。

实验 14-6(指导实验) 给用户和组授权

描述 跟随指导,给用户和组授权。

步骤 1.选择 Dictionary→List of Projects、List of Models或 List of Submodels,打开对应的

List of Projects、List of Models或 List of Submodel窗口(类似于图 14-13中的窗口)。 2.选择工程(Project)、模型(Model)或子模型(Submodel),在选择的项目前出现一个箭头。

图 14-13

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 256: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·243·

3.单击“Rights”按钮,打开“Rights on the Project PowerDesigner Class”窗口(图 14-14)。

图 14-14

4.单击“Add”按钮,打开“Users List”窗口(图 14-15)。 5.从列表中选择用户或组。 6.单击“OK”,用户或组出现在权限列表中。 7.在“Rights”下拉列表框中,为每一个用户或用户组选择一个权限,选择的权限出现在“Rights on the Project PowerDesigner Class”窗口的列表框中,如图 14-16所示。

图 14-15 图 14-16 8.单击“OK”。

定义缺省的工程权限

当产生一个新的工程时,系统自动为这个工程指定一个用户权限,它是缺省的工程权

限。要指定缺省的工程权限可在产生工程前进行设置。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 257: Power Designer数据库建模技术

·244· PowerDesigner 数据库建模技术

步骤 1.择 Options→Default Project Rights,显示权限列表。在首次执行这个任务时,这个窗口中的列表是空的,如图 14-17所示。

图 14-17

2.单击“Add”按钮打开“Users List”窗口(图 14-18)。

图 14-18

3.选择一个用户或组。 4.单击“OK”,用户或组出现在列表中。 5.在权限下拉列表框中选择用户或组的权限(图 14-19),然后单击“OK”。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 258: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·245·

图 14-19

14.6 固化过程中的有关问题

对模型文件进行固化(Consolidate)时,MetaWorks完成如下工作: l 把 CDM或 PDM文件中的模型数据同字典中的模型数据作比较。 l 检测固化时的冲突问题。 l 报告用户正在执行的固化工作。 l 提供交互式的固化处理过程。 固化中出现的问题是由下面原因引起的: l 固化冲突; l 用户权限不够; l 模型代码重复。 有两种类型的固化冲突: l 删除冲突; l 修改冲突。 由于用户的权限是由 MetaWorks指定的,而不是由 DataArchitect指定的,因此所有的

模型和子模型是潜在的固化冲突源。如果这些子模型的数据被多个设计者共用、并且这些

设计者有修改模型的权限时,冲突问题更容易发生。

14.6.1 즾돽돥춻

所谓删除冲突是指共享的数据模型对象在模型文件中存在,而在 MetaWorks 字典中已

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 259: Power Designer数据库建模技术

·246· PowerDesigner 数据库建模技术

被删除,当固化这个模型文件时 MetaWorks 提示用户发生了删除冲突,系统提示用户重新产生已经删除了的对象。

MetaWorks提供了如下(表 14.3)的删除冲突选项: 表 14.3

选 项 描 述

Not to all 在MetaWorks字典中保护所有删除了的共享对象

Yes to all 在MetaWorks字典中重新生成删除了的共享对象的定义

Cancel 终止固化过程

No 保护删除的对象定义不进入MetaWorks字典

Yes 在MetaWorks字典中重新生成对象的定义

14.6.2 탞룄돥춻

当在两份提取同一个模型的文件中修改模型后进行固化时,就会发生修改冲突。当用

户固化他们的模型时,打开如下的“Update Confirmation”窗口(图 14-20)。

图 14-20

修改冲突选项

表 14.4中列出了修改冲突的全部选项及其含义。 表 14.4

选 项 描 述 Update this object in the

dictionary 用被固化的文件中的对象重写 MetaWorks 字典中的对象定义。这个选项允许执行固化的用户观察引起冲突的每一个对象

Update every object in the dictionary

用被固化的文件中的对象定义重写 MetaWorks 字典中所有被修改的对象定义。如果预先知道旧的 CDM和 PDM文件包含正确的或最新数据,可以选择这个选项

Don't update this object in the dictionary 在MetaWorks字典中不修改这个对象定义

D'ont update any object in the dictionary 在MetaWorks字典中不修改所有的对象定义

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 260: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·247·

在“Update Confirmation”窗口中,若选择“Display”,则打开一个窗口,并显示MetaWorks字典中和模型文件中不同的对象;选择“Cancel”,终止固化过程。

14.6.3 웤쯼만뮯돥춻

权限不够

一个模型只能由一个MetaWorks用户固化。这个用户必须拥有管理员(Administrator)身份,或者对模型拥有Write权限。

当用户拥有下面两个权限之一时,MetaWorks提示用户没有足够的权限执行固化并终止处理过程。

l 只读(Read)权限。 l 这个用户既不是模型的主人,也不是工程的主人。

固化异常

如果把一个模型文件固化为字典中已存在的另一个模型时,MetaWorks提示用户有异常发生。当异常发生后可以产生三种结果,表 14.5是选择三种选项后的结果。

表 14.5

选 项 结 果

是(Y) 把字典中的模型提取出来合并到正在固化的文

件中

否(N) 把正在固化的模型文件追加到在字典中

取消 放弃固化过程

14.7 模型加锁

锁定全局模型参数

锁定全局模型(Lock entire model)参数是提取过程的一个选项。选择了该选项,则在提取处理期间,就在字典中锁定了这个模型。这种预防措施使多个设计者在模型锁定期间

不能修改这个模型。事实上,模型加锁是在模型数据上安放了一个锁,设计者仍然能够通

过“提取”的方法从锁定的模型中读取数据,但是,他们不能通过固化的方法修改锁定的

模型。一个模型能够被下列用户锁定: l 拥有管理权限的用户; l 模型的主人(MetaWorks的用户名被定义成模型的主人); l 包含该模型的工程主人(MetaWorks的用户名被定义成工程的主人)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 261: Power Designer数据库建模技术

·248· PowerDesigner 数据库建模技术

模型自动加锁

缺省状态下“Lock entire model”检查框没有选择,但能通过设置一个“Extraction”选项,使其在缺省状态下自动加锁。选择 Options→Extraction,打开“Extraction Options”窗口(图 14-21),选择“Automatic lock”检查框,并单击“OK”按钮。

图 14-21

为模型解锁

一个模型仅能被下列用户解锁: l 一个拥有 Administrator身份的用户; l 申请锁定这个模型的MetaWorks用户。

数据模型解锁步骤

1.在MetaWorks中选择 Dictionary→Consolidation菜单,打开“Consolidate File”窗口。 2.选择一个要固化的文件后,单击“OK”按钮,打开“Model consolidation”对话框。 3.选择要固化的文件,然后单击“OK”按钮,打开“Model Consolidation”窗口(如果未连接到字典数据库上,弹出“Connect”对话框,填入适当的用户名和口令,连接到字典数据库上)。

4.在这个窗口核对下列各项: l Local组框中的 Type和 Name; l Project组框中的 Name和 Code; l Model组框中的 Name和 Code; l 在Model/Submodel列表框中选择[Main model]。

5.在“Consolidation model”组框中,选择“Consolidate”收音机按钮。 6.在“User”框中键入用户名,或单击框后面的“?”按钮,从“Users List”窗口中选择一个MetaWorks用户。

7.选择“Unlock model”检查框。 8.单击“OK”。

注 意: 当 MetaWorks用户在提取模型时没有锁定权限或模型没有被锁定时,“Unlock

model”检查框是灰色的。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 262: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·249·

实验 14-7 MetaWorks中的团队工作

描述 在这个实验中,可以产生一个单用户账号;产生并修改口令;产生一个组;在这个组

中包括一个用户或组;为工程定义缺省权限。

步骤一:产生单用户账号。 1.选择 Administration→List of Users。 2.单击“New”。 3.在“User name”列中键入该用户的名称。 4.在“Full name”列中键入用户的全名。 5.在“Comment”域中键入该用户的注释。 6.(可选项)选择“Administrator”检查框,产生一个管理员账号,这个账号的用户将与 ADMIN用户拥有相同的权限。

7.(可选项)选择“Locked”检查框,锁定这个用户账号,拒绝这个用户连接到MetaWorks字典上。

8.单击“OK”。

步骤二:产生和修改口令。 1.在“List of Users”窗口,单击“Password”按钮,打开“Enter a Password”窗口。 2.在“Password”框中键入新口令。 3.在“Confirmation”框中键入确认口令。 4.单击“OK”。 5.返回到MetaWorks主窗口,修改1~4步产生的口令。 6.选择 Administration→Password,打开“Password Change”窗口。 7.在“Old password”框中键入旧口令。 8.在“New password”框中键入新口令,在“Password confirmation”框中再次键入新口令,以确认新口令的正确性。

9.单击“OK”。 步骤三:产生一个组。

1.选择 Administration→List of Groups,打开“List of Groups”窗口。 2.单击“New”按钮。 3.在“Name”列中键入一个用户组名(最长 30个字符)。 4.在“Full name”列中键入该用户组的全称(最长 30个字符)。 5.在“Comment”框中键入该用户组的注释信息(最长 254个字符),单击“Members”按钮,可以为该用户组添加用户账号

6.单击“OK”按钮。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 263: Power Designer数据库建模技术

·250· PowerDesigner 数据库建模技术

步骤四:在用户组中包含一个用户或组。 1.选择 Administration→List of Groups,打开“List of Groups”窗口。 2.从列表中选择一个用户组。 3.单击“Members”按钮。 4.单击“Add”按钮,打开“Users List”窗口。 5.从列表中选择用户或组。 6.单击“OK”。 7.(可选项)选择“Manager”检查框,让这个用户管理这个组。 8.单击“OK”按钮。

步骤五:定义缺省的工程权限。 1.选择 Options→Default Project Rights,打开“Default Project Right”窗口。 2.单击“Add”按钮,打开“Users List”窗口。 3.选择用户或组。 4.单击“OK”。 5.在“Rights”下拉列表框中为用户或组选择权限。 6.单击“OK”。

킡 뷡

l MetaWorks安装后自动产生一个预定义的管理员,这个管理员的用户名称是 ADMIN。

ADMIN是超级用户,它拥有最高的权限。开始使用 MetaWorks时可使用这个用户账

号产生其它用户账号(包括新的管理员)。

l 要访问 MetaWorks字典,必须拥有一个 MetaWorks用户账号。

l 用户组是在工程、模型、子模型中拥有相同权限的用户集合,建立用户组有利于

对几个用户同时指定相同的权限。

l 只有管理员和组管理员才能改变组中的用户。

l 通过 MetaWorks 中的 Options→Default Project Rights 菜单,能够为工程定义

缺省权限,当产生一个新的工程时,MetaWorks自动为该工程定义缺省权限。

l MetaWorks 字典中,用户的身份是一组运行特殊任务的权限:Administrator、

Locked。

l 固化过程根据所选的固化选项和模型执行固化任务。

l 固化问题是由于固化冲突引起的,引起冲突有两种原因:用户权限不足,模型代

码重复。

l 有两种类型的固化冲突:删除冲突、修改冲突。

l 提取(Extraction)过程中的“Lock entire model”选项,对提取的模型加锁,

使其他设计者在模型锁定期间不能修改已锁定的模型。设计者对于锁定的模型能

通过“提取”的方法读数据,但不能通过固化的方法修改锁定的模型。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 264: Power Designer数据库建模技术

第 14章 使用 MetaWorks进行团队控制 ·251·

쮼 뾼 쳢

1. 当产生MetaWorks用户账号时,为什么必须产生管理员账号? 2. 说明用户组中可能有的成员。 3. 哪一个组是MetaWorks自动产生的? 4. 列出能够指定给用户或组权限的几种类型,并定义与每个级别有关的权限。 5. 锁定模型的影响是什么?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 265: Power Designer数据库建模技术

本章介绍了使用 MetaWorks中的 MetaBrowser菜单观察、比较和修改工程、

模型及模型对象的方法,模型设计团队中的每一个成员能够在不提取模型的前

提下,使用这个工具了解模型中的对象。学完本章后,能够达到如下目的:

l 使用 MetaWorks 中的 MetaBrowser 菜单观察、比较和修改工程、模型和模型

对象;

l 查询 MetaWorks字典。

15.1 管理 MetaWorks字典中的信息

MetaWorks提供了两种途径访问字典中的信息: l 使用 MetaBrowser 的 Information Manager、Multimodel Manager、Comparison

Manager图形工具对MetaWorks字典中的模型数据进行浏览、比较、修改。 l 使用MetaWorks预定义的字典查询(Dictionary Queries)和用户编写的 SQL语句,

检索MetaWorks字典中关于工程、模型和模型对象的信息。

15.2 使用 MetaBrowser

使用MetaBrowser显示和管理MetaWorks字典中的内容。

三种浏览

MetaWorks的MetaBrowser包括下面三个图形浏览器: l 信息管理器(Information Manager) l 多模型管理器(Multimodel Manager) l 比较管理器(Comparison Manager)

两种观察

在每一个浏览中有两种观察方式:

第15章

MetaWorks中的 MetaBrowser

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 266: Power Designer数据库建模技术

第 15章 MetaWorks中的 MetaBrowser ·253·

l 树型观察(Tree view),它提供对MetaWorks字典中对象的全局观察。 l 列表观察(List view),它显示在树型观察窗格中的选择结点上的项目列表。

15.2.1 탅쾢맜샭웷

信息管理器(Information Manager)提供了在MetaWorks字典中对工程、模型及对象的分层观察。能够使用信息管理器增加、删除、修改工程、模型和模型对象。在信息管理器

中,对对象的任何修改被自动提交给MetaWorks字典。

特 征

使用信息管理器能够完成以下工作: l 在全局级观察工程和模型。 l 观察工程、模型、模型对象的详细情况 l 产生、删除、修改模型对象。

打开信息管理器

打开信息管理器的步骤如下: 1.从MetaWorks菜单条,连接到数据库和MetaWorks字典上。 2.选择MetaBrowser→Information Manager。或者在工具条中单击信息管理器图标(一棵树),出现下面的窗口(图 15-1):

图 15-1

信息管理器左边的树型观察显示了 MetaWorks 字典的分层结构,MetaWorks 使用的字典数据库显示在根结点上。分层的级别包括:

l 字典数据库 l 工程 l 模型

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 267: Power Designer数据库建模技术

·254· PowerDesigner 数据库建模技术

l 对象与子模型 信息管理器右边的列表观察显示树上所选结点的局部对象。显示的对象类型依赖于所

选树的结点。对象能够显示成: l 大图标 Large icons(缺省) l 小图标 Small icons l 列表项目 要改变显示方式可从菜单条中选择“View”,并选择显示选项。或者在工具条中单击显

示格式按钮。

信息管理器的作用

能够使用信息管理器做产生模型对象,删除模型对象,修改模型对象的工作。

产生模型对象

要在MetaWorks字典中产生一个模型对象,就应在树型观察上产生一个相应的项目。 要在树型观察中产生一个项目,进行如下操作: 1.从树型观察上选择正确的级别(参照表 15.1)。 2.选择 ltem→New,然后选择一个对象。 3.打开该对象类型的特性窗口。 4.在特性窗口键入对象的定义,并单击“OK”。 产生的对象类型依赖于对象产生时树型观察所在的级别。 表 15.1描述了光标在不同位置时能够产生的对象类型:

表 15.1

光标位置 产生的对象

数据库 工程

工程 CDM、PDM、WAM、PAM

CDM Submodel、business rules、domain、data item、entities、relationships、inheritance links

PDM Submodel、Business rules、User、Abstract Data Type、Domain、Table、Column、Reference、Index、Alternate Key、View

Submodel 除了子模型外,所有的对象都能够在模型级产生

Object 同种类型的其它模型对象

注 意: 在信息管理器中产生了一个对象后,应把在 MetaWorks 字典中直接修改后的

模型提取到模型文件中。当在 DataArchitect中打开模型后,要把 MetaWorks

字典中直接修改后的内容在模型工作区中显示成图形符号,必须在对象列表

窗口选择“Display”选项。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 268: Power Designer数据库建模技术

第 15章 MetaWorks中的 MetaBrowser ·255·

删除模型对象

在信息管理器中,能够从树型观察或列表观察中删除相应的项目。

注 意: 在树型观察中使用删除操作时应特别小心。在一个树型观察中删除了一个对

象时,也就删除了它依赖的所有对象。

为了从树型列表观察中删除对象,应按下列步骤进行: 1.在树型观察中,选择要删除的项目。 2.选择 Item→Delete。 3.确认删除操作。

注 意: 删除操作不可撤消。

修改模型对象

要修改一个对象定义,在树型观察中选择相应的项目,打开它的特性窗口,并作修改。

要在列表观察中修改一个项目,进行如下操作: 1.在树型观察窗格中选择结点。 2.在列表观察窗格中选择要修改的项目。 3.选择 Item→Open。 4.修改项目的特性。 5.单击“OK”。

弹出菜单

在信息管理器中,用鼠标右键单击一个结点或一个项目,会弹出一个菜单,在这个弹

出的菜单中包括对该对象的通用操作。弹出菜单包括如下命令: l New在选择的结点下产生一个新的结点。 l Open展开选择的结点,并显示它在树型观察中的内容。 l Delete删除选择的结点。使用这个命令要特别小心,一旦删除不可恢复 。 l Properties显示选择结点的特性窗口。

15.2.2 뛠쒣탍맜샭웷

多模型管理器(Multimodel Manager)提供了在MetaWorks字典中模型的全局视图,还提供了每个工程中的对象。使用多模型管理器能够修改模型和模型对象,但不能增加和删

除模型及其对象。

特 征

使用多模型管理器能完成下列工作: l 比较所有模型中的对象;

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 269: Power Designer数据库建模技术

·256· PowerDesigner 数据库建模技术

l 修改模型对象的定义。

注 意: 在多模型管理器中不能增加和删除模型及其对象。

打开多模型管理器

打开多模型管理器步骤如下: 1.从MetaWorks菜单中,连接到数据库和数据库字典。 2.选择MetaBrowse→Mulitimodel Manager,或者在工具条中单击多模型管理器工具(两棵树),显示如图 15-2所示。

图 15-2

树型观察

树型观察显示字典中每一个模型类型的依赖对象,其层次关系如下: l MetaWorks字典数据库 l 模型 l 模型对象

列表观察

列表观察显示所选级别对象的详细信息。

比较模型对象

为了比较所选模型中的特定类型的对象,需要展开所选的结点。

修改模型对象

要修改一个对象,先选择这个项目,打开项目的特性窗口,作相应的修改。要打开一

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 270: Power Designer数据库建模技术

第 15章 MetaWorks中的 MetaBrowser ·257·

个项目的特性窗口,进行如下操作: 1.在树型观察中,选择所需的对象类型,打开相应的列表观察。 2.在列表观察中选择想要修改的模型对象。 3.选择 Item→Properties,或者双击这个列表对象。 4.修改这个对象的特性。 5.单击“OK”。

15.2.3 뇈뷏맜샭웷

比较管理器(Comparison Manager)用来比较同种类型的两个模型之间的不同,比较管理器能够生成两个模型不同点的报告。

使用比较管理器可以完成下列工作: l 为合并操作准备模型; l 为更名或版本的目的,确定类似模型的不同内容。

打开比较管理器

打开比较管理器步骤如下: 1.从MetaWorks菜单条中,连接到数据库和MetaWorks字典。 2.选择MetaBrowser→Comparison Manager(图 15-3)。或者在工具条中单击比较管理器工具图标(多棵树)。

图 15-3

3.在打开的“New Comparison”对话框(图 15-4)中,选择“Model Selection”页,再选择模型的类型和两个要比较的模型。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 271: Power Designer数据库建模技术

·258· PowerDesigner 数据库建模技术

图 15-4

4.单击“OK”按钮,“Comparison Manager”对话框显示两个模型之间的不同,通过改变文件夹图标,观察每一种对象类型的不同,有不同点的对象前面有一个惊叹号,

如图 15-5所示。所选对象的特性显示在对话框下面的区域中。

图 15-5

5.从对象分类级到对象级找到对象之间的不同,如图 15-6,并在对象内部分析它们的不同。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 272: Power Designer数据库建模技术

第 15章 MetaWorks中的 MetaBrowser ·259·

图 15-6

分阶段比较

MetaWorks对模型进行比较是分阶段进行的。首先在对象类型级比较模型,然后再比较每一个对象,最后比较每一个对象的依赖对象。这种方法的优点是在比较期间,单击任一

对象分类,在比较过程中切换到所选对象的分类上并开始比较。例如:假如我们只想比较

子模型的不同,这时不必等待前面的几个对象类型都比较完,就能直接进行比较。

图 标

每一个对象分类、对象和依赖对象的图标表示比较过程的进展。在下面的例子中,问

号表示在这个级别的比较还没有进行,感叹号表示比较已经发生,并发现它们之间有不同,

如图 15-7所示。

图 15-7

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 273: Power Designer数据库建模技术

·260· PowerDesigner 数据库建模技术

打印一个比较报告

选择 Comparison→Print,打印比较结果。当打印比较结果时不能精确地打印窗口的内容,只能打印两个模型之间的不同。打印文本的标题是对象的类型,如果两个对象之间有

某种不同,这些不同显示在对象类型的下面。

停止比较或开始一个新的比较

在比较过程中可以停止一个比较,或当前比较完成后比较两个其它模型。在“Comparison Manager”对话框中,选择 Comparison→New,“New Comparison”窗口打开。

15.3 查询字典

可通过下列方法访问MetaWorks字典: l 预定义查询。MetaWorks 把这些查询存放在 InfoMaker 的库文件中,文件名为

QUERY.PBL。 l 预定义查询。MetaWorks把这些查询放在 QUERY.WRI文件中。 l 用户自定义查询。这些查询是由用户根据自己的查询要求编写的 SQL 语句,用来

直接在MetaWorks字典中查询模型数据。

预定义查询

能够使用预定义查询检索MetaWorks字典中的 CDM、PDM、WAM和 PAM模型数据,使用这些查询,能够列出使用MetaBrowser不能查询到的对象。例如:

l 继承连接(Inheritance) l 参照完整性(reference) l 使用特定域的数据项 l 模型中表的主键 l 实体间的联系 l 已更名的列 另外一些查询与模型管理概念有关,如用户、工程、权限等。

用户自定义查询

用户定义查询对于产生 CDM 和 PDM 信息非常有用,CDM 和 PDM 没有提供通过

MetaBrowser或预定义查询检索的功能,例如查询能够显示: l 模型中实体的全部注释,从这些注释中能够了解信息系统的解决方案; l 统计 PowerDesigner用户的名称。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 274: Power Designer数据库建模技术

第 15章 MetaWorks中的 MetaBrowser ·261·

注 意: 不要企图使用 SQL 语句修改 MetaWorks 字典中的模型数据,使用这种方法会

使 MetaWorks 字典发生一系列的错误。应该使用 PowerDesigner 的界面来完

成对 MetaWorks字典的修改。

15.3.1 쪹폃 InfoMaker닩톯MetaWorksퟖ뗤

InfoMaker通过不同的画笔界面与用户打交道,InfoMaker画笔包括如下内容: l 数据库画笔(产生一个连接数据库的描述文件) l 环境画笔(打开 QUERY.PBL) l 查询画笔(修改查询结果) l 报告画笔(生成格式化文档)

15.3.2 쪹폃QUERY.WRI닩톯MetaWorksퟖ뗤

能够在 QUERY.PBL和 QUERY.WRI中找到一个预定义的有效的查询,它是一个由 SQL语句组成的文件。能够浏览这个文件,这些预定义的查询文件缺省安装在 C:\Program Files\Powersoft\PowerDesigner 6\Queries目录中,为了使用这些预定义的查询检索字典,必须使用 SQL的解释执行器,这个执行器将在下节中予以说明。

15.3.3 SQL뷢쫍횴탐웷

必须使用 SQL解释执行器,才能浏览MetaWorks字典数据库中的模型数据。 l SQL解释执行器是包括在 Sybase SQL Anywhere授权版本内的产品。 l 如果没有使用 Sybase SQL Anywhere产生字典,必须使用特定的 RDBMS的 SQL

解释执行器。

使用 Sybase SQL Anywhere的交互式 SQL解释执行器

要开始 Sybase SQL Anywhere的交互式 SQL解释执行器,进行如下操作: 1.选择 Administration→SQL Interpreter。 起初,ISQL没有连接到数据库,所以要开始 SQL解释执行器必须先连接到数据库上。通过选择可执行文件 ISQL.EXE,打开“Interactive SQL Logon”注册窗口。

2.在“User ID”和“Password”框中键入正确的用户名和口令。必须使用和 RDBMS连接对话框中相同的 User ID和 Password。

3.单击“OK”,打开“Interactive SQL”窗口。 ISQL窗口被水平划分成如下三个窗格: l 数据(Data)区,用来浏览查询结果。 l 统计(Statistics)区,用来检查查询的性能。 l 命令(Command)区,用来键入 ISQL命令。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 275: Power Designer数据库建模技术

·262· PowerDesigner 数据库建模技术

在 ISQL中执行标准查询

在“Interactive SQL”窗口,能够从标准查询列表中选择需要的查询。 1.在资源管理器中查找到 QUERY.WRI文件。 2.用文本编辑器打开 QUERY.WRI文件。 3.选择想要执行的 SQL语句查询块。 4.从菜单中选择 Edit→Copy,也可以在 ISQL命令窗格键入查询。

注 意: 能够同时键入几个命令行,命令行之间用分号(;)隔开。但是,如果键入了

很多语句,则不能一句接一句地执行命令窗格中的内容。

5.从菜单中选择 Command→Execute,也可以在窗口上单击“Execute”按钮。

实验 15-1 MetaBrowser和查询

描述

使用MetaWorks的比较管理器和 QUERY.WRI观察前面实验中的结果。 l 使用MetaWorks比较管理器比较 SCHLIB.CDM和 LIBRARY.CDM之间的不同。 l 使用 ISQL运行 QUERY.WRI文件中包含的预定义查询语句块。

킡 뷡

l MetaWorks支持两种方法查询MetaWorks字典中的信息: ♦ MetaBrowser是一种观察、比较和修改工程、模型和模型对象的图形工具。 ♦ Dictionary queries是通过预定义查询检索关于工程、模型和模型对象的工具。

l MetaWorks包括三种图形浏览器:信息管理器、多模型管理器、比较管理器。这些浏览器有一个层次结构的用户界面,它和Windows Explorer双窗格十分类似。

l 能够使用信息管理器在全局级观察工程和模型;观察工程、模型和模型对象的详

细内容;产生、删除、修改对象。 l 能够使用多模型管理器检查属于同种类型模型的对象定义。 l 能够使用比较管理器比较同种类型的两个模型,并产生两个模型之间不同点的 报告。 l 能够使用下列方法从MetaWorks字典中查询模型信息:

♦ MetaWorks提供的 QUERY.WRI和 QUERY.PBL中的预定义查询; ♦ 用户自定义查询。

쮼 뾼 쳢

1.MetaWorks提供了两种途径查询字典中的信息,请描述这两种途径。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 276: Power Designer数据库建模技术

第 15章 MetaWorks中的 MetaBrowser ·263·

2.为什么要从MetaWorks字典中检索信息?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 277: Power Designer数据库建模技术

在 PowerDesigner 的 ProcessAnalyst、DataArchitect、Appmodeler 模块中都有

File>Create Report 菜单,通过这个菜单可以为模型生成文档。本章以 DataArchitect中

概念数据模型文档的生成过程为例,介绍如何生成符合特定要求的设计文档,其它模块中

生成文档的方法基本相同。学完本章后,能够达到如下目的:

l 为概念数据模型生成完整的 CDM文档<Full CDM Report>;

l 为概念数据模型生成列表 CDM文档<List CDM Report>;

l 为概念数据模型生成标准 CDM文档<Standard CDM Report>;

l 仿照概念数据模型生成文档的方式生成其它模型的报告。

16.1 概念数据模型生成文档的方法

1.在 CDM工作区中打开一个 CDM模型文件 PUBS2INT.CDM。 2.选择 File→Create Report菜单,打开“Report”窗口(图 16-1)。

图 16-1

3.从列表框中选择<Full CDM Report>、<List CDM Report>、<Standard CDM Report>三种文档类型之一。

第16章

生成模型文档

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 278: Power Designer数据库建模技术

第 16章 生成模型文档 ·265·

4.在 Selection 组框中选择“All”单选按钮,表示所有的模型对象都生成文档。如果希望在文档中只生成特殊模型对象的文档,选择“List”单选按钮,这时 List 单选按钮后的“…”按钮变成有效按钮,单击这个按钮,打开“Report Selection”窗口(图16-2)。

图 16-2

5.在Models选项页的“Available models”列表框中选择<Global Model>,然后单击“Add”按钮,在“Selected models”列表框中出现<Global Model>。然后单击“Objects”页(图 16-3)。

图 16-3

6.从 Object type的下拉列表框中可以选择一种对象类型,然后通过“Add”和“Remove”按钮增加和移去文档中的对象。选择好对象后,单击“OK”按钮,返回“Report”窗口(图 16-4)。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 279: Power Designer数据库建模技术

·266· PowerDesigner 数据库建模技术

图 16-4

7.在“Generation file type”下拉列表框中选择生成文档的类型:HTML 或 RTF。在Description组框中是关于该文档的简单描述。

8.选择“Generate”按钮,打开“Generate RTF”窗口(图 16-5),输入 Pubs2Reprot,单击“保存”按钮。

图 16-5

9.系统开始生成文档,最后显示如下窗口(图 16-6),表示成功地生成文档。如果生成的文档是 HTML格式,可以在浏览器下观察;如果生成的文档是 RTF格式,可以在文本编辑器上观察,并可以对文档进行修改。

图 16-6

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 280: Power Designer数据库建模技术

第 16章 生成模型文档 ·267·

16.2 概念数据模型定制文档的生成方法

将上节的第 8步改为选择“Modify”按钮,打开“PowerDesigner DataArchitect”窗口(图 16-7),开始概念数据模型定制文档的生成过程。生成定制文档包括下面的内容:

l 修改文档封面信息; l 为定制文档设置页眉和页脚; l 为定制文档设置概述信息; l 为定制文档项设置生成方式; l 在定制文档中增加或减少生成项目。

图 16-7

16.2.1 탞룄컄떵뗄럢쏦탅쾢

修改文档封面信息的方法如下: 1.用鼠标右键单击“Contents”窗格中的“Template”项,从弹出的菜单中选择“Title

Page”,打开“Title Page”窗口(图 16-8)。选择“No title page”单选按钮时,表示生成的文档没有封面;选择“Include title page”单选按钮时,表示生成的文档有封面。

图 16-8

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 281: Power Designer数据库建模技术

·268· PowerDesigner 数据库建模技术

2.在 Title框中输入文档的封面名称。选择“Frame title”检查框时,表示在封面名称的周围加一个矩形框把封面名称包围起来。选择 Author、Version、Date检查框时表示在封面上要显示作者的姓名、模型的版本号和模型的最后修改日期。选择“Font”按钮可以为封面设计字体、风格和大小。

16.2.2 캪뚨훆컄떵짨훃튳쎼뫍튳뷅

为定制文档设置页眉和页脚的方法如下: 1.选择“Edit→Header and Footer”菜单,打开“Header and Footer”窗口(图 16-9)。

图 16-9

2.在 Header和 Footer页上可以输入页眉和页脚的内容。 3.通过 Fields组框中的下拉列表框和“Insert”按钮,可以在页眉和页脚中插入如下内容:模型名称、模型代码、页号、总页数、系统的当前时间和日期等。通过“Format”按钮,可以为页眉和页脚设置字体、风格和大小。

16.2.3 캪뚨훆컄떵짨훃룅쫶탅쾢

为定制文档设置概述信息的方法如下: 1.选择“Edit→Summary Info”菜单,打开“Summary Info”窗口(图 16-10)。

图 16-10

2.在 Name框中输入报告的名称。 3.在 Author框中输入作者的姓名。 4.在 Version框中输入模型的版本号。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 282: Power Designer数据库建模技术

第 16章 生成模型文档 ·269·

5.在 Description框中输入对模型的简单描述。

16.2.4 캪뚨훆컄떵쿮짨훃짺돉랽쪽

为定制文档项设置生成方式的方法如下: 1.同本节开始的操作方法打开如下的“PowerDesigner DataArchitect”窗口(图 16-11)。该窗口的左窗格中显示了可以在文档中生成的报告对象,右窗格中显示了真正在文

档中要生成的文档内容。

图 16-11

2.在右窗格中用鼠标右键单击将要在文档中生成的文档项目,弹出如图 6-12所示的菜单(图 16-12)。通过这个菜单可以编辑、格式化、剪切、拷贝、粘贴、删除、快速浏览在文档中将要生成的这个对象

(注意不同的文档项目弹出的菜单可能不同)。通过每个弹出菜单的

Edit,可以对文档的显示内容作修改。

16.2.5 퓚뚨훆컄떵훐퓶볓믲복짙짺돉쿮쒿

在定制文档中增加或减少生成项目的方法如下: 1.在“PowerDesigner DataArchitect”窗口的右窗格中,选择要增加文档项目的位置。 2.在左窗格中,选择要增加的文档项目,选择“Edit→Add”菜单,这个文档项目就增加到了生成的文档中。

3.在定制文档的过程中可以反复对文档进行预览。 4.通过上述手段对文档的内容进行反复的修改,直到满意为止。 5.最后通过 Report→Generate菜单项保存定制的文档。

킡 뷡

l 可以为概念数据模型生成完整的 CDM文档<Full CDM Report>。

图 16-12

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 283: Power Designer数据库建模技术

·270· PowerDesigner 数据库建模技术

l 可以为概念数据模型生成列表 CDM文档<List CDM Report>。 l 可以为概念数据模型生成标准 CDM文档<Standard CDM Report>。 l 可以修改文档封面信息。 l 可以为定制文档设置页眉和页脚。 l 可以为定制文档设置概述信息。 l 可以为定制文档项设置生成方式。 l 可以在定制文档中增加或减少生成项目。

쮼 뾼 쳢

1.简述生成模型文档的过程。 2.如何使用 PowerDesigner生成定制的文档? 3.在定制文档中能够对哪些内容进行修改?

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 284: Power Designer数据库建模技术

参考资料 305

参考资料

1. Sybase Inc.,Data Modeling with PowerDesigner,1997.

2. David M, Kroenke , DATABASE PROCESSING Fundamentals,Design,and Implemtation ,

Prentice-Hall,Inc.1995.

3. Sybase Inc.,PowerDesigner Installation Guide,1997.

4. Sybase Inc.,DataArchitect Online User's Guide,1997.

5. Sybase Inc.,Appmodeler Online User's Guide,1997.

6. Sybase Inc.,ProcessAnalyst Online User's Guide,1997.

7. Sybase Inc.,MetaWorks Online User's Guide,1997.

8. Sybase Inc.,Warehouse Architect Online User's Guide,1997.

9. Sybase Inc.,Sybase SQL Anywhere User's Guide,1997.

10. 侯志平主编,《PowerBuilder开发中的数据库设计》,晓通数据库研究所,1998.3。

11. 萨师煊、王珊主编,《数据库系统概论》,高等教育出版社,1990.5。

12. 陶浦洲、李强主编,《SYBAS数据库技术大全》,科技出版社龙门书局,1995。

13. 王珊主编,《SYBASE原理、高级系统管理与性能调优》,中国水利电力出版社,1998.7。

14. 侯志平主编,《珠联璧合—PowerBuilder与数据库开发技术》,北京市晓通网络数据库研究所,1997。

15. [美]Tom Hammergren著,曹增强等译,《数据仓库技术》,中国水利水电出版社,1998.2。

16. 太原金德威技术贸易有限公司软件设计技术资料。

17. 太原导通科技发展有限公司软件设计技术资料。

18. Sybase公司网址http://www.sybase.com最新资料。

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 285: Power Designer数据库建模技术

主要名称缩写中英文对照表 304

主要名称缩写中英文对照表

英文缩写 中文释义

CDM 概念数据模型

PDM 物理数据模型

RDBMS 关系型数据库管理系统

DFD 数据流程图

PAM 流程分析模型

WAM 仓库结构模型

ODBC 开放式数据库互联

OMT 对象建模技术

E-R 实体联系

MIS 管理信息系统

CASE 计算机辅助软件工程

DML 数据操纵语言

DDL 数据定义语言

CDF 摸板定义文件

DEF CDM向 PDM转换的定义文件

API 应用程序接口

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 286: Power Designer数据库建模技术

主要名称缩写中英文对照表 305

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com