Power Designer数据库建模技术
Upcoming SlideShare
Loading in...5
×
 

Power Designer数据库建模技术

on

  • 14,642 views

ddd

ddd

Statistics

Views

Total Views
14,642
Views on SlideShare
14,617
Embed Views
25

Actions

Likes
1
Downloads
214
Comments
0

1 Embed 25

http://www.slideshare.net 25

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Power Designer数据库建模技术 Power Designer数据库建模技术 Presentation Transcript

  • PowerDesigner 数据库建模技术 主 编 白尚旺 副主编 杨肖兵 赵贵根 西安电子科技大学出版社 1999 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 白尚旺简介 白尚旺,现任太原重型机械学院计算机系教师,1997 获西安交通大学计算机 软件硕士学位。主要从事数据库理论的教学与研究工作,发表学术论文 10 余篇。 曾主持设计了 Power2000 NMIS 用电管理等大型应用系统的数据库模型。 杨肖兵简介 杨肖兵,1985 年毕业于太原理工大学计算机系。现任太原金德威公司总经理, 主要从事系统集成与管理信息系统的研究与开发。主要论文有: 《计算机发展与经 济控制论的辨证关系》《财务电算化概论》《用电管理信息系统》等。 、 、 赵贵根简介 赵贵根,1989 年获哈尔滨工业大学硕士学位,现任太原导通科技发展有限公 司总工程师。近年来发表学术论文 5 篇。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 쓚 죝 볲 뷩 本书系统地介绍了使用 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:xdupfxb@pub.xaonline.com 经 销 新华书店 印 刷 印刷厂 版 次 年 月第 版 年 月 第 次印刷 开 本 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
  • 前 言 目前,我国各种应用领域的数据管理趋向计算机化,各行各业的管理信息系统将会变得 像电话一样普及。完善已有的管理信息系统、开发新的管理信息系统已成为数据库技术应用 的一个热点。 开发新的管理信息系统时的首要任务是系统分析人员在与用户充分交流的基础上,设计 出应用系统的数据库模型,包括数据流程图(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
  • 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: goldnway@public.ty.sx.cn、drsoft@public.ty.sx.cn、 whitesal@public.ty.sx.cn 编者 1999 年 10 月 10 日 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 目 录 I 目 录 前 言............................................................................................................................................. Ⅰ 第1章 PowerDesigner 数据库建模环境 .................................................................................... 1 PowerDesigner 对软硬件的要求................................ ................................ ................................ .............1 1.1 硬件要求................................ ................................ ................................ ................................ ......1 1.1.1 软件要求................................ ................................ ................................ ................................ ......2 1.1.2 PowerDesigner 及辅助软件的安装 ................................ ................................ ................................ .........2 1.2 1.2.1 PowerDesigner 中 DataArchitect 模块的安装 ................................ ................................ ............2 ODBC 的安装................................ ................................ ................................ .............................. 7 1.2.2 Sybase SQL Anywhere 的安装 ................................ ................................ ................................ ....9 1.2.3 第2章 PowerDesigner 简介 ...................................................................................................... 13 ProcessAnalyst 模块................................ ................................ ................................ ................................ 14 2.1 DataArchitect 模块................................ ................................ ................................ ................................ ..16 2.2 AppModeler 模块................................ ................................ ................................ ................................ ....18 2.3 MetaWorks 模块................................ ................................ ................................ ................................ ......19 2.4 WarehouseArchitect 模块................................ ................................ ................................ ........................ 21 2.5 Viewer 模块................................ ................................ ................................ ................................ ............. 22 2.6 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第3章 MetaWorks 概述............................................................................................................ 24 MetaWorks 的优点................................ ................................ ................................ ................................ ..24 3.1 共享模型................................ ................................ ................................ ................................ .....24 3.1.1 管理共享数据................................ ................................ ................................ ............................. 24 3.1.2 MetaWorks 的体系结构................................ ................................ ................................ .......................... 26 3.2 数据库服务器................................ ................................ ................................ ............................. 26 3.2.1 数据库客户................................ ................................ ................................ ................................ .26 3.2.2 ODBC 驱动程序................................ ................................ ................................ ......................... 27 3.2.3 MetaWorks 模块 ................................ ................................ ................................ ......................... 27 3.2.4 MetaWorks 字典................................ ................................ ................................ ................................ ......28 3.3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 目 录 II MetaWorks 入门................................ ................................ ................................ ................................ ......29 3.4 配置数据库作为 ODBC 数据源 ................................ ................................ ................................ 36 3.4.1 为 MetaWorks 字典产生数据库表................................ ................................ ............................. 39 3.4.2 小结................................ ................................ ................................ ................................ ................................ 22 思考题................................ ................................ ................................ ................................ ............................ 22 第4章 DataArchitect 概述........................................................................................................ 43 DataArchitect 的特征................................ ................................ ................................ ............................. 43 4.1 二级数据建模................................ ................................ ................................ ............................ 43 4.1.1 迭代数据建模................................ ................................ ................................ ............................ 45 4.1.2 DataArchitect 的工作环境 ................................ ................................ ................................ .....................45 4.2 工作区的特征 ................................ ................................ ................................ ................................ ........47 4.3 列表................................ ................................ ................................ ................................ ............47 4.3.1 属性窗口................................ ................................ ................................ ................................ ....48 4.3.2 业务规则................................ ................................ ................................ ................................ ....50 4.3.3 工具选项板介绍................................ ................................ ................................ ........................51 4.3.4 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 5 章 建立概念数据模型 ......................................................................................................... 56 产生概念数据模型 ................................ ................................ ................................ ................................ 56 5.1 完成 CDM 特性窗口的工作 ................................ ................................ ................................ .................58 5.2 定义业务规则 ................................ ................................ ................................ ................................ ........62 5.3 把一个表达式附加到业务规则上 ................................ ................................ ............................ 64 5.3.1 把业务规则应用到数据模型对象上 ................................ ................................ ........................64 5.3.2 产生实体 ................................ ................................ ................................ ................................ ................65 5.4 定义域 ................................ ................................ ................................ ................................ ....................66 5.5 修改域................................ ................................ ................................ ................................ ........69 5.5.1 定义实体................................ ................................ ................................ ................................ ....70 5.5.2 定义实体的属性................................ ................................ ................................ ........................72 5.5.3 产生实体属性的途径 ................................ ................................ ................................ ................74 5.5.4 产生数据项................................ ................................ ................................ ................................ 77 5.5.5 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 6 章 完善概念数据模型 ......................................................................................................... 86 定义联系 ................................ ................................ ................................ ................................ ................86 6.1 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 目 录 III 角色................................ ................................ ................................ ................................ ............88 6.1.1 基数................................ ................................ ................................ ................................ ............89 6.1.2 存在性................................ ................................ ................................ ................................ ........90 6.1.3 依赖................................ ................................ ................................ ................................ ............90 6.1.4 联系符号................................ ................................ ................................ ................................ ....92 6.1.5 定义继承连接 ................................ ................................ ................................ ................................ ........95 6.2 概括和细化属性................................ ................................ ................................ ........................97 6.2.1 使用继承特性窗口................................ ................................ ................................ ....................99 6.2.2 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 7 章 检查、固化和提取概念数据模型 ............................................................................... 107 检查概念数据模型 ................................ ................................ ................................ .............................. 107 7.1 模型的固化 ................................ ................................ ................................ ................................ .......... 111 7.2 固化选项(Consolidation Option) ................................ ................................ ............................. 115 7.2.1 固化模式(Consolidation Mode)................................ ................................ ............................... 116 7.2.2 模型的提取 ................................ ................................ ................................ ................................ ..........116 7.3 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 8 章 生成物理数据模型 ....................................................................................................... 121 物理数据模型 ................................ ................................ ................................ ................................ ......121 8.1 生成参数................................ ................................ ................................ ................................ ..124 8.1.1 保护选项................................ ................................ ................................ ................................ ..127 8.1.2 PDM 的模型特性................................ ................................ ................................ ................................ .127 8.2 把 CDM 对象转换成 PDM 对象................................ ................................ ................................ .........129 8.3 把 CDM 中的实体转换成 PDM 中的表................................ ................................ .................129 8.3.1 把 CDM 中的联系转换成 PDM 中的参照完整性................................ ................................ .130 8.3.2 递归联系的转换................................ ................................ ................................ ......................133 8.3.3 模型对象和对象 ID 号 ................................ ................................ ................................ ........................142 8.4 修改 CDM 和 PDM 文件................................ ................................ ................................ .....................144 8.5 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 9 章 调整物理数据模型 ....................................................................................................... 148 调整物理数据模型 ................................ ................................ ................................ .............................. 148 9.1 数据完整性和一致性 ................................ ................................ ................................ ..........................149 9.2 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 目 录 IV 表约束和列约束................................ ................................ ................................ ......................149 9.2.1 参照完整性................................ ................................ ................................ .............................. 159 9.2.2 视图................................ ................................ ................................ ................................ ......................164 9.3 视图的定义及产生................................ ................................ ................................ ..................164 9.3.1 查询视图................................ ................................ ................................ ................................ ..168 9.3.2 候选关键字 ................................ ................................ ................................ ................................ ..........169 9.4 索引................................ ................................ ................................ ................................ ......................172 9.5 从索引中删除一列................................ ................................ ................................ ..................178 9.5.1 删除索引................................ ................................ ................................ ................................ ..179 9.5.2 定义一个有效性规则 ................................ ................................ ................................ ..............179 9.5.3 定义参照完整性................................ ................................ ................................ ......................180 9.5.4 产生视图................................ ................................ ................................ ................................ ..181 9.5.5 定义候选关键字................................ ................................ ................................ ......................181 9.5.6 产生索引................................ ................................ ................................ ................................ ..182 9.5.7 带数据修改表结构 ................................ ................................ ................................ .............................. 183 9.6 生成测试数据的方法 ................................ ................................ ................................ ..........................187 9.7 DataArchitect 与客户端开发工具的接口 ................................ ................................ ........................... 189 9.8 使用扩展属性................................ ................................ ................................ ..........................189 9.8.1 视图与 PowerBuilder Query................................ ................................ ................................ ....191 9.8.2 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 10 章 触发器、存储过程和函数 ......................................................................................... 193 触发器 ................................ ................................ ................................ ................................ ................193 10.1 生成 SQL 脚本................................ ................................ ................................ ................................ ...200 10.2 触发器与存储过程生成参数的设置 ................................ ................................ ....................200 10.2.1 生成选项................................ ................................ ................................ ................................ 200 10.2.2 为触发器、存储过程生成可以运行的脚本文件................................ ................................ .202 10.2.3 触发器模板及 SQL 查询编辑器 ................................ ................................ ................................ .......204 10.3 触发器模板................................ ................................ ................................ ............................ 204 10.3.1 10.3.2 SQL 查询编辑器 ................................ ................................ ................................ ...................206 存储过程和函数 ................................ ................................ ................................ ................................ 208 10.4 存储过程的优缺点................................ ................................ ................................ ................209 10.4.1 使用存储过程模板定义存储过程和函数 ................................ ................................ ............210 10.4.2 宏................................ ................................ ................................ ................................ ........................217 10.5 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 目 录 V 变量 ................................ ................................ ................................ ................................ ....................217 10.6 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 11 章 检查物理数据模型 生成数据库 ............................................................................. 223 11.1 检查物理数据模型 ................................ ................................ ................................ ............................. 223 检查和改正 PDM 选项................................ ................................ ................................ ........... 224 11.1.1 错误和警告................................ ................................ ................................ ............................. 225 11.1.2 产生数据库或产生数据库生成脚本................................ ................................ ................................ ..227 11.2 DEF 文件 ................................ ................................ ................................ ................................ 227 11.2.1 生成数据库................................ ................................ ................................ ............................. 228 11.2.2 使用 ODBC 生成数据库 ................................ ................................ ................................ ........232 11.2.3 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 12 章 逆向工程..................................................................................................................... 235 通过逆向工程方法生成 PDM................................ ................................ ................................ ............ 236 12.1 使用 ODBC 生成 PDM................................ ................................ ................................ ....................... 236 12.2 从 PDM 生成 CDM................................ ................................ ................................ ............................. 240 12.3 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 13 章 带有子模型的工作 ..................................................................................................... 243 全局数据和子模型 ................................ ................................ ................................ ............................. 243 13.1 分解全局模型 ................................ ................................ ................................ ................................ .....244 13.2 全局模型和子模型中的对象 ................................ ................................ ................................ .248 13.2.1 从模型或子模型中删除对象 ................................ ................................ ................................ .253 13.2.2 工程和模型 ................................ ................................ ................................ ................................ .........253 13.3 数据共享策略 ................................ ................................ ................................ ................................ .....254 13.4 合并模型................................ ................................ ................................ ................................ .254 13.4.1 附加数据控制................................ ................................ ................................ ........................255 13.4.2 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 14 章 使用 MetaWorks 进行团队控制............................................................................... 260 团队工作和劳动划分 ................................ ................................ ................................ ........................260 14.1 MetaWorks 工程概述................................ ................................ ................................ .........................261 14.2 产生 MetaWorks 用户帐号................................ ................................ ................................ ................262 14.3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 目 录 VI 产生组 ................................ ................................ ................................ ................................ ................265 14.4 给用户和组授权 ................................ ................................ ................................ ................................ 270 14.5 固化过程中的有关问题 ................................ ................................ ................................ ....................275 14.6 删除冲突................................ ................................ ................................ ................................ 276 14.6.1 修改冲突................................ ................................ ................................ ................................ 276 14.6.2 其它固化冲突................................ ................................ ................................ ........................277 14.6.3 模型加锁 ................................ ................................ ................................ ................................ ............278 14.7 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 15 章 MetaWorks 中的 MetaBrowser................................................................................ 283 管理 MetaWorks 字典中的信息 ................................ ................................ ................................ ..........283 15.1 使用 MetaBrowser................................ ................................ ................................ ................................ 283 15.2 信息管理器................................ ................................ ................................ ..............................284 15.2.1 多模型管理器................................ ................................ ................................ ..........................287 15.2.2 比较管理器................................ ................................ ................................ ..............................289 15.2.3 查询字典 ................................ ................................ ................................ ................................ ..............292 15.3 使用 InfoMaker 查询 MetaWorks 字典................................ ................................ ...................293 15.3.1 使用 QUERY.WRI 查询 MetaWorks 字典 ................................ ................................ ..............293 15.3.2 SQL 解释执行器 ................................ ................................ ................................ .....................293 15.3.3 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 第 16 章 生成模型文档............................................................................................................. 296 16.1 概念数据模型生成文档的方法................................ ................................ ................................ .........296 概念数据模型定制文档的生成方法................................ ................................ ................................ .299 16.2 修改文档的封面信息 ................................ ................................ ................................ ............300 16.2.1 为定制文档设置页眉和页脚 ................................ ................................ ................................ 300 16.2.2 为定制文档设置概述信息 ................................ ................................ ................................ ....301 16.2.3 为定制文档项设置生成方式 ................................ ................................ ................................ 301 16.2.4 在定制文档中增加或减少生成项目 ................................ ................................ ....................302 16.2.5 小结................................ ................................ ................................ ................................ ................................ ..22 思考题................................ ................................ ................................ ................................ .............................. 22 主要名称缩写中英文对照表....................................................................................................... 304 参考文献....................................................................................................................................... 305 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第1章 PowerDesigner 数据库建模环境 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 驱动器; PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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
  • ·4· PowerDesigner 数据库建模技术 图 1-4 图 1-5 图 1-6 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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) 。4.双击“Setup” 3.双击“Disk1”文件夹,打开的“浏览—Disk1”窗口(图 1-13) 安装程序,开始安装。在“Welcome”窗口上单击“Next”按钮,打开“Select ODBC ,从列表框中选择要安装的 ODBC 驱动程序(在选择的驱 Drivers”窗口(图 1-14) 动程序前面出现“√” ,表示选中) 。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第1章 PowerDesigner 数据库建模环境 ·7· 图 1-12 图 1-13 图 1-14 5.单击“Next”按钮,以下步骤同安装 DataArchitect 模块一样,可根据提示操作,直 至安装完毕。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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 ,单击“Install”按钮,打开如下窗口(图 1-16) 。 Windows 95” 图 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
  • 第1章 PowerDesigner 数据库建模环境 ·9· 图 1-17 图 1-18 图 1-19 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第1章 PowerDesigner 数据库建模环境 ·11· 图 1-23 9.单击“OK”按钮,打开如图 1-24 所示窗口。 图 1-24 10.单击“确定”按钮,结束安装过程。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第2章 PowerDesigner 简介 PowerDesigner 包括以下六个模块: l ProcessAnalyst 是数据流程图(DFD)逻辑设计工具 l DataArchitect 是概念数据模型与物理数据模型设计工具 l WarehouseArchitect 是数据仓库设计工具 l AppModeler 是客户端应用程序生成工具 l MetaWorks 是团队开发控制工具 l Viewer 是模型观察工具 可以单独购买和使用任何一个 PowerDesigner 模块,也可以一起使用这些模块。图 2-1 是 PowerDesigner 六个模块的关系图。 Enterprise and DataArchitect ProcessAnalyst Desktop RDBMS MetaWorks Warehouse Architect DW/DM C/S Dev Tools Extraction Tools & the Web DSS AppModeler 图 2-1 本章介绍各个模块的用途、功能、使用对象、特征及输出。学完本章后,能够达到如 下目的: l 区分 PowerDesigner 的六个模块; l 描述每个模块的功能与特征; l 明确每个模块的使用对象; l 明确使用每个模块的原因。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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
  • 第 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
  • ·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 。如果使用 PowerBuilder, 3.0,4.0,5.0,Sybase,Delphi 2.0,Power++,Web) AppModeler 会向 PowerBuilder 的系统表中插入数据,这样在 PowerBuilder 中列的 扩展属性就会显示出来。 这里定义的扩展属性还可以马上在 AppModeler 生成的程 序中得到体现,例如我们把某个字段定义为下拉列表框,在生成的应用程序中这 个字段就会以下拉列表框的形式出现。 l 可以根据物理数据模型中的表和视图生成可立即运行的 PowerBuilder 和 VB 等应 用程序,包括 DataArchitect 在物理数据模型设计阶段的全部功能。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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
  • 第 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
  • ·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
  • 第 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
  • ·22· PowerDesigner 数据库建模技术 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第3章 MetaWorks 概述 本章主要介绍 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 文件,可以通过固化和提取的方式来共享数据模型。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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 所示: 1.产生一个新的 CDM 2.固化和提取这个空的 CDM 3.在 CDM 工作区中建立概念数据模型 4.固化和提取这个 CDM 5.生成 PDM 6.固化和提取这个 PDM 7.每次修改 CDM 后固化和提取它 8.再次生成 PDM 9.固化和提取这一新的 PDM 图 3-1 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第3章 MetaWorks 概述 ·25· 器、ODBC 之间的关系。PowerDesigner 使用 ODBC 驱动和 DBCLient Client ODBC 为模型的固化和提取 (Database/Client Connection)作为中间件, 传送请求和结果。 ODBC MetaWorks 既包括 Sybase SQL Anywhere 所需要的 ODBC 驱动程 序,也包括 MetaWorks 客户与 Sybase SQL Anywhere 服务器之间进行 通讯所需要的 SQL Anywhere 通讯模块。 Server 图 3-2 注 意: 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 所示。 PDM CDM MetaWorks 客户 ODBC DB Com SW MetaWorks 字典 图 3-3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·26· PowerDesigner 数据库建模技术 3.3 MetaWorks 字典 MetaWorks 字典是驻留在 RDBMS 中的一组数据库表,必须生成一个数据库来存储 MetaWorks 字典。图 3-4 表示了 PowerDesigner 的四个模块借助 MetaWorks 模块从数据库服 务器上的 MetaWorks 字典中固化和提取模型对象的过程。 Process Warehouse DataArchitect AppModeler Analyst Architect MetaWorks MetaWorks MetaWorks MetaWork 模型或子模型 的固化或提取 MetaWorks 字典 持续存储 数据库服务器 图 3-4 MetaWorks 字典中包含概念数据模型和物理数据模型的数据、工程和用户的权限。它是 模型数据共享的中心仓库。这个字典包含: l 帮助设计组管理数据和域的定义; l 有利于设计的重用信息。 注 意: 不论 MetaWorks 和 DataArchitect 模块数量有多少,一个 PowerDesigner 只 需配置一个 MetaWorks 字典服务器。 3.4 MetaWorks 入门 安装 MetaWorks 的任务要点如表 3.1 所示。 表 3.1 任 务 注 释 1.安装 MetaWorks 客户 从第 1 章获得系统最小需求和安装指导 安装 MetaWorks 服务器可使用下面的两种方法: l 同时安装 Sybase SQL Anywhere 数据库引擎、 2. l 安装授权的 Sybase SQL Anywhere 作为本 客户模块、ODBC 驱动和通讯模块 l 机字典的服务器 确信安装了正确的 ODBC 驱动和必需的通讯 l 安装其它 RDBMS 作为数据库服务器 模块(如 SQL*Net for Oracle) 其步骤是 RDBMS 特定的 3.为字典产生一个数据库 续表 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第3章 MetaWorks 概述 ·27· 任 务 注 释 使用 ODBC Administrator。或者从 MetaWorks 中 4.配置数据库作为一个 ODBC 数据源 选择 Dictionary>Connect MetaWorks 首次连接到字典的过程是自动的 5.为字典产生一个数据库表 连接信息包括数据库的名称、用户 ID、口令以及 6.从 MetaWorks 客户连接到字典上 字典的用户 ID 和口令 实验 3-1(指导实验)使用 Sybase SQL Anywhere 产生一个数据库 描述 在这个实验中,按照指导操作可产生一个 Sybase SQL Anywhere 的数据库。 步骤 打开 SQL Central,它是由 Sybase SQL Anywhere 提供的。常用的打开方法有三种: 1. (1)打开 Sybase SQL Anywhere 程序组,单击“SQL central”图标。 (2)运行可执行文件 SCVIEW.EXE。 (3)选择开始→程序→Sybase SQL Anywhere 5.0→SQL Central。 在图 3-5 的右窗格中,双击“Utilities”展开该目录。 2. 图 3-5 双击图 3-6 右窗格中的“Create Database”项。 3. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·28· PowerDesigner 数据库建模技术 图 3-6 在打开的“Create a SQL Anywhere Database”对话框(图 3-7)中,单击“Browse” 4. 按钮,并找到要存放这个数据库文件的目录,然后单击“下一步”按钮。 键入“pdclass”作为数据库名,并单击“打开”按钮(图3-8)。 5. 图 3-7 图 3-8 在打开的“Create a SQL Anywhere Database”对话框(图 3-9)中,单击“下一步” 6. 按钮。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第3章 MetaWorks 概述 ·29· 图 3-9 在打开的“Choose the Transaction Log Options”对话框(图 3-10)中,保持缺省选 7. 项“Maintain a log file in this path and file” ,并单击“下一步”按钮。 图 3-10 在打开的“Mirror the Transaction Log”对话框(图 3-11)中,接受缺省选项,并 8. 单击“下一步”按钮。 图 3-11 在打开的“Choose the Database Attributes”对话框(图 3-12)中,保持缺省选项, 9. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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
  • ·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
  • 第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
  • ·34· PowerDesigner 数据库建模技术 图 3-21 注 意: 如果没有使用 Sybase SQL Anywhere,配置参数可能有所不同。下表包含的信 息只用于 Sybase SQL Anywhere。 ODBC 对话框的配置选项如表 3.2 所示。 表 3.2 选 项 描 述 指定的数据源名称。最好选择调用数据库名的名称 Data Source Name 描述数据源的文本 Description 键入 DBA,它是缺省 Sybase SQL Anywhere 的用户 ID User ID 键入 SQL,它是缺省 Sybase SQL Anywhere 的口令 Password 服务器名,可以接受缺省值 Server Name 可选择前面实验中产生的数据库名 Database Name 数据库文件的路径。能够键入路径,或者单击“Browse”按钮 Database File 6. 单击“OK”按钮,返回到“ODBC 数据源管理器”窗口。 7. 单击“确定”按钮,返回到“Data Sources”窗口,刚产生的数据源名出现在列表 中。 8.选择刚产生的数据源。 9.单击“OK”按钮,返回到“Connect”对话框,显示连接数据。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第3章 MetaWorks 概述 ·37· 接窗口访问。 思考题 1.说明 MetaWorks 客户/服务器体系结构的组成。 2.解释安装并连接到 MetaWorks 字典的步骤。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·38· PowerDesigner 数据库建模技术 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第4章 DataArchitect 概述 本章简要介绍建立了概念数据模型和建立物理数据模型的过程, 介绍了概 念数据模型(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 中直接建 立。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第4章 DataArchitect 概述 ·39· 2. 在 MetaWorks 字典中固化和提取 CDM(这个阶段将在后面的章节中讨论)。 3. 从 CDM 中产生一个 PDM,并在细节上增强它,使其适应特定的 RDBMS 平台。 4. 在 MetaWorks 字典中固化和提取 PDM(这个阶段将在后面的章节中讨论) 。 5. 从 PDM 文件中,生成数据库生成脚本或者生成数据库。 6. 从 PDM 文件产生仓库结构模型。 图 4-2 描述了数据建模的全过程。 CDM Oracle System 11 SQL Anywhere SQL System 11 Oracle Anywhere 图 4-1 生成 CDM PAM WA 生成 PDM 产生 CDM 增强 PDM DB DB 图 4-2 数据库建模过程不必按上述顺序进行,特别是在开发一个数据库模型时,应在这些阶 段内部和阶段之间经过多次迭代。 4.1.2 뗼듺쫽뻝붨쒣 DataArchitect 支持迭代数据建模。这意味着在模型开发的生命周期内,CDM 或 PDM 开发过程的任何一个阶段,都能回到前一个阶段。 例如,当增强 PDM 时,可能需要修改 CDM。在 DataArchitect 中,能够修改 CDM,然 后生成 PDM,这个 PDM 不但增加了在概念级所作的修改,而且也保持了在物理级已作的 增强。图 4-3 是迭代数据建模的过程。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·40· PowerDesigner 数据库建模技术 生成 PDM 产生 CDM 增强 PDM 生成 PDM 修改 CDM 增强 PDM 生成 PDM 进一步修订 增强 PDM 图 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 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·42· PowerDesigner 数据库建模技术 、表列表(a list of tables)等。 of Entity) 选择 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
  • 第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
  • ·44· PowerDesigner 数据库建模技术 图 4-8 图 4-9 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第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
  • ·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 所示的图形表示: 0 或1 0 或多 1 仅有 1 1 或多 依赖 图 4-11 14.找到雇员和专业人员的继承连接关系。 继承连接关系是一种特殊的联系,反映了实体之间的分类关系,连接了超类和子 类。超类是实体公共属性的集合,子类是各种特定属性的集合。子类之间的关系 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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. 什么是 CDM 文件、PDM 文件? 3. 搞清 DataArchitect 中最常用的三个特性,描述概念数据模型和物理数据模型中的 4. 模型对象。 5. 搞清并定义 CDM 中的五个对象。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第5章 建立概念数据模型 本章主要介绍了建立概念数据模型的方法以及在建立概念数据模型中的 注意事项,本章还详细介绍了概念数据模型中的主要概念和术语,这对于把现 实世界中的信息转换成概念数据模型具有重要的指导意义。学完本章后,能够 达到如下目的: l 建立概念数据模型(CDM) l 把问题陈述设计成一个概念数据模型 l 定义业务规则 l 定义域、数据项、实体及实体属性 5.1 产生概念数据模型 概念数据数据模型(CDM)设计是建模过程的关键阶段,此阶段把现实世界中需要保 存的信息抽象成信息世界中的实体和联系,产生实体联系图。这一阶段可以为高质量的应 用提供坚实的基础。 建立概念数据模型是一项综合性的工作。这项工作应由具有业务领域知识的专家和数 据模型专家参加。业务领域专家和数据模型专家共同合作,完成一个清晰的、包括全部业 务问题的综合文本,然后由数据模型专家把这些原始数据转化成数据流程图和概念数据模 型。 PUBS2INT 业务问题 例如,PUBS2INT 的综合文本陈述如下: 建立的管理信息系统应能够通过书的销售了解作者的版税付款情况。 在指导实验中,可以产生一个概念数据模型说明这个业务问题。 根据综合文本建立概念数据模型后,需对这个模型进行反复修改,使其能够全面地反 映业务需求。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·52· PowerDesigner 数据库建模技术 图 5-1 5.2 完成 CDM 特性窗口的工作 在“Model Properties”窗口中, “Definition”页所显示的模型特性如表 5-1 所示: 表 5.1 特 性 描 述 最大字符长度 用户为工程定义的名称。 一个工程可包含一个或多 工程名称(Project Name) 80 个 CDM、PDM 及其子模型 工程代码(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
  • 第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
  • ·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
  • 第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
  • ·56· PowerDesigner 数据库建模技术 实验-5-6(指导实验) 在 CDM 中定义问题的描述 描述 在这个实验中,跟随指导操作,可以在 MYPUBS2.CDM 的 Description 中,输入下面的 问题描述文本: MYPUBS2.CDM 要求通过书的销售了解该书作者的版税付款情况。 步骤 随模型打开 CDM 工作区,选择 Dictionary→Model Properties,打开“Model 1. Properties”窗口。 选择“Description”页。 2. 输入业务问题描述,然后单击“OK”按钮。 3. 5.3 定义业务规则 业务规则使用自然语言描述一个业务如何进行操作。在 CDM 中,业务规则是重要的文 档内容,这些规则在物理数据模型中要用客户端代码或服务器端代码实现。 业务规则的类型 业务规则有四种类型,如表 5.2 所示: 表 5.2 类型 描述 例子 表达了在信息系统中一个对象的固有特 一本书用 ISBN 号、书名、 定义型(Definition) 性。定义型规则通常用来描述实体 出版日期和图书号唯一确定 表达了在信息系统中必然的或存在的事 事实型(Fact) 作者写书 实。事实型规则通常用来描述联系 职员的死亡日期可能是空 值,或者是比出生日期晚的 有效型(Validation) 在信息系统中对属性的取值约束 一个日期值 公式型(Formula) 在信息系统中常用来描述计算属性 总量等于单价乘以数量 定义业务规则是一个反复的过程。在数据建模的实践中会发现:建模的早期,只能定 义一些基本的业务规则,随着建模过程的不断展开才会逐步完善领域中的业务规则。 在概念级定义规则 所有的业务规则应该能够表达业务问题的全部信息。这些规则应该能够定义实体、联 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第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
  • ·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
  • 第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) 数据项中数据的度量单位(公斤、吨、个等) 数据项的数据格式(例如(999)999-9999 是电话号 格式(Format) 码的格式) PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·62· PowerDesigner 数据库建模技术 续表 常数 描述 小写字母(Lowercase) 强迫字母成为小写字母 大写字母(Upercase) 强迫字母成为大写字母 不能修改(Cannot Modify) 在数据库表中保护数据项不被改变 在数据库表中对列的授权值(例如性别字段为“M” 值列表(List of Values) 或“F”) 显示给用户的值(例如性别字段在数据库表中是 “M”,显示给用户是“女” ;在数据库表中是“F” ,显 标签(Label) 示给用户是“男”) 实验 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 注释 无 步骤 从 MYPUBS2.CDM 中选择 Dictionary→List of Domains,打开“List of Domains” 1. 对话框。 单击“New”按钮。 2. 键入名称、代码及标签。 3. 单击“Data Type”栏。 4. 单击省略号(…)按钮,打开“Standard Data Types”对话框。 5. 在“Standard Data Types”对话框中,选择“Integer”数据类型,然后单击“OK” 。 6. 输入描述和注释。 7. 单击“OK” ,关闭“List of Domains”对话框。 8. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第5章 建立概念数据模型 ·65· l 对实体加注释,注释中一般书写注意事项; l 估计实体在物理数据库中将要包含的记录数。这个估计数被用作生成索引和计算 数据库尺寸的阀值; l 选择“Generate Table”检查框后,在从 CDM 生成 PDM 时,实体生成相应的表。 实验 5-9 产生实体 描述 在这个实验中,按照指导产生下面的实体: Roysched Publisher Author 步骤 在 CDM 工作区中,打开 MYPUBS2.CDM 文件。 1. 在工具选项板中单击 Entity 工具。 2. 单击 CDM 工作区的任何地方,产生一个实体图形符号。 3. 在 CDM 工作区中再单击一下,就产生了第二个实体图形符号。 4. 在 CDM 工作区中单击第三下,就产生了第三个实体图形符号。 5. 在 CDM 工作区中,单击鼠标右键释放 Entity 工具,鼠标指针恢复原状。 6. 双击实体,并填写实体的特性。 7. 5.5.3 뚨틥쪵쳥뗄쫴탔 实体属性是附加到实体上的数据项。实体的属性通常使用定义型业务规则确定。 数据项和实体属性 在 DataArchitect 环境下,数据项和实体属性是不同的对象。实体属性是与该实体有关 的数据项。 定义一个实体属性,就定义了一个数据项与实体之间的联系。如果定义的实体属性在 数据项中不存在, DataArchitect 会自动产生这个数据项。在本节后,将介绍使用 DataArchitect 产生数据项的简便方法,这一简便方法就是通过数据项定义一个实体的属性。 例如:ISBN 是附加到 Book 实体上的一个数据项。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·66· PowerDesigner 数据库建模技术 ISBN Book ISBN 实体属性对话框 在 DataArchitect 中,实体属性是由“Attributes of the Entity:Aurgie”窗口(图 5-9)中 的 Name、Code、和 Label 定义的。在这个窗口中也能够完成如下工作: l 确定实体属性的数据类型; l 确定一个属性是否为这个实体的标识符或标识符的一部分; l 把一个域应用到实体属性上(用这个域代替指定的数据类型); l 为实体属性指定检查约束(Check) ; l 描述和注释实体的属性; l 标识一个实体的属性是否为强制的(非空) ; l 标识一个实体属性是否在模型中显示。 图 5-9 标识符特性 选择“Identifier”检查框时,表示该属性是该实体的标识符或者是该实体标识符的一部 分。实体的标识符是由一个或多个属性组成的,标识符唯一确定实体中的一个实例。实体 的标识符对应唯一的一个实例。虽然实体的标识符是实体的一个特性,但必须把实体的一 个或多个属性指定为实体的标识符。在实体图形符号中,标识符属性带有下划线。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第5章 建立概念数据模型 ·69· 13. 单击“OK”。 直接定义实体的属性,自动产生数据项。 实验 5-10 定义实体属性 描述 在这个实验中,可以定义作者(Author)、版税(Roysched)、出版商(Publisher)三个 实体。图 5-11 是这三个实体的名称和属性。 Publisher Author Roysched Author_id Publisher_id Author_lastname Royalty_title_id Publisher_name Author_firstname Royalty_schedule Publisher_city Author_middle_initial Low_range Publisher_state Author_phone High_range Royalty Author_address Royalty Author_city Author_state Author_postal_code Author_country 图 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 把本章中建立的业务规则应用到对应的实体上。 步骤 打开 MYPUBS2.CDM,双击 Author 实体。 1. 按照把一个数据项定义成一个实体属性的方法,完成 Author 实体属性的定义。 2. 仿照步骤 1 和 2,完成 Roysched 实体属性的定义。 3. 按照在“Attributes of the Entity”窗口直接定义实体属性的方法,完成 Publisher 实 4. 体属性的定义。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第5章 建立概念数据模型 ·71· 单击“OK”,关掉“List of Data Item”对话框;或者定义另一个数据项。 4. 定义一个内部数据项 当定义实体属性时,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
  • ·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
  • 第5章 建立概念数据模型 ·73· 表 5.6 特性 值 名称(Name) ID Number 代码(Code) ID Number 标签(Label) ID Number 数据类型(Data Type)、 长度(Length) 、 Integer 精度(Precision) 检查约束(Check Parameter) Minimum Value:1000 ID Number 域使所有使用该域的数据项 和实体属性都取整数,起始值是 1000。该 描述(Description) 域使用在 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) 。 Author Book Publisher 图 5-14 图形化方法 使用图形化方法产生实体的步骤如下: 1.随模型打开 CDM 工作区,单击工具选项板上的 Entity 工具。 2.单击模型工作区的任何地方,产生一个实体图形符号,单击鼠标右键释放 Entity 工具。 3.双击该实体,打开实体特性窗口。 4.输入 Name、Code、Label。 5.输入 Number 的值。 6.如果需要的话,增加定义实体的规则、实体的描述、注释等。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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)实体定义属性。 Author Book Publisher Author ID Publisher ID ISBN Author_name Publisher_name Title Publisher_city Date_of_Publication Library_of_Congress_number 图 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”检查 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第5章 建立概念数据模型 ·75· 框。 8.如果由属性生成的数据库列不能为空的话,选择“Mandatory”检查框。 9.如果不想在模型中显示属性,关闭“Display”检查框。 10.单击“Check”按钮,打开“Check Parameters”窗口。 注 意: 如果属性使用了带有标准检查约束的域,那么实体的属性继承了该域定义的 标准检查约束。 、注释(Annotation),然后单击“OK”。 11.如果需要的话,键入描述(Description) 在直接产生实体属性的同时,将自动产生一个数据项。 小 结 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
  • ·76· PowerDesigner 数据库建模技术 职工的雇佣日期必须早于或等于今 天的日期 司机由驾驶证号确定 学生选择课程 每个帐号一年四季的总量等于每个 账号四个季节量的总和 4. 解释数据项和实体属性之间的关系。 5. DataArchitect 为什么使用概念数据类型?从 CDM 生成 PDM 期间,概念数据类型 发生了什么变化? PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第6章 完善概念数据模型 本章介绍了在 DataArchitect 模块中定义实体间联系与继承连接的方法。 实体间或实体内部的联系是建立概念数据模型的主要内容,正确地描述联系是 概念数据模型能否反映客观世界的关键,它是概念数据模型中的重点内容。学 完本章后,能够达到如下目的: l 定义实体间的联系 l 定义继承连接 6.1 定义联系 联系是指两个实体之间或实体内部的连接或关系。 完成实体定义以后,应该在它们之间建立联系。实体的联系通常是依据业务规则确定 的,如:一个顾客在一个或多个商店中买东西,这就是一个顾客与商店间的联系。 表达联系 在概念数据模型中,联系是用实体之间的一条线来表示的,如图 6-1 所示。在本章中将 详细讨论与线有关的联系名称及符号。 注 意: 在 DataArchitect 中,要改变联系线的风格,可以用鼠标右键单击联系线, 从弹出菜单中选择“Line Style” ,然后选择表示线的各种风格。 双击工具选项板上的“Relationship”工具,可选择所有的联系线。 定义联系 定义联系是概念数据建模中最为关键的技术,一个完善的概念数据模型应该有易理解 的名称和代码,还应该有对联系的简要说明,在联系中应该正确理解角色的概念,基数反 映了现实世界中记录之间的数值对应关系,强制联系反映了现实世界中的业务关系,依赖 代表记录之间的主从关系,这些特性是反映业务关系的主要表现手段。 在 DataArchitect 中,通过下面的特性定义联系: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第6章 完善概念数据模 ·79· 代码 名称 标签 基数 依赖 强制 角色 图 6-2 6.1.1 뷇즫 角色 (Role) 用来描述联系线一个方向的含义,角色通常使用动词或动词短语来定义。 例如,能够使用动词“出版(Publishes) ”表示“从出版商实体到书实体方向的联系”;使用 动词短语“被出版(Is published by)”表示“书实体到出版商实体方向的联系” 。 图 6-3 表示了出版商出版书的联系。 Publishes Publisher Book 图 6-3 图 6-4 表示了书被出版商出版的联系。 Publisher Book Is published by 被出版 图 6-4 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·80· PowerDesigner 数据库建模技术 联系的“Relationship Properties”窗口简化了基数定义、存在性定义(强制或可选)、实 体的依赖性定义等等,准确地为角色选择动词或动词词组,对确定其它选项具有重要的指 导意义。 6.1.2 믹쫽 基数(Cardinalty)用实体间实例的数值对应关系表示,它反映了两个实体间的数值联系。 基数可能是: l 一对一 l 一对多 l 多对一 l 多对多 基数是有方向性的,选择基数时应考虑联系的两个方向。 基数的确定 基数的确定依赖于特定的业务规则,这些规则通常是通过与用户交谈和查阅相关文档 得到的。 基数的表示符号 在联系线上,用“乌鸦脚”( )表示“多”;用小圆圈表示“可选” ;用与联系线交 叉的短直线表示“强制”; 图 6-5 表达了两个含义:其一是一本书必须被一个出版商出版,一本书仅与一个出版商 有关;其二是一个出版商与许多书有关,一个出版商可能出版多本书。 Book Publisher Book_Publisher 图 6-5 最大和最小参数 在“Relationship Properties”窗口,能够用“Max”与“Min”限制基数的上限与下限。 6.1.3 듦퓚탔 存在性(Existence)表示两个实体之间的联系是必须的或是可选的。需要在两个方向上 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第6章 完善概念数据模 ·81· 定义强制或可选的存在性。 强制存在用与联系线交叉的短直线表示。可选存在用与联系线交叉的小圆圈表示。 图 6-6 表达了两个含义:其一是一本书必须被一个出版商出版,一本书仅与一个出版商 有关;其二是一个出版商与许多书有关,一个出版商可能出版多本书。 Book Publisher 图 6-6 联系表达了实体实例间的关系,联系中的基数和存在性用下列方法(图 6-7)来表示。 0或1 0 或多 1 仅有 1 1 或多 图 6-7 6.1.4 틀삵 依赖(Dependency)表示在联系中一个实体的存在是否依赖于另一个实体。寄生实体 (Dependent Entity)是一种部分地被另一实体确定的实体。 在依赖联系中,一个实体与另一实体通过标识符相联系,当一个实体的存在没有另一 个实体的存在作为参考就不能唯一确定时,两个实体间就存在依赖联系。 表示法 依赖联系用一个三角形表示,三角形的顶点指向非寄生实体。 6-8 表示了定单 图 (Order) 依赖于商店(Store)的依赖联系。 Store Order 依赖联系 图 6-8 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·82· PowerDesigner 数据库建模技术 例子 如图 6-9 所示在遍及全国的连锁书店中,如果每一个书店的定单号码从 1 开始,连续地 进行下去,那么,每一个定单不能唯一地确定它是哪个书店的。为了识别一个定单属于哪 个书店,在这个定单上必须有一个书店 ID 号。 Beijing Order ? Order Xi’an store Order Taiyuan Order 图 6-9 在图 6-10 中,定单和书店间存在一种依赖联系,一个定单必须来自于一个特定的商店。 依赖联系的三角形顶点指向书店实体。对寄生实体定单来说,这种联系是强制的,但对非 寄生实体书店来说,这种联系是可选的。 l 一个书店可以有一个或多个定单; l 一个定单必须来自于一个书店,而且只能是一个书店; l 每个定单由定单号与书店唯一确定。 非寄生实体 寄生实体 Store Stort Identifer Order Store Address Order Number Store City Order Date Store State Order Shipped Date Store Postal Code Store Country 图 6-10 6.1.5 솪쾵럻뫅 递归联系 当一个实体的实例之间存在自身联系时,就产生了递归或反身联系。图 6-11 中职工之 间的递归联系反映了职工之间的一种管理关系。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第6章 完善概念数据模 ·83· l 一个职工可以领导零个或多个职工; l 一个职工必须受一个职工的领导。 employee employee identifier employee last name employee first name employee phone employee status employee type 图 6-11 一对多联系 由前面显示的书和出版商的联系表明,书和出版商之间存在“一对多”的联系。强制 存在用与联系交叉的短直线表示,如图 6-12 所示。 l 一个出版商能够出版零本或多本书; l 一本书必须由一个出版商出版,并且只能由一个出版商出版。 Book Publishes Publisher ISBN Publish id Title Publisher name Is published by Date of publication Publish city Library of Congress 图 6-12 联系对象的弹出菜单 联系对象的弹出菜单允许用户定制联系对象,用鼠标右键单击联系线,显示弹出菜单 (图 6-13)。 中间实体 中间实体(Associative Entity)是为了解决多对多联系而产生的一个人工实体,能够为 中间实体定义属性。 用鼠标右键单击多对多联系线,在弹出的菜单中选择“Change to entity”,能够把这个 联系转换成连接两个实体的中间实体。在中间实体上能够添加属性。 给中间实体赋予联系的名称(Name)和代码(Code) 。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·84· PowerDesigner 数据库建模技术 Book ISBN Title Date of publication Library of Congress Is published by Publishes Publisher Publish id Publisher name Publish city 图 6-13 实验 6-1(指导实验) 定义联系 描述 使用工具选项板上的“Relationship”工具为 BOOKSTORE5_1.CDM 中实体定义联系(图 6-14)。 图 6-14 l 顾客/书店(Customer/Store)间的联系: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第6章 完善概念数据模 ·85· 一个顾客能够在零个或多个书店购书; ◆ 一个书店有零个或多个顾客。 ◆ l 顾客/地址(Customer/Address)间的联系: 一个顾客有零个或多个地址; ◆ 一个地址一定只有一个顾客,并且地址是由顾客确定的。 ◆ l 顾客/定单(Customer/Order)间的联系: 一个顾客能够发出零个或多个定单; ◆ 一个定单只能被唯一的一个顾客预定。 ◆ l 销售人员/定单(Salesperson/Order)间的联系: 一个销售人员能够接受零个或多个定单; ◆ 一个定单必须被一个销售人员接受,并且仅有一个销售人员接受。 ◆ l 销售人员/书店(Salesperson/Store)间的联系: 一个销售人员工作在一个书店,并且只能工作在一个书店中; ◆ 一个书店雇佣零个或多个销售人员。 ◆ 节省时间的方法 在数据模型中绝大多数联系是“一对多的” ,这是使用联系工具建立的缺省联系类型。 它把“一”端放在开始的实体旁,把“多”端放在终结的实体旁。当产生了一个“一对多” 联系时,把鼠标放在“一”实体上,然后拖拽到“多”实体上,以减少对“一”端的修改 需求。 步骤 定义联系的步骤如下: 单击工具选项板上的 Relationship 工具。 1. 把鼠标指针放在“一”端的实体上,按住鼠标右键拖拽到“多”端的实体上。 2. 用鼠标右键单击工作区的任何位置,释放 Relationship 工具。 3. 将指针置于联系线上,双击联系线,打开“Relationship Properties”窗口。 4. 键入联系的 Name、Code 和 Label 的内容。 5. 在联系的两个方向上为 Role 选择动词或动词短语。 6. 选择基数,并在联系的两个方向上选择存在性(选中“Mandatory”框,表示强制; 7. 没选中“Mandatory”框,表示可选) 。 如果一个实体依赖于另一个实体,在正确的方向上选择“Is Dependent”选项。 8. 解决方案 解决方法如图 6-15 所示: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·86· PowerDesigner 数据库建模技术 图 6-15 6.2 定义继承连接 继承连接用来定义一种父类(父实体)与子类(子实体)之间的特殊联系。子实体与 它的父实体共享一些属性,有一个或多个属性不被父实体或其它子实体所共享。 父实体也能有一个或多个联系不与子实体共享。 继承连接的符号 在 DataArchitect 环境下,继承连接用如下方法(图 6-16)表示。 在这个例子中,子实体间是互不排斥的,一个职工既可以是图书管理员,也可以是知 识领域的专家。 互斥继承连接 当父实体的一个实例只存在一种类型的子实体实例时,这种继承连接就是互斥继承连 接,互斥继承连接由半圆和“×”组成的图形来表示。这种表示仅仅是为了描述业务问题。 在物理数据模型或者数据库生成脚本中,没有产生任何语句来强迫这种互斥继承连接。要 实现这种互斥联系,只能通过客户端应用程序保证。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第6章 完善概念数据模 ·87· 图 6-16 互斥继承连接的例子 食品分发的顾客有两种类型:小的独立的杂货店和大的连锁超级市场(图 6-17)。顾客 的两种类型是相互排斥的。也就是说,一个顾客不可能既是小的独立杂货店的顾客,又是 大的连锁超级市场的顾客。对所有的顾客,需要确定 ID 号与完整地址等信息,但是对每一 种顾客类型也必须有一组独立的属性。 父实体(父类) 继承连接 子实体(子类) 子实体(子类) 图 6-17 在下面的例子中,一个职工不能既是一个销售人员,又是一个顾客代表, 如图 6-18 所示。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·88· PowerDesigner 数据库建模技术 图 6-18 6.2.1 룅삨뫍쾸뮯쫴탔 当细化实体的不同属性时,使用继承连接能够把类似实体的类似属性进行概括。例如, 假定三个实体(图 6-19) :图书管理员(Librarian)、管理员助理(Administrative Assistant) 、 知识专家(Reading Specialist)已被业务领域专家确认。 图 6-19 分析这些实体中类似的和不同的属性,将上述三个实体变化成如下的模型: l 概括上述三个实体,抽象出一个职工父实体(Employee)和三个子实体(Librarian、 ,如图 6-20 所示。 Reading Specialist、Administrative Assistant) PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第6章 完善概念数据模 ·89· 图 6-20 l 可以把图书管理员(Librarian)和知识专家(Reading Specialist)概括成专业人员父实 体(Professional),如图 6-21 所示。 图 6-21 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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 保留缺省的生成方式。第八章中将介绍继承连接生成方式选项。 步骤 产生继承连接的步骤如下: 单击工具选项板上的 Inheritance 工具。 1. 按下鼠标左键,从父实体到子实体拖拽鼠标。 2. 为使此继承连接中的其它子实体包括在父实体中,从继承连接的半圆处开始按下 3. 鼠标左键,并拖拽鼠标到另一个实体上。 单击鼠标右键,释放 Inheritance 工具,双击继承连接,打开“Inheritance Properties” 4. 窗口。 为继承连接键入 Name、Code、Label。 5. 在“Generation Mode”组框中,保留缺省设置。 6. 选择互斥检查框(Mutually exclusive),因为每一个父实体的实例,只能有一个子 7. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·92· PowerDesigner 数据库建模技术 实体的实例存在。 通过单击“Description”和“Annotation”页,为继承连接输入描述和注释。 8. 解决方案 解决方案如图 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
  • 第6章 完善概念数据模 ·93· 一本书必须由一个或多个作者写成。 ◆ 节省时间的方法 在数据模型中,大多数联系是“一对多”的。这是使用 Relationship 工具建立的缺省联 系类型。它把“一”端放在开始实体上,把“多”端放在结束实体上。当产生“一对多” 联系时,需要注意这种缺省,以节省建立联系的时间。 步骤 定义联系的步骤如下: 单击工具选项板上的 Relationship 工具。 1. 把联系符号放在“一”端的实体上,然后拖拽至“多”端的实体上。 2. 用鼠标右键单击 CDM 工作区的任何位置,释放 Relationship 工具,使鼠标指针恢 3. 复原状。 把鼠标指针放在联系线上,双击该线,打开“Relationship Properties”窗口。 4. 键入联系的 Name、Code 和 Label。 5. 为联系的每个方向键入动词或动词短语。 6. 为每个方向的联系选择基数(Cardinality)和存在性(Existence)。 7. 如果一个实体依赖于另一个实体,在正确的方向上选择依赖(Is Dependent)选项。 8. 附加说明 输入书和出版社之间联系的描述作为业务规则,并且把这个业务规则附加到书/出版社 联系上。 解决方案 解决方案如图 6-24 所示: 图 6-24 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·94· PowerDesigner 数据库建模技术 步骤二:定义继承连接 为 本 章 前 面 介 绍 的 职 工 (Employee) 、 专 业 人 员 (Professional) 、 行 政 管 理 人 员 、知识专家(Reading Specialist)定义继承连接。 (Administrative)、图书管理人员(Librarian) l 在 Professional 和 Administrative 之间建立互斥的(Mutually Exclusive)继承连接。 l Reading Specialist 和 Librarian 都是专业人员(Professional) 。 l Reading Specialist 和 Librarian 之间不建立互斥的继承连接。 l 把标识属性定义成布尔型数据类型(Boolean) 。 l 定义其它实体的属性。 l 记住要使用 ID Number 域。 产生继承连接的操作如下: 单击工具选项板上的 Inheritance 工具。 1. 按下鼠标左键,将鼠标从父实体拖拽到某一子实体上。 2. 为了在继承连接中把另一个子实体包含在父实体中,从继承连接的半圆开始按下 3. 鼠标左键,并将鼠标拖拽到另一个子实体上。 在工作区中,单击鼠标右键,释放继承连接工具。双击继承连接的半圆,打开 4. “Inheritance Properties”窗口。 为继承连接输入 Name、Code、Label。 5. 保留继承连接生成方式(Generation Mode)的缺省设置。在以后的章节中将详细 6. 介绍继承连接生成方式(Generation Mode)。 如果父实体存在只能有唯一的一个子实体实例存在时,选择互斥(Mutually 7. Exclusive)检查框。 如果需要的话,为继承连接输入描述(Description)和注释(Annotation)。 8. 步骤三:完成带有如下联系的 CDM。 l Copy/Professional 间的联系: 一个专业人员(Professional)可以预定零册或多册书的复本(Copy); u 一本书的一册复本必须被一个并且只能被一个专业人员预定。 u l Administrative/Professional 间的联系: 一个行政人员(Administrative Assistant)必须服务于一个或多个专业人员; u 一 个专业 人员(Porfessional)能 够被零 个或一 个行 政人员 (Administrative u Assistant)领导。 解决方案 解决方案如图 6-25 所示: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·96· PowerDesigner 数据库建模技术 生成父实体选项(Generate Parent)仅为父实体产生一个表。 u 生成子实体选项(Generate Children)仅为子实体产生表。 u 生成父实体/生成子实体选项(Generate Parent/ Generate Children)为父实体和 u 子实体都生成表。 l 标识属性(Specifying Attribute)仅对生成父实体选项有效。这个标识属性在结果 表中成为一个列,该列提供了一种从互斥子实体中辨认不同类型的子实体实例的 方法。 쮼뾼쳢 什么是“联系”? 1. 什么是递归或反身(Recursive or Reflexive)联系? 2. 什么是基数(Cardinality)?给出一个例子。 3. 解释存在性的含义(对联系而言) 。 4. 解释什么是寄生实体(Dependent Entity),并给出一个例子。 5. 读下面的联系(图 6-26)。 6. 图 6-26 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第7章 检查、固化和提取概念数据模型 本章介绍了检查、固化和提取概念数据模型的方法。检查模型的正确性是 模型设计工具为我们提供的智能化的功能,通过检查模型可以发现在建模过程 中的问题,以便对模型中的错误进行修改。通过固化和提取使团队设计队员共 享模型数据。学完本章后,能够达到如下目的: 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”窗口,该窗口显示上次检查的结果。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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”检查框来检测这些错误。 检查过程开始,在“Check Model Messages”窗口(图 7-2)列出了所有的警告和 5. 错误。 如果模型中没有错误,信息框末尾指出模型是正确的。如果发现错误,信息框末尾指 出模型是不正确的,并指出共有几个错误,如图 7-2 所示。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第7章 检查、固化和提取概念数据模型 ·99· 图 7-2 实验 7-2(指导实验) 改正错误和警告信息 描述 跟随指导操作,改正一个错误信息。 步骤 “Description”框中显示错误或警告的描述,在“Check Model Messages”窗口(图 1. ,单击错误或警告列表中的一个错误或警告, “Suggestion”组框中显示如何 7-3) 改正错误或警告的建议。 图 7-3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·100· PowerDesigner 数据库建模技术 双击错误信息“Entity ORDER” ,打开改正这个错误的“Attributes of the Entity: 2. 。 order”窗口(图 7-4) 图 7-4 为实体 Order 键入一个属性,如图 7-5 所示。 3. 图 7-5 单击“OK”后再检查这个模型,错误消失了,如图 7-6 所示。 4. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·102· PowerDesigner 数据库建模技术 在“Consolidate File”窗口,选择要固化的模型,单击“OK”按钮。 3. 在“Model Consolidation”对话框中,输入或选择固化参数,完成这些工作后,单 4. 击“OK”。 实验 7-3(指导实验) 固化概念数据模型 描述 跟随指导操作,固化概念数据模型 PUBS2INT。 步骤 从 CDM 文件到 MateWorks 字典固化模型数据的步骤如下: 1. 打开 PowerDesigner 的 MetaWorks 模块。 2. 选择 Dictionary→Consolidation,打开“File Open”窗口(图 7-7) 。 图 7-7 选择 pubs2int,然后单击“OK”。 3. 如果 MetaWorks 没有连接到字典数据库上,“Connect”对话框打开,如图 7-8 所示。 4. 图 7-8 键入名称和口令,单击“OK”,打开“Model Consolidation”对话框(图 7-9)。 5. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第7章 检查、固化和提取概念数据模型 ·103· 图 7-9 把“Consolidation Mode”设置成“Consolidate”,然后单击“OK”。 6. 固化过程根据选择的固化模式和选项执行,这些选项在下面的练习中介绍。 如果在 MetaWorks 字典库中没有建立这个工程, 一个确认框打开, 如图 7-10 所示。 7. 图 7-10 单击“是(Y)。 ” 8. 显示固化信息,接着显示提交确认框(图 7-11) 。 9. 图 7-11 10. 单击“是(Y),一个修改确认框(图 7-12)打开。 ” PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第7章 检查、固化和提取概念数据模型 ·105· 图 7-15 表 7.1 列出了固化选项。 表 7.1 选项 描述 每次固化时,全局模型和所有子模型被预先选 Preselect the(sub)models 定 正式修改 MetaWorks 字典前,MetaWorks 提示 Confirmation after the consolidation 确认提交固化操作 固化后模型被自动提取 Automatic extraction 自动提取后,提示确认提交操作 With confirmation 在字典中固化新的子模型时,MetaWorks 把作 Use the author as mamager for new 者作为模型主人 submodels 7.2.2 만뮯쒣쪽(Consolidation Mode) 在 MetaWorks 字典中修改模型数据时,可以改变缺省固化模式(Consolidation Model)。 表 7.2 列出了固化模式选项。 表 7.2 固化模式 结 果 使用 CDM 或 PDM 文件中的数据,在字典中插入和(或)修改数据,这是 Consolidate 缺省选项。向数据库中固化模型时,如果发现有人对模型作了修改,就要求 (固化) 用户作出判断,是否进行覆盖 用 CDM 或 PDM 文件中的模型数据代替字典中的数据 Replace 注意:这种模式执行后,自动提取模型,所有的设计者将在新的模型下工 (代替) 作,固化现有模型,覆盖字典中的原有信息 不提交改变,只是一种模拟。模拟结束时,所有字典的内容不作修改。在 Simulate 实际固化的过程中, 使用这个模式检测 CDM 或 PDM 文件的模型数据和字典 (模拟) 中模型数据有所不同 从 CDM 或 PDM 文件产生新的模型或工程, 并且保护字典中的原始模型数 Create (产生) 据。使用这个模式产生和存储模型的另一个版本 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第7章 检查、固化和提取概念数据模型 ·107· 键入目标文件的名称,在这个目标文件中将存放提取的模型。 6. 键入提取的模型将被存储的目录。 7. 8. (可选项)选择“Lock entire model”检查框。这样选择后,阻止任何人修改已被提 取的模型。如果对这个模型有加锁的权限,只能作这种选择。加锁将在第十四章 中介绍。 单击“OK”“Message”窗口(图 7-18)打开,显示提取的过程。 , 9. 图 7-16 图 7-17 图 7-18 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第7章 检查、固化和提取概念数据模型 ·109· l 当首次从一个 CDM 或 PDM 文件把模型固化到 MetaWorks 字典中时,MetaWorks 为模型对象分配新的对象 ID 号。因此,固化后应该立即提取该模型,以便新的对 象 ID 号被用在模型以后的工作中。 l 固化和提取既能够在 DataArchitect 中执行,也能在 MetaWorks 客户中执行。 DataArchitect 能够作为 MetaWorks 字典的客户。 l MetaWorks 客户提供了一个固化模型、提取模型、管理用户权限的用户界面。为 了执行这些操作,MetaWorks 客户首先必须和 MetaWorks 服务器以及字典数据库 建立连接。 l 根据选择的固化选项和模式执行固化过程,这些选项和模式决定了固化处理的结 果。 쮼뾼쳢 如何检查 CDM 文件? 1. 如何查看错误或警告信息? 2. 如何直接转到修改错误或警告的窗口? 3. 为什么要对模型进行固化和提取? 4. 哪两个设置决定固化处理的结果? 5. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第8章 生成物理数据模型 本章介绍从概念数据模型(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。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第8 章 生成物理数据模型 ·111· 打开“Generate a Physical Data Model”窗口,在“Generation options”组框中,选 2. 择适当的选项,单击“Yes”按钮。 打开“Generating Physical Data Model”窗口。 3. 在“Generation”和“Preservation”页上选择适当的选项。 4. 单击“OK” ,开始生成 PDM。 5. 实验 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 选项。 “Save model before generation”选项不能保证 CDM consolidate model before generation” 和 PDM 在 MetaWorks 字典中具有一致的 ID 号,一般不推荐使用这个选项。 2. 在“Generating Physical Data Model”对话框(图 8-2)窗口中单击“Generation” 页,选择生成 PDM 的选项。下一节中介绍这些“Generation”选项的详细内容。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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
  • ·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”框中输入: (Reference)选项可以指定生成的 PDM 中父表中的记录修 AA_。选择表的“参照完整性” 改或删除时,子实体中对应记录的修改和删除规则。 l 表前缀(Table Prefix)。使用“表前缀”为 PDM 中产生的表指定一个前缀名,这 个前缀名对于在同一个数据库中区分来自不同模型的表十分有用,一般来说,不 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·116· PowerDesigner 数据库建模技术 特性(图 8-4),如:工程名称(Project Name) 、工程代码(Project Code)、名称(Name)、代码 、版本(Version)、语言(Language)、描述(Description) (Code)、标签(Label)、作者(Author) 和注释(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
  • 第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 中表的主键或主键的一部分。 实体(Entity) 表(Table) PUBLISHER Publisher PUBLISHER ID <pk> Publisher id PUB_PUBLISHER_ID<fk> Publisher name PUBLISHER_NAME Publisher city PUBLISHER_CITY Publisher sate PUBLISHER_SATE 图 8-5 8.3.2 냑 CDM 훐뗄솪쾵힪뮻돉 PDM 훐뗄닎헕췪헻탔 在 CDM 生成 PDM 的过程中,CDM 中的“联系”被转换成 PDM 中的“参照完整性” , 这些“参照完整性”是由“联系”的基数和依赖性所控制的。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第8 章 生成物理数据模型 ·119· 图 8-7 依赖性一对多联系的转换如图 8-8 所示: 在缺省状态下,PDM 中所有的参照完整性是一对多的,外键的强制特性代表最小的记 录数(Min)是零个或一个。参照完整性中基数的最大数(Max),表示一条父记录最多可 以对应的子记录数。 CDM PDM 图 8-8 多对多联系的转换 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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
  • ·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
  • 第8 章 生成物理数据模型 ·123· 从概念数据模型 PUBS2INT 的例子(图 8-14)中看到,在大多数情况下查询职工数据 时,不考虑职工是销售人员还是顾客代表,这时,选择生成父实体模式是较为合适的。生 成父实体模式,在 PDM 中只生成父表,查询信 息时消除了父子表数据的连接,由此改进了系统的可用性和运行效率。 CDM PDM 标识属性 图 8-14 标识属性(Specifying attribute)的特点 标识属性(图 8-15)仅对“生成父实体”模式有效。在 CDM 生成 PDM 时,标识属性 在父表中生成一个列。通过这个列辨别子实体中互斥的记录。例如:一个职工要么是顾客 代表,要么是销售员。把 CR 定义成继承连接中的一个标识属性,这个标识属性在生成的父 表中作为一个列,该列用来标识一条记录是顾客代表还是销售员。注意:如果各类子记录 之间不是一种互斥的关系, 请不要使用标识属性。 标识属性是通过名称(Name) 代码(Code)、 、 数据类型(Data Type)以及长度(Length)来定义的。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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
  • ·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
  • 第8 章 生成物理数据模型 ·127· 图 8-19 CDM 图 8-20 当选择“生成父实体” (Generate parent)“生成子实体” 、 (Generate children)“继承所 、 有的属性”(Inherit all)选项时,上面例子中的 CDM 生成如下 PDM(图 8-21) : PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·128· PowerDesigner 数据库建模技术 PDM 图 8-21 对同样的 CDM,如果选择生成父实体(Generate parent) 、生成子实体(Generate 、继承标识符(Inherit identifer)选项,生成的 PDM 如下(图 8-22): children) PDM 图 8-22 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·130· PowerDesigner 数据库建模技术 CDM PDM 实体和联系 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 符合特定 业务信息的需求,应该在概念级修改模型。要增强数据模型的物理实现特性,应该在物理 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第8 章 生成物理数据模型 ·131· 级修改模型。在建模过程中应遵循下面的规则: l 在 CDM 中增加实体与数据项,以满足业务信息的需求。在 PDM 中增加表和列, 只是为了改进模型的物理实现。 l 在概念级给对象赋予一个有意义的名称,在物理级不需要重新命名。 l 在概念级精确地定义基数和存在性,在物理级不需修改参照完整性。 l 概念级用有意义的术语表达业务规则的“描述” ,物理级不需要修改这些业务规则 的“描述” 。 实验 8-2 生成 PDM 描述 在这个实验中,从 Library.CDM 模型文件生成了一个 PDM。生成之前,按下列要求选 择模型中继承连接的生成模式(Generation mode) 。 l 为职工(Employee)与其子实体间的继承连接选择“生成子实体”(Generation (Generate children/Inherit all)的属性选项。 Children)和“继承所有” l 为专职人员 (Professional)与其子实体间的继承连接, 选择 “生成父实体(Generate ”选项。 Parent) 使用 Sybase SQL Anywhere 作为目标数据库管理系统,接受缺省的文件名,然后开始生 成 PDM。 步骤 随模型打开 CDM 工作区。选择 Dictionary→Generate Physical Model,显示一个确 1. 认对话框并确认后,打开“Generating physical data model”窗口。 从“Database name”下拉列表框中,选择目标数据库管理系统 Sybase SQL 2. Anywhere。 接受 PDM file name 的缺省设置, 这个文件名是由 CDM 生成的 PDM 文件名。 (实 3. 际工作中可选择合适的路径和 PDM 文件名, 为做练习先接受缺省设置值) 也可以 单击问号 (?) 按钮打开一个窗口, 选择一个文件名, 还可以键入一个特定的 PDM 文件名。DataArchitect 能够在这个文件名中写入模型数据,如果选择了以前生成 的 PDM 文件,DataArchitect 用新的 PDM 覆盖这个模型文件。 在“Generation”页上选择合适的选项(为做练习先接受缺省设置) 。 4. 选择保护修改(Preserve modifications)选项(为做练习先接受缺省设置) 。 5. 单击“OK” ,开始生成 PDM。 6. 检查 PDM 的结果,注意多对多联系和继承连接的转换。 7. 解决方案 解决方案如图 8-25 所示: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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 在正确的级别建模和修改模型是十分关键的。如果要修改业务规则、增加信息实 体及联系,应该在概念级工作;如果只是增强模型的物理实现细节,应该在物理 级工作。 쮼뾼쳢 什么是 PDM? 1. 描述 DataArchitect 中产生 PDM 的四种方法。 2. 描述从 CDM 生成 PDM 的生成选项。 3. 如何使用“保护修改(Preserve modifications)”生成选项。 4. 填写下表(表 8.2) 5. 表 8.2 CDM 对象 相应的 PDM 对象 Table Column Primary Key Foreign Key Reference 解释 CDM 中的对象 ID 号与其生成的 PDM 中的对象 ID 号之间的关系。 6. 至少给出三种在正确级别建模的指导方法。 7. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第9章 调整物理数据模型 调整物理数据模型对于概念模型的物理实现具有重要的现实意义。一个数 据模型实现后,其性能高低与物理模型的调整关系密切,在模型的具体实现细 节上应做认真的研究。本章详细介绍了调整物理数据模型的手段和方法。学完 本章后,能够达到如下目的: 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 对象上。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第9章 高速物理数据模型 ·135· 9.2 数据完整性和一致性 数据完整性(Integrity)和一致性(Consistency)是通过下面两种约束类型实现的: l 表约束和列约束; l 参照完整性约束。 9.2.1 뇭풼쫸뫍쇐풼쫸 简单来说,约束是在数据库的表和列上定义的限制条件,表约束和列约束对表和列的 数据进行了限制。DataArchitect 使用检查约束(Check Parameter)定义表约束和列约束,检查 约束定义了数据的取值范围和有效性规则,能够把检查约束应用到域、列、数据项以及实 体的属性上。 DataArchitect 支持标准约束和有效性规则两种检查约束。 标准约束 标准约束是一般的数据控制,诸如最大值、最小值和缺省值,格式,度量单位(即数 据的使用单位,如:公斤、米、个、条等) 。 进行如下操作,设置标准约束: 选择 Dictionary→List of Domains 或者 Dictionary→List of Columns,打开域列表(List 1. 。 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
  • ·136· PowerDesigner 数据库建模技术 图 9-2 标准约束各项内容如表 9.1 所示: 表 9.1 标准项目 描 述 最小可接受的值,它必须小于等于最大值 Minimum 最大可接受的值,它必须大于等于最小值 Maximum 在没有输入数据时的缺省值,它必须界于最大值和最小值之间,并且必 Default 须是列表中的值 标准度量单位(数据项中数据的计量单位,如:公斤、米、个等) Unit 数据的格式(例如:999999.99) Format 迫使所有的字母都转换成小写字母 Lowercase 迫使所有的字母都转换成大写字母 Uppercase 选择该检查框,在物理表中保护数据不被修改 Cannot Modify 授权值,这些值必须界于最大值与最小值之间 List of Values 标识一个授权值反映到用户界面上的数据,如在表中某个列的值为“M” , Label 反映到用户界面上的数据为“男” 有效性规则 有效性规则是根据业务需求确定的数据控制规则,这些规则是在物理级定义的。 DataArchitec 支持服务器端和客户端两种有效性规则的定义。 l 服务器端有效性规则,是由 RDBMS 强迫完成的有效性规则。服务器端有效性规则 是使用 SQL 语句及其目标 RDBMS 支持的 SQL 扩展语句实现的。 l 客户端有效性规则,是由客户端强迫完成的有效性规则。客户端有效性规则是使 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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 是 如果一个职工不选择保险计划,那么他的保险号 标准约束:缺省值(Default)为 A12 为: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
  • ·138· PowerDesigner 数据库建模技术 图 9-3 选择 Dictionary→List of Business Rules,打开“List of Business Rules”窗口(图 9-4)。 2. 图 9-4 3.在 Name 与 Code 列中键入 Emp_ID。 4.从 Type 下拉列表框中选择“Validation” 。 单击“Define”按钮, 打开“Business Rule Definition”窗口(图 9-5) 在 , “Description” 5. 框中键入如下描述:职工的 ID 号必须大于零。 以下是把表达式附加到业务规则上的步骤(步骤 6~9) : PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第9章 高速物理数据模型 ·141· 图 9-10 ,直到返回 PDM 主窗口。 14.单击“OK” 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
  • ·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
  • 第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)。把主表中主键修改为一个新的值时,相应修改子表中外键的值; 或者删除主表中主键的记录时,要相应删除子表中外键的记录。 定义参照完整性 定义参照完整的步骤如下: ,打开“Reference Properties” 1.在模型中双击参照完整性(两个表间一条线带箭头的) 窗口(图 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
  • ·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
  • 第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
  • ·146· PowerDesigner 数据库建模技术 表 9.4 值 操作 对父表的改变 子表中的结果 父表中的参照值(主键)能够 不做任何操作 没有任何改变 None 修改或删除 如果在子表中有一个或多个 匹配的子记录存在时,在父表中 修改或删除 没有任何改变 Restrict 的参照值(主键)不能被修改或 删除 在父表中的参照值(主键)能 修改或删除了子表中的参照 修改或删除 Cascade 够被修改或删除 值(外键) 在父表中的参照值(主键)能 设置子表中的参照值(外键) 删除 Set null 够被删除 为 Null 设置子表中的参照值(外键) 在父表中的参照值(主键)能 为缺省值,这个缺省值是在列 删除 Set default 够被删除 上指定的 表 9.5 业 务 规 则 参照完整性 Delete constraint 如果图书馆中有一册或多册书的复本时,书的信息一定不能删除 Restrict 当一个行政管理助手终止在图书馆的工作时,对由这个助手领导的所有专 Set null 业人员的行政助手职工 ID 号,设置为空 当一个图书管理员或知识专家终止了在图书馆的雇佣关系时,他的雇员 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
  • 第9章 高速物理数据模型 ·147· 图 9-16 图 9-17 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第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
  • ·150· PowerDesigner 数据库建模技术 图 9-19 图 9-20 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第9章 高速物理数据模型 ·151· 3.双击视图对象符号,定义视图的特性并修改视图的内容,打开“View Properties” 窗口(图 9-21)。 图 9-21 4.在“View Properties”窗口键入表 9.6中的数据: 表 9.6 特 性 值 描 述 视图的名称,最大为 80 个字符 Name Phone List 视图的参考名称,这个代码使用在数据库 Code Phone_List 生成脚本中 职工的电话号码视图 对视图的描述,最大为 254 个字符 Label 只是为了查询定义视图,不能通过这个视 不选择 Query only 图修改表 单击“Updatable”单选 为查询和修改定义视图,这个视图既能用 Updatable 按钮 于查询,也能用于对表进行修改 选择这个检查框 数据库生成脚本中包含视图生成语句 Generate view 选择这个检查框 在视图中插入记录进行控制 With check option 使用用户定义的 SQL 查询代替标准的 不选择 User-defined SQL SQL 查询 5.通过下列方法修改视图: (1) 单击“Query”按钮。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·152· PowerDesigner 数据库建模技术 (2) 单击“Column”页。 (3) 通过操作使 Column/Expresion 框中包含 Employee 表的 emplname、empfname 列和 Store 表中的 phone、city 列。 ,返回到“View Properties”窗口。 6.单击“OK” ,返回到 PDM 工作区。 7.单击“OK” 练习 在这个练习中,先产生一个空视图,然后再选择表。 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
  • 第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,可应用业务规则,也可添加注释、描述、选 项等。 ,返回“Table Properties”窗口。 7.单击“OK” 实验 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
  • ·154· PowerDesigner 数据库建模技术 5.双击“Title Text”列,把 Title Text 列指定为候选关键字(图 9-25)。 图 9-22 图 9-23 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第9章 高速物理数据模型 ·155· 图 9-24 图 9-25 6.如果需要,可以键入如下几个为文档和报告而设置的选项: l 标签(Label) l 约束名(Constraint name) l 描述(Description) l 注释(Annotation) l 规则(Rule) l 选项(Option) ,返回到“Table Properties”窗口。 7.单击“OK” PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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 索引类型的所有者(只适用于 RedBrick, unify, oracle 数据库 无 Type 管理系统) PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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: 单击 返回 窗口,选择的列在“List of columns AUTHOR” ” 组框中出现(图 9-30)。 9.选择表示排列顺序的升序的“Ascending”单选按钮。 10.单击“OK”按钮,完成索引定义。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第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
  • ·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
  • 第9章 高速物理数据模型 ·161· 图 9-34 8.需要时可填写如下内容: l 标签(Label) l 描述(Description) l 注释(Annotation) l 业务规则(Rule) l 选项(Option) l 排列顺序(Sort) ,返回到“Table Properties”窗口。 9.单击“OK” 9.5.1 듓쯷틽훐즾돽튻쇐 从索引中删除一列的步骤如下: 1.在“Indexes of the Table”窗口,从“List of indexes”中选择索引。 2.从“List of columns”组框中,选择要删除的列。 3.单击“List of columns”组框下面的“Delete”按钮。 ,返回到“Table Properties”窗口。 4.单击“OK” 9.5.2 즾돽쯷틽 能够使用两种方法删除索引: l 从表中删除索引。 l 从索引列表中删除索引。 从表中删除索引 从表中删除索引的步骤如下: 1.在“Indexes of the Table”对话框中,选择要删除的索引。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·162· PowerDesigner 数据库建模技术 2.单击“List of columns”组框中的“Delete”按钮。 ,返回到“Table Properties”窗口。 3.单击“OK” 从索引列表中删除索引 从索引列表中删除索引的步骤如下: 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
  • 第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.使用上述两种方法修改视图,使其符合要求(例如删除不需要的字段) ,返回到“View Properties”窗口。 7.单击“OK” ,返回到 PDM 工作区。 8.单击“OK” 9.5.6 뚨틥뫲톡맘볼ퟖ 跟随指导操作,使用下面的事实型业务规则,把一个列定义为候选关键字。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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) ,返回到“Table Properties”窗口。 7.单击“OK” 8.单击“Indexes”按钮,打开“Indexes of the Table:EMPLOYEE”对话框。 9.为候选关键字列定义索引。 ,返回到“Title Properties”窗口。 10.单击“OK” 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 键(不相邻的列) ,依次单击作为索引的列。 ,返回到“Indexes of the Table”对话框。 7.单击“OK” 8.选择升序(Ascending)或降序(Descending)单选按钮,这个选项决定了表中记录 的排列顺序。 9.选择合适的索引类型。 ,直到返回 PDM 工作区。 10.单击“OK” 在索引列表中增加索引的步骤如下: 1.选择 Dictionary→List of Indexes,打开“List of Indexes”对话框。 2.单击“New”按钮。 3.为索引键入 Name 和 Code 等。 4.单击 table 列中的省略号(…)按钮,打开“List of Tables”窗口。 5.为索引选择一个表。 ,返回到“List of Indexes”窗口。 6.单击“OK” PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第9章 高速物理数据模型 ·165· 7.单击“Define”按钮,打开“Indexes of the Table”窗口。 8.单击“Add”按钮,打开当前表的“List of Cloumns”窗口。 9.选择一列或多列作为索引列。 ,返回到“Indexes of the Table”对话框。 10.单击“OK” 11.选择升序(Ascending)或降序(Descending)单选按钮。 12.选择索引类型。 ,返回到“List of Indexes”对话框。 13.单击“OK” 9.6 带数据修改表结构 在 MIS 系统开发过程中,常常把生成的快速原型系统交付用户去使用。在用户使用时, 各种需求分析时的错误将逐渐暴露出来,这就需要对物理模型进行修改,如增加和减少表 的列、修改列的数据类型等,但此时旧表中已经输入了许多数据。使用 DataArchitect 可以 实现带数据修改表的结构。 带数据修改表结构的原理如图 9-35 所示: Drop ( PERSON) 带数据的表 按新结构产生临时 把 (PERSON) 表 中 表(tmp_PERSON) 表 的数据插入到 (PERSON) (tmp_PERSON)中 以修改后的结构 把 Tmp_PERSON Drop 建立(PERSON) tmp_PERSON 表 表中的数据插入 新 建 的 PERSON 表中 图 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) , PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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:examplePerson.apm 3.修改表结构。 4.选择 Database→Modify Database,打开如图 9-36 所示窗口。在该窗口的“Archive 框中输入存档的文件名 c:examplePerson.apm。 选择 Modify table、 model” 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
  • 第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
  • ·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
  • 第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
  • ·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
  • 第9章 高速物理数据模型 ·171· 作为数据窗口中列的中文名字。 图 9-41 3 . 选 择 Client → PowerBuilder Attribute Generation, 打 开 “ DataWindow Attribute 。选择“Generation options”组框中的生成选项,单击 Generation”窗口(图 9-42) “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
  • ·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
  • 第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
  • 第 10 章 触发器、存储过程和函数 本章详细介绍了触发器、存储过程和函数的建立方法,对建立过程中的概 念作了详细的说明。学完本章后,能够达到如下目的: l 能够定义存储过程,了解存储过程的功能; l 解释触发器模板、触发器及触发器脚本三者的不同; l 解释模板项,并说明它的用途; l 解释宏,并说明宏的用途; l 举例说明变量的类型; l 描述为触发器和存储过程生成 SQL 脚本的两种方法; l 使用 SQL Query Editor 编辑 SQL 语句。 10.1 触发器(Trigger) 当对一个表执行特定的操作时,被调用或者被“触发”的 SQL 语句称为触发器。触发 器能够依次调用 SQL 语句或者存储过程。能够使用 DataArchitect 在物理数据模型中定义触 发器。 触发器是事件驱动的 SQL 代码,当插入、删除、修改指定的表和列中的数据时,这些 代码将自动执行, 因此触发器总是与特定的数据库表及特定的数据库事件 (如插入(Insert) 、 删除(Delete)、修改(Update)等)相联系。 触发器的优点 触发器不依赖于任何客户端应用程序,也不依赖于访问数据库的语言。触发器有如下 优点: l 标准化。在整个应用上,触发器保证了数据的完整性和一致性。一旦在表上建立 了触发器,它就存储在数据库中。这种方法消除了各个客户应用程序的冗余编码, 便于规则发生变化时对编码进行修改。 l 高效率。触发器初始执行后,作为编译的代码执行。它的运行速度快,与在客户 工作站上执行这些代码相比,在服务器上执行这些代码减少了网络通讯量和网络 冲突。触发器把数据完整性代码放在服务器平台上,比放在客户工作站上更有效。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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
  • 第 10 章 触发器、存储过程和函数 ·177· 图 10-2 从下拉列表框中选择“ORDER”表(图 10-3)。 4. 图 10-3 首先选择“BeforeUpdateTrigger” ,再选择“User-defined”检查框(图 10-4) 。 5. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 10 章 触发器、存储过程和函数 ·179· (3)单击“Add”按钮。 图 10-5 图 10-6 增加触发器的名称,在触发器名称的前面键入“%%”表示注释。 5. 单击“Preview”按钮可查看触发器脚本。 6. 单击“OK”按钮,返回到“List of Triggers”窗口(注意:用户定义(User-defined) 7. 和生成(Generate)检查框自动被选择(图 10-7))。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·180· PowerDesigner 数据库建模技术 图 10-7 单击“OK”按钮,保存定制触发器。 8. 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
  • 第 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
  • ·182· PowerDesigner 数据库建模技术 表 10.2 选 项 选择的结果 脚本的内容全部是大写字母 Uppercase 脚本的内容全部是小写字母 Lowercase 在脚本中用非重读字符代替重读字符 No accent 脚本通过对象的 Code 引用对象 Code 脚本通过 Name 引用对象 Name 脚本使用 ANSI 字符集 Windows(ANSI) 脚本使用 DOS 字符集 DOS(OEM) 脚本中的每一节增加一个标题(例如 Database Name) Add titles 当选择“ODBC syntax”检查框时,DataArchitect 生成 ODBC 语 法脚本,而不生成特定的 RDBMS 语法脚本。如果不选择“ODBC syntax”检查框,DataArchitect 使用 RDBMS 的专用语法生成脚本。 ODBC Syntax 选择“ODBC syntax”检查框时,ODBC 不支持的参照完整性选项 变成灰色,这意味着 ODBC 不支持这些参照完整性 生成数据库或脚本前检查 PDM,如果发现错误停止生成 Check model 参照完整性选项 数据库中有如下两种生成参照完整性的方法: 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
  • 第 10 章 触发器、存储过程和函数 ·183· 单击“Options”,打开选项页。 5. 选择通用选项(General)和参照完整性(Reference Integrity)选项。 6. 单击“Generate Script”按钮。 7. 在数据库中直接产生触发器 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
  • ·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
  • 第 10 章 触发器、存储过程和函数 ·185· 图 10-10 图 10-11 在“Apply to”下拉列表框中,选择“Current Model”时,修改后的触发器模板仅 3. 在当前模型中有效;如果选择“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
  • ·186· PowerDesigner 数据库建模技术 在“Definition”框中插入对该触发器模板的修改内容(也可单击“Zoom”按钮, 4. 通过特定的工具修改) 。 单击“Modify”按钮,一个星号出现在模板列表的后面,表示这个触发器模板已 5. 被修改。 单击“OK”按钮。 6. 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
  • 第 10 章 触发器、存储过程和函数 ·187· (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 通过客户端应用程序来调用执行的。 应用 程序与存储过程或函数之间的关系如图 10-12 所示。 存储过程和函数在以下几方面有所不同: l 函数把结果返回到调用环境; l 存储过程没有为调用环境返回结果。 存储过程和函数在以下几方面是类似的: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 10 章 触发器、存储过程和函数 ·189· 存储过程有助于从应用逻辑中把业务规则分离出来。当业务发生变化,需要修改业务 规则时,这个变化只影响存储过程。与改变、测试和调整一个及多个客户的成千上万个用 户程序相比,改变和测试存储过程是更有效、更省时间、少犯错误的好方法。 l 保证了运算法则的一致性。 存储过程能够确保运算法则每次以同样的精度运行。与此相反,在一个或多个客户应 用中多处存放的嵌入式 SQL 语句,它们写的稍有不同,就会产生不同的结果。 存储过程的缺点 存储过程潜在的缺点如下: l 难以保持负荷平衡。 存储过程提出了一种在服务器上集中处理的模型,用集中处理代替事务的分布处理。 这种方法,除非服务器的性能进行了优化,符合存储过程运行的需求,否则它会降低服务 器的性能。 l 增加了管理要求。 存储过程是一个共享的资源。管理员必须确保使用这些存储过程,不允许同一个业务 规则、事务、运算法则的多个存储过程存在。 l 存储过程在不同的 RDBMS 上语法不同。 存储过程使用了特定厂商扩展的 SQL 语句。一般来讲,存储过程代码不能方便地在不 同的 RDBMS 之间进行转换。 10.4.2 쪹폃듦뒢맽돌쒣냥뚨틥듦뒢맽돌뫍몯쫽 存储过程模板 定义存储过程和函数从存储过程模板开始,由存储过程模板可以为特定的事务、操作 或运算法则定义存储过程。存储过程模板的结构如图 10-13 所示: 模板(Template) Item Item 定制的代码 存储过程脚本 (可执行 的 SQL 语句) 图 10-13 步骤 使用存储过程模板定义存储过程和函数的步骤如下: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·190· PowerDesigner 数据库建模技术 随模型打开 PDM 工作区,选择 Diction→aryTriggers and Procedures→List of 1. Procedures,打开“User-Definied Procedures”窗口(图 10-14)(注意:这个窗口中 包含用户定义的函数)。 在列表中单击一个空行。 2. 图 10-14 为存储过程键入 Name、Code 和 Label。 3. 如果要产生的对象不是存储过程,而是一个函数,需要选择”Function“检查框。 4. 单击“Zoom”按钮,打开“Definition”窗口。 5. 使用 DataArchitect 提供的模板开始编辑存储过程或函数,为存储过程和函数建立 6. 脚本。在这个界面上能够使用“指指点点”的方法编写存储过程或函数的脚本, 也能直接在脚本编辑框中键入各种语言元素。一个存储过程或函数包括下面类型 的语句(表 10.4): 表 10.4 分 类 描 述 函数 特定 RDBMS 的函数 操作符 逻辑操作符 存储过程中还可包括如下对象的代码: l 表(Table) l 列(Column) l 连接(Join) PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 10 章 触发器、存储过程和函数 ·191· l 业务规则(Business Rule) 在存储过程或函数的脚本框中,单击想要插入语句元素的位置。 7. 从“Category”列表框中选择一个分类(图 10-15)。例如,选择变量(Variables) , 8. 在右边的列表框中显示出变量列表。 图 10-15 从变量列表中选择一个变量。 9. 单击“Add”按钮,在光标所在位置插入选择的变量。 10. 单击“OK”按钮,返回到“User-Definition Procedures”窗口。 11. 单击“OK”按钮,保存存储过程或函数的脚本。 12. 注 意: 当打开 PDM 工作区时,已经选择了一个目标 RDBMS,因此,在 PDM 工作区中完成 的全部工作,包括定义存储过程,都属于这个特定的 RDBMS。 为存储过程定义一个定制的模板 如图 10-16 所求,能够根据特定的标准制作一个存储过程模板,用模板产生的存储过程 脚本中都包括这个模板。例如:一个信息管理系统的存储过程可以使用统一的注释,通过 这些注释,能够保证所有使用这个模板的存储过程有相同的注释。对特定的目标 RDBMS 来说,定制的模板能够应用到全局物理数据模型中,也可以应用到特定的物理数据模型中。 像产生触发器模板项一样,可以为存储过程和函数定义模板项。这些模板项为产生存储过 程和函数提供了便于使用的结构。 步骤 修改存储过程和函数模板项的步骤如下: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·192· PowerDesigner 数据库建模技术 选择 DictionaryTrigg→er and Procedures→Trigger Template Item,打开“Trigger 1. Template Items”窗口(图 10-17)。 定制的存储过 存储过程模板 程模板 存储过程 存储过程 存储过程脚本 (可执行 存储过程脚本 (可执行 的 SQL 语句) 的 SQL 语句) 图 10-16 图 10-17 选择模板项 CustomProc,并编辑这个模板项。 2. 从“Apply to”下拉列表框中选择“Current Model” ,这样,修改后模板项只在当 3. 前的模型中起作用。同样,若选择“All Model” ,修改后的模板项对全局模型起 作用。 可以直接修改模板项,也可以单击“Zoom”按钮,打开“Definition”窗口后对模 4. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 10 章 触发器、存储过程和函数 ·193· 板项进行修改。 单击“OK”按钮。 5. 实验 10-5(指导实验) 制作一个存储过程的模板项 描述 在这个实验中,跟随指导操作,观察 DataArchitect 的存储过程模板项,并把制作的模 板项应用到模型中。制作模板项是为了在存储过程中调用错误(ERROR)宏。请记住光标 的初始位置。 如果操作失误,想要重新开始,请单击 “Default”按钮,并选择“Restore Original 。 Value” 步骤 随模型打开 PDM 工作区,选择 Dictionary→Triggers and Procedures→Triggers 1. 。 Template Items,打开“Trigger Template Items”窗口(图 10-18) 图 10-18 从“Trigger Template Items”列表中选择 CustomProc,在“Definition”框中显示该 2. 模板项的脚本(图 10-19)。 单击“Zoom”按钮,打开 SQL 查询编辑器。 3. 通过编辑该模板项的定义制作出符合用户要求的模板项。其方法如下: 4. (1) 在定义文本框的 begin 语句后,想要插入语句的位置单击鼠标左键。 (2) 选择宏(Macro)的分类(Category) 。 (3) 选择宏名为 ERROR()的宏。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·194· PowerDesigner 数据库建模技术 (4) 单击“Add”按钮,并键入错误实例(图 10-20) 。 单击“OK” ,返回“Trigger Template Items”窗口(图 10-21) 。 5. 从“Apply to”下拉列表框中选择“Current Model” 。 6. 单击“OK”保存这个模板。 7. 图 10-19 图 10-20 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·196· PowerDesigner 数据库建模技术 10.6 变量 下图(图 10-22)中两个百分号之间的字符串就是变量: Before delete trigger “%TRIGGER%” for table “%TABLE%” 在模板中的变量 在脚本中的变量值 Before delete trigger “tdb_administrative” for table “administrative” 图 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 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 10 章 触发器、存储过程和函数 ·197· Template Items,打开“Trigger Template Items”窗口。 单击 CustomProc 模板项,在“Description”框中显示模板项的脚本。 2. 单击“Zoom”按钮,打开该模板项的“Definition”窗口。 3. 编辑该模板项。 4. (1) 在定义文本框中单击要插入内容的位置。 (2) 择 Macro 分类。 (3) 选择 ERROR()宏。 (4) 单击“Add”按钮。 单击“OK”按钮,返回“Trigger Template Items”窗口。 5. 在“Apply to”下拉列表框中选择“Current Model” ,把这个模板项应用到当前模 6. 型中。 单击“OK”按钮,保存该模板项。 7. 步骤二:定制一个缺省触发器。 在 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
  • ·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
  • 第 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
  • 第 11 章 检查物理数据模型生成数据库 本章介绍了检查物理数据库模型与产生数据库或数据库生成脚本的过程。检查物理数 据模型为我们提供了查找模型中错误的智能化方法;通过生成数据库脚本可以确认模型在 实际数据库中生成对象的数据库语言,并可以更深刻地理解数据库语言,帮助数据库模型 设计者进一步理解模型对象的意义,使用这些数据库生成脚本可以脱离模型环境在数据库 中建立数据库对象。学完本章后,能够达到如下目的: 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”窗 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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
  • 第 11 章 检查物理数据模型生成数据库 ·203· “Correct”按钮 在“Check Model Messages”窗口,选择错误或警告信息行,然后单击“Correct”按钮, 即可打开更正该错误或警告的窗口。也可以双击该信息行,打开更正该错误或警告的窗口。 重新显示错误信息和警告 如果单击“OK”按钮,关掉了“Check Model Messages”窗口,全部的错误和警告就 存储在内存中。为了显示上次检查发现的错误和警告,选择 Dictionary→Display Messages。 显示、保存、打印和编辑信息文本与 CDM 检查的处理过程一样。 实验 11-1(指导实验) 检查 PDM 描述 跟随指导操作,检查 CHECKTEST.PDM。 步骤 随模型打开 PDM 工作区, 选择 Dictionary→Check Model, “Check Physical Data 打开 1. 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 定义的对象产生数据库或产生数据库生成脚本。 数据库 生成脚 PDM DEF 文件 + = DB 生成参 生成选 图 11-3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·204· PowerDesigner 数据库建模技术 生成参数和选项控 制着整个处理过程和结果 。生成参数和选项的有 效性依赖于目标 这些参数和选项是由特定的 RDBMS 的 DEF 文件确定的。对目标 RDBMS 无效的 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
  • 第 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
  • ·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
  • 第 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
  • ·208· PowerDesigner 数据库建模技术 4.单击“Generate script”按钮,打开如图 11-8 所示的确认框。 图 11-8 ”按钮。 5.单击“是(Y) 6.打开数据库生成脚本文件,并浏览这个文件。 11.2.3 쪹폃 ODBC 짺돉쫽뻝뿢 ODBC 是 Windows 环境下连接到数据库管理系统的标准接口,ODBC 被设计成为一个 开放的、方便的、标准的应用程序接口(API) ,这个 API 能够提供访问关系型和非关系型 数据库管理系统的接口,同时也提供了逆向工程这些数据库管理系统的能力。 步骤 直接使用 ODBC 生成数据库,其步骤与生成数据库脚本的步骤基本相同,下列步骤是 与生成数据库脚本步骤不同之处。 生成数据库脚本时, “Generate script” 单击 按钮,而生成数据库时单击 “Create database” 1. 按钮。 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
  • 第 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 的数据源,并提供连接到这个数据源上所需要的连接信息。 쮼뾼쳢 如何检查 PDM? 1. 如何解决 PDM 检查中发现的错误? 2. 如何产生数据库生成脚本? 3. 如何直接产生数据库? 4. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 12 章 逆向工程 本章介绍了利用 DataArchitect 从现存数据库中逆向工程产生模型文件的步骤。逆向 工程对于改造无模型文档的 MIS 系统具有重要的现实意义,学完本章后,能够达到如下 目的: l 描述 ODBC 在逆向工程中的作用; l 描述从数据库中逆向工程的一般步骤; l 描述从数据库生成脚本中(数据定义语言 DDL)逆向工程的一般步骤。 12.1 通过逆向工程生成 PDM 在 DataArchitect 中,逆向工程是读数据库分类表或读生成脚本产生 PDM 的过程。 DataArchitect 能够从 PDM 生成 CDM,如图 12-1 所示。 DB CDM PDM 生成脚本 DB Catalog 图 12-1 逆向工程的原因 逆向工程主要用于下列情况: l 设计和实现的、已经存在的数据库没有建立数据模型。 l 数据模型不能反映现存数据库设计的实际情况。 l 现存数据库的数据模型丢失。 l 现存的数据库需要转换到不同的 RDBMS 上,这时需要有不同的物理数据模型。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 12 章 逆向工程 ·211· 逆向工程的步骤 逆向工程的步骤如下: 1.从数据库生成脚本产生一个 PDM 文件,也可以从数据库目录分类表使用 ODBC 生 成 PDM。 2.从 PDM 生成 CDM。 图 12-2 是 DataArchitect 通过逆向工程方法使用数据库生成脚本结合 DEF文件生成 PDM 的过程。 DataArchitect DB DEF PDM Script 图 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”检查框。 ,打开“Script File Name”窗口。 5.单击“OK” 6.选择一个 Script 文件,然后单击“OK”按钮,出现显示生成过程的信息框。 ,新的 PDM 出现在窗口中。 7.单击“OK” 多脚本文件 如果有几个脚本文件,在执行逆向工程前,把所有脚本文件组合成一个单独的主文件。 当 DataArchitect 从数据库生成脚本逆向工程时,使用特定 RDBMS 定义的 DEF 文件。 12.2 使用 ODBC 生成 PDM 图 12-3 是 DataArchitect 采用逆向工程的方法通过 ODBC 把数据库分类目录中的数据库 对象生成 PDM 的过程。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·212· PowerDesigner 数据库建模技术 DataArchitect DB ODBC PBD Catalog 图 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 环境选择合适的驱动程序。 ,打开相应驱动程序选项对话框(图 12-5)。 4.单击“确定” PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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。 ,打开“Connect to an ODBC Data Source”窗口(图 12-7)。 5.单击“OK” 6.从“Data source name”下拉列表框中选择一个数据源。 7.键入有效的 User name 和 Password。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 12 章 逆向工程 ·215· 10.单击“OK”按钮开始逆向工程的过程,一个信息窗口显示处理过程。 ,在 PDM 工作区中显示生成的 PDM 结果。 11.当逆向工程处理完成后,单击“OK” 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
  • ·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
  • 第 12 章 逆向工程 ·217· 2.逆向工程同一个数据库的两种方法会产生不同的结果,试说明理由。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 13 章 带有子模型的工作 本章介绍了把一个复杂的模型划分成多个子模型的方法。子模型的划分对于团队开发 具有重要的意义。通过划分子模型,便于多个开发人员共同完成一项复杂的设计工作。学 完本章后,能够达到如下目的: l 讨论子模型与团队工作的关系及工作任务的划分; l 能够把一个模型划分成多个子模型; l 讨论全局模型和子模型的关系; l 产生、打开、显示、删除子模型; l 在相关子模型中维护对象. 13.1 全局数据和子模型 全局数据 当使用 MetaWorks 中的 Dictionary→List of Projects 菜单建立了一个工程后,在 DataArchitect 中打开一个模型文件并对该模型文件进行固化,这时,该模型文件就在 MetaWorks 字典中产生了一批模型数据。包含在这个字典中的数据就是全局数据。 子模型 包含全局数据的模型通常是由子模型组成的,设计组的成员通常工作在自己的子模型 中。使用子模型便于管理,这些子模型共同构成全局模型。设计组成员开始工作时,从字 典中提取子模型,当对子模型作了修改后,再把修改后的子模型固化进 MetaWorks 字典中。 采用这种方法,全局数据将随子模型的修改而不断地改变。 CDM 和 PDM 两种数据模型都能被分解成子模型,子模型不能单独存在,它是从全局 模型中选择的一组图形模型对象。 13.2 分解全局模型 全局模型能够分解成多个子模型。通过从全局模型中挑选模型对象,产生完成各种功 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 13 章 常有子模型的工作 ·219· 能的子模型。把一个全局模型分解成多个子模型,可根据各种标准,如: l 按功能分解(如:帐务、销售、市场等) ,它是最常采用的分解标准。 l 按组织单位分解(如:指挥部、子公司等) 。 l 按地理区域分解(如:南美、欧洲、中国等) 。 子模型还能进一步分解成更小的子模型。图 13-1 简要说明了全局模型分解成多个子模 型的过程。 全局模型 子模型 子模型 子模型 子模型 子模型 子模型 子模型 图 13-1 实验 13-1(指导实验) 产生一个子模型 描述 跟随指导操作,从全局数据模型中产生一个子模型。 步骤 1.在 DataArchitect 的 CDM 工作区中,打开 PUBS2INT.CDM 全局模型。 (按下 SHIFT 2.选择对象 Title、Publisher、Roysched,它们的联系被包含在子模型中。 键,单击对象,能够选择多个对象) 。 3.选择 Dictionary→Submodel→New,打开一个窗口,该窗口带有新产生的子模型, 如图 13-2 所示。 图 13-2 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 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
  • ·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
  • 第 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。 关闭 Pub_submodel 子模型, 返回到 PUBS2INT 全局模型工作区, 能看到 Book Category 2. 实体吗?通过 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
  • ·224· PowerDesigner 数据库建模技术 步骤三:从相关模型向子模型中添加对象。 把 PUBS2INT.CDM 全局模型中的 Author 实体增加到 Pub_submodel 子模型中。 1.选择 Dictionary→Submodel→Add/Remove Object, 打开“Select Objects”窗口(图 13-8)。 图 13-8 ,再从“Entity”下面的框中 2.从“Available Objects”下拉列表框中,选择“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
  • 第 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” Wholesaler 实体在子模型中消失, 但它的定义仍保留在全局模型 PUBS2INT.CDM 中 5. (在实体列表中可以看到该实体) 。选择 Dictionary→Submodel→Update Graphics, 单击“是”按钮,修改 PUBS2INT.CDM 全局模型,Shelf 和 Wholesaler 实体在全局 模型中显示出来,但子模型中却不显示已移去的 Wholesaler 对象。 步骤六:把全局模型或子模型中的模型对象符号拷贝到另一个子模型中。 在设计过程中,经常需要把全局模型或子模型中的一个或多个模型对象符号复制到另 一个或多个子模型中。为了实现这个目的,可按下列步骤进行: 1.从 PUBS2INT.CDM 工作区中,选择将要拷贝的实体 Order(如果要选择多个模型对 象,在按下 SHIFT 键的同时,依次单击要选择的对象) 。 选择 Dictionary→Submodel→Copy Symbols,打开“Select the Target Model”窗口(图 2. 。 13-11) 3.选择一个目标子模型。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 13 章 常有子模型的工作 ·227· 13.3 工程和模型 一个工程可以包含一个或多个全局模型,它提供了一个管理信息系统的整体结构,在 工程实践中通常把一个全局数据模型分解成多个子模型,以便于对模型的管理和为程序员 分配工作量,另外也应该保存不同时期数据模型的多种版本,以便于追溯前期的工作。 图 13-12 说明了工程、全局模型及子模型之间的关系。 工程 HR.CDM HR.CDM HR.CDM HR.CDM V2.0 V1.0 V1.0 V2.0 子模型 子模型 子模型 子模型 子模型 子模型 图 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)处理,把共享数据传送到其它模型中。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 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
  • ·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
  • 第 13 章 常有子模型的工作 ·231· 5.返回到书定单子模型中,注意到“Professional”实体消失了。 步骤七:从子模型中移去对象。 “Select 1.在书租用子模型中,选择 Dictionary→Submodel→Add/Remove Objects,打开 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
  • ·232· PowerDesigner 数据库建模技术 除了这个对象的图形符号,它的定义仍保留在全局模型中。 l 一个工程可包含多个模型,工程为管理信息系统的多个 CDM 和 PDM 提供了一个全 局框架。通过模型的版本对模型进行版本控制。 쮼뾼쳢 1. 解释子模型和全局模型之间的关系。 2. 子模型能够用什么方法修改? PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 14 章 使用 MetaWorks 进行团队控制 本章主要介绍 MetaWorks 的使用方法,通过 MetaWorks 可以对设计团队中每个队员的 模型数据进行控制,在 MetaWorks 的控制下设计团队既能协调工作又能共享模型数据,是 进行团队开发必不可少的工具。学完本章后,能够达到如下目的: l 了解团队工作在工程中的作用; l 产生 MetaWorks 用户账号; l 产生 MetaWorks 组; l 产生 MetaWorks 用户口令; l 了解固化细节和固化冲突。 14.1 团队工作和劳动划分 对于一个复杂的大型工程,仅靠一个人是难以及时实现的,在这种情况下只能把工作 任务分配给团队中的每个成员去完成。 工作的划分要能够使团队成员在各自的专业领域内工作,并保证在给定的时间期限内 完成各自的任务。 工程设计中的角色及其作用 工程设计中的角色及其作用如表达 14.1 所示。 表 14.1 角 色 作 用 产生和删除 MetaWorks 字典;产生用户 组和用户口令;阻止用户使用数据库; 管理员(Administrator) 产生和删除工程;为工程人员分配工作 任务 管理全局数据;固化全局模型和子模 型;产生和删除全局模型和子模型;修 工程管理人员(Project Manager) 改全局模型和子模型的特性;为用户分 配全局模型和子模型;管理用户组,管 理数据冲突 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 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
  • ·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
  • 第 14 章 使用 MetaWorks 进行团队控制 ·237· ,在“Password”域中键入口令。 2.打开“Enter a Password”窗口(图 14-4) 图 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
  • ·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
  • 第 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.在列表中选择用户或组。 (可选项)选择“Manager”检查框,使其成为组管理员。 5. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 14 章 使用 MetaWorks 进行团队控制 ·241· 。 4.单击“Add”按钮,打开用户或组列表(图 14-11) 5.从列表中选择用户或组。 图 14-11 ,选择的用户或组出现在“Members of the group HR”窗口(图 14-12)。 6.单击“OK” 图 14-12 (可选项)选择“Manager”检查框,使这个用户成为组管理员。 7. 注 意: 一个组的管理员能从组中增加和删除用户,一个组中可以有多个管理员。 。 8.在每一个对话框中单击“OK” 14.5 给用户和组授权 表 14.2 列出了各种权限的类型,工程、模型、子模型中的这些权限能够指定给一个或 多个用户和组。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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、 of Models 或 List of Submodel 窗口(类似于图 14-13 中的窗口) 。 List 、模型(Model)或子模型(Submodel) ,在选择的项目前出现 2.选择工程(Project) 一个箭头。 图 14-13 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·244· PowerDesigner 数据库建模技术 步骤 1.择 Options→Default Project Rights,显示权限列表。在首次执行这个任务时,这个窗 口中的列表是空的,如图 14-17 所示。 图 14-17 。 2.单击“Add”按钮打开“Users List”窗口(图 14-18) 图 14-18 3.选择一个用户或组。 ,用户或组出现在列表中。 4.单击“OK” ,然后单击“OK” 。 5.在权限下拉列表框中选择用户或组的权限(图 14-19) PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·246· PowerDesigner 数据库建模技术 被删除,当固化这个模型文件时 MetaWorks 提示用户发生了删除冲突,系统提示用户重新 产生已经删除了的对象。 MetaWorks 提供了如下(表 14.3)的删除冲突选项: 表 14.3 选 项 描 述 在 MetaWorks 字典中保护所有删除了的共享对象 Not to all 在 MetaWorks 字典中重新生成删除了的共享对象的定义 Yes to all 终止固化过程 Cancel 保护删除的对象定义不进入 MetaWorks 字典 No 在 MetaWorks 字典中重新生成对象的定义 Yes 14.6.2 탞룄돥춻 当在两份提取同一个模型的文件中修改模型后进行固化时,就会发生修改冲突。当用 户固化他们的模型时,打开如下的“Update Confirmation”窗口(图 14-20) 。 图 14-20 修改冲突选项 表 14.4 中列出了修改冲突的全部选项及其含义。 表 14.4 选 项 描 述 用被固化的文件中的对象重写 MetaWorks 字典中的对象定义。这 Update this object in the 个选项允许执行固化的用户观察引起冲突的每一个对象 dictionary 用被固化的文件中的对象定义重写 MetaWorks 字典中所有被修改 Update every object in the 的对象定义。如果预先知道旧的 CDM 和 PDM 文件包含正确的或最 dictionary 新数据,可以选择这个选项 Don't update this object in the 在 MetaWorks 字典中不修改这个对象定义 dictionary D'ont update any object in the 在 MetaWorks 字典中不修改所有的对象定义 dictionary PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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
  • 第 14 章 使用 MetaWorks 进行团队控制 ·249· 实验 14-7 MetaWorks 中的团队工作 描述 在这个实验中,可以产生一个单用户账号;产生并修改口令;产生一个组;在这个组 中包括一个用户或组;为工程定义缺省权限。 步骤一:产生单用户账号。 1.选择 Administration→List of Users。 。 2.单击“New” 3.在“User name”列中键入该用户的名称。 4.在“Full name”列中键入用户的全名。 5.在“Comment”域中键入该用户的注释。 (可选项)选择“Administrator”检查框,产生一个管理员账号,这个账号的用户将 6. 与 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
  • ·250· PowerDesigner 数据库建模技术 步骤四:在用户组中包含一个用户或组。 1.选择 Administration→List of Groups,打开“List of Groups”窗口。 2.从列表中选择一个用户组。 3.单击“Members”按钮。 4.单击“Add”按钮,打开“Users List”窗口。 5.从列表中选择用户或组。 。 6.单击“OK” (可选项)选择“Manager”检查框,让这个用户管理这个组。 7. 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
  • 第 14 章 使用 MetaWorks 进行团队控制 ·251· 쮼뾼쳢 当产生 MetaWorks 用户账号时,为什么必须产生管理员账号? 1. 说明用户组中可能有的成员。 2. 哪一个组是 MetaWorks 自动产生的? 3. 列出能够指定给用户或组权限的几种类型,并定义与每个级别有关的权限。 4. 锁定模型的影响是什么? 5. PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 15 章 MetaWorks 中的 MetaBrowser 本章介绍了使用 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) 两种观察 在每一个浏览中有两种观察方式: PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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 Submodel、business rules、domain、data item、entities、 CDM relationships、inheritance links Submodel、 Business rules、 User、Abstract Data Type、Domain、 PDM Table、Column、Reference、Index、Alternate Key、View 除了子模型外,所有的对象都能够在模型级产生 Submodel 同种类型的其它模型对象 Object 注 意: 在信息管理器中产生了一个对象后,应把在 MetaWorks 字典中直接修改后的 模型提取到模型文件中。当在 DataArchitect 中打开模型后,要把 MetaWorks 字典中直接修改后的内容在模型工作区中显示成图形符号,必须在对象列表 窗口选择“Display”选项。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·256· PowerDesigner 数据库建模技术 l 修改模型对象的定义。 注 意: 在多模型管理器中不能增加和删除模型及其对象。 打开多模型管理器 打开多模型管理器步骤如下: 1.从 MetaWorks 菜单中,连接到数据库和数据库字典。 选择 MetaBrowse→Mulitimodel Manager,或者在工具条中单击多模型管理器工具(两 2. 棵树) ,显示如图 15-2 所示。 图 15-2 树型观察 树型观察显示字典中每一个模型类型的依赖对象,其层次关系如下: l MetaWorks 字典数据库 l 模型 l 模型对象 列表观察 列表观察显示所选级别对象的详细信息。 比较模型对象 为了比较所选模型中的特定类型的对象,需要展开所选的结点。 修改模型对象 要修改一个对象,先选择这个项目,打开项目的特性窗口,作相应的修改。要打开一 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·258· PowerDesigner 数据库建模技术 图 15-4 “Comparison Manager”对话框显示两个模型之间的不同,通过 4.单击“OK”按钮, 改变文件夹图标, 观察每一种对象类型的不同, 有不同点的对象前面有一个惊叹号, 如图 15-5 所示。所选对象的特性显示在对话框下面的区域中。 图 15-5 5.从对象分类级到对象级找到对象之间的不同,如图 15-6,并在对象内部分析它们的 不同。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 15 章 MetaWorks 中的 MetaBrowser ·259· 图 15-6 分阶段比较 MetaWorks 对模型进行比较是分阶段进行的。首先在对象类型级比较模型,然后再比较 每一个对象,最后比较每一个对象的依赖对象。这种方法的优点是在比较期间,单击任一 对象分类,在比较过程中切换到所选对象的分类上并开始比较。例如:假如我们只想比较 子模型的不同,这时不必等待前面的几个对象类型都比较完,就能直接进行比较。 图标 每一个对象分类、对象和依赖对象的图标表示比较过程的进展。在下面的例子中,问 号表示在这个级别的比较还没有进行,感叹号表示比较已经发生,并发现它们之间有不同, 如图 15-7 所示。 图 15-7 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·260· PowerDesigner 数据库建模技术 打印一个比较报告 选择 Comparison→Print,打印比较结果。当打印比较结果时不能精确地打印窗口的内 容,只能打印两个模型之间的不同。打印文本的标题是对象的类型,如果两个对象之间有 某种不同,这些不同显示在对象类型的下面。 停止比较或开始一个新的比较 在比较过程中可以停止一个比较, 或当前比较完成后比较两个其它模型。“Comparison 在 “New Comparison”窗口打开。 Manager”对话框中,选择 Comparison→New, 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
  • 第 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 FilesPowersoftPowerDesigner 6Queries 目录中,为了使用这些预定义的查询检索字典,必 须使用 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。 ,打开“Interactive SQL”窗口。 3.单击“OK” ISQL 窗口被水平划分成如下三个窗格: l 数据(Data)区,用来浏览查询结果。 l 统计(Statistics)区,用来检查查询的性能。 l 命令(Command)区,用来键入 ISQL 命令。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 15 章 MetaWorks 中的 MetaBrowser ·263· 2.为什么要从 MetaWorks 字典中检索信息? PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 16 章 生成模型文档 在 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> 三种文档类型之一。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 第 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
  • ·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
  • 第 16 章 生成模型文档 ·267· 16.2 概念数据模型定制文档的生成方法 将上节的第 8 步改为选择“Modify”按钮,打开“PowerDesigner DataArchitect”窗口 (图 16-7),开始概念数据模型定制文档的生成过程。生成定制文档包括下面的内容: l 修改文档封面信息; l 为定制文档设置页眉和页脚; l 为定制文档设置概述信息; l 为定制文档项设置生成方式; l 在定制文档中增加或减少生成项目。 图 16-7 16.2.1 탞룄컄떵뗄럢쏦탅쾢 修改文档封面信息的方法如下: 1.用鼠标右键单击“Contents”窗格中的“Template”项,从弹出的菜单中选择“Title ,打开“Title Page”窗口(图 16-8)。选择“No title page”单选按钮时,表示生 Page” 成的文档没有封面;选择“Include title page”单选按钮时,表示生成的文档有封面。 图 16-8 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 第 16 章 生成模型文档 ·269· 5.在 Description 框中输入对模型的简单描述。 16.2.4 캪뚨훆컄떵쿮짨훃짺돉랽쪽 为定制文档项设置生成方式的方法如下: 1.同本节开始的操作方法打开如下的“PowerDesigner DataArchitect”窗口(图 16-11)。 该窗口的左窗格中显示了可以在文档中生成的报告对象,右窗格中显示了真正在文 档中要生成的文档内容。 图 16-11 2.在右窗格中用鼠标右键单击将要在文档中生成的文档项目,弹出如 图 6-12 所示的菜单(图 16-12)。通过这个菜单可以编辑、格式化、 剪切、拷贝、粘贴、删除、快速浏览在文档中将要生成的这个对象 (注意不同的文档项目弹出的菜单可能不同) 通过每个弹出菜单的 。 Edit,可以对文档的显示内容作修改。 16.2.5 퓚뚨훆컄떵훐퓶볓믲복짙짺돉쿮쒿 图 16-12 在定制文档中增加或减少生成项目的方法如下: 1.在“PowerDesigner DataArchitect”窗口的右窗格中,选择要增加文档项目的位置。 2.在左窗格中,选择要增加的文档项目,选择“Edit→Add”菜单,这个文档项目就增 加到了生成的文档中。 3.在定制文档的过程中可以反复对文档进行预览。 4.通过上述手段对文档的内容进行反复的修改,直到满意为止。 5.最后通过 Report→Generate 菜单项保存定制的文档。 킡뷡 l 可以为概念数据模型生成完整的 CDM 文档<Full CDM Report>。 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • ·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
  • 参考资料 305 参考资料 1. Sybase Inc.,Data Modeling with PowerDesigner,1997. David M, Kroenke , DATABASE PROCESSING Fundamentals,Design,and Implemtation , 2. 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
  • 主要名称缩写中英文对照表 304 主要名称缩写中英文对照表 英文缩写 中文释义 概念数据模型 CDM 物理数据模型 PDM 关系型数据库管理系统 RDBMS 数据流程图 DFD 流程分析模型 PAM 仓库结构模型 WAM 开放式数据库互联 ODBC 对象建模技术 OMT 实体联系 E-R 管理信息系统 MIS 计算机辅助软件工程 CASE 数据操纵语言 DML 数据定义语言 DDL 摸板定义文件 CDF CDM 向 PDM 转换的定义文件 DEF 应用程序接口 API PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
  • 主要名称缩写中英文对照表 305 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com