指导2 使用PowerDesigner 12设计图书管理系统数据库

指导2 使用PowerDesigner 12设计图书管理系统数据库

完成本任务所用到的知识点:

➢ 使用PowerDesigner 12设计工具

使用PowerDesigner 12设计图书管理系统数据库。使用PowerDesigner数据库建模工具绘制图书管理系统数据库对应的概念模型,并生成物理模型图,最后自动生成SQL脚本。

PowerDesigner 是Sybase公司开发的产品,PowerDesigner 12是一个包含所有现代建模技术于一身的全面工具,集成了强有力的业务建模技术,传统的数据库分析和设计,以及UML对象模型。通过元模型的管理、冲突分析特性和真正的企业知识库等功能,PowerDesigner 12提供了完整的企业建模工具。本次上机只学习PowerDesigner 12的数据建模技术,通过它完成数据库的分析和设计。

PowerDesigner 12涉及的几种模型如下。

1.概念数据模型(Conceptual Data Model,CDM)

概念数据模型也称信息模型,它以实体—联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念结构设计。

通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是CDM;然后再将CDM转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。

2.物理数据模型(Physical Data Model,PDM)

PDM叙述数据库的物理实现,帮助考虑真实的物理实现的细节。能通过修正PDM来适合表现或物理约束。

主要目的是把CDM中建立的现实世界模型生成特定的DBMS脚本,产生数据库中保存信息的储存结构,保证数据在数据库中的完整性和一致性。

PDM是适合于系统设计阶段的工具。简单来说:就是PDM可以自动生成诸如“create table”之类的SQL脚本。

在数据建模过程中,建立概念数据模型,通过正向工程生成物理数据模型,生成数据库建库脚本,最后将物理数据模型生成关系数据库。

3.面向对象模型(Object Oriented Model,OOM)

一个OOM包含一系列包、类、接口和它们的关系。 这些对象一起形成所有的(或部分)一个软件系统的逻辑的设计视图的类结构。 一个OOM 本质上是软件系统的一个静态的概念模型。

4.业务程序模型(Business Process Model,BPM)

BPM 描述业务的各种不同的内在任务和内在流程,以及客户如何以这些任务和流程互相影响。BPM 是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序、流程、信息和合作协议之间的交互作用。

本阶段将讨论如何绘制“图书管理系统”对应的E-R模型图。

目前,数据库设计一般都遵循软件的生命周期理论,分为六个阶段,即需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。其中,需求分析和概念结构设计独立于任何的DBMS系统,而逻辑结构设计和物理结构设计则与具体的DBMS有关。数据库的设计通常都是从概念结构开始的,概念模型完成数据库的逻辑结构设计,在此阶段将使用PowerDesigner 12来绘制概念模型图,熟悉使用各种模型符号,需要提醒大家的是,这些模型符号和E-R图符号有所不同。

1.绘制概念模型图(CDM)

启动PowerDesigner,如图上机1.1所示。

图上机1.1 启动PowerDesigner 12

2.新建概念数据模型(CDM)

(1) 在打开的窗口中,选择“File”➔“New”,弹出如图上机1.2所示的对话框,选择“Conceptual Data Model”(即概念数据模型),并在Model name中输入模型名“CMD_libraryDB”,然后单击“确定”按钮,将创建概念模型图。

图上机1.2 新建概念模型图

(2) 单击“确定”按钮后,出现如图上机1.3所示的窗口。在绘图窗口中,可以从绘图工具栏(Palette)中选择各种模型符号来绘制E-R图。

图上机1.3 CDM窗口

3.绘制实体

(1) 在CDM的图形窗口中,选择绘图工具栏(Palette)中的“实体(Entity)”图标,鼠标变为图标形状,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。单击Pointer工具或右击鼠标,释放Entitiy工具,如图上机1.4所示。

图上机1.4 添加实体

(2) 双击刚创建的实体符号,打开如图上机1.5所示Entity Properties(实体属性)窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。

图上机1.5 实体属性窗口

其中General选项卡主要选项的含义如下:

➢ Name:实体的名字,是给人看的名字,一般输入的是中文,如“读者信息”。

➢ Code:实体代号,生成代码时使用的名字,一般输入的是英文,如“ReaderInfo”。

➢ Comment:注释,输入实体更详细的说明。

4.添加实体属性

(1) 在图上机1.5所示窗口的“Attribute(属性)”选项标签上可以添加属性,如图上机1.6所示。

图上机1.6 添加实体属性

其中Attribute选项卡中主要选项的含义如下。

➢ Domain:域,表示此属性取值的范围,如创建10字符的“读者姓名”域。

➢ M:即Mandatory,当强制属性,表示该属性必填,不能为空。

➢ P:即Primary Identifer,是否是主标识符,对应主键。

➢ D:即Displayed,表示在实体符号中是否显示此属性。

(2) 单击DataType下方的按钮可以选择数据类型,如图上机1.7所示。

图上机1.7 选择数据类型

(3) 输入“读者信息”实体的其他属性,如图上机1.8所示。

图上机1.8 “读者信息”实体的属性

5.添加实体之间的关系

(1) 按照前面添加实体的方法,请大家添加 “图书类型”实体,如图上机1.9所示,并添加相应的属性,如图上机1.10所示。

图上机1.9 “图书类型”实体的信息

图上机1.10 “图书类型”实体的属性

(2) 再添加“图书信息”实体,如图上机1.11所示,并添加相应的属性,如图上机1.12所示。

图上机1.11 “图书信息”实体的信息

图上机1.12 “图书信息”实体的属性

现在添加上面的3个实体(读者信息、图书类型、图书信息)之间的关系:

➢ 从绘图工具栏上选择Relationship(关系)图标,光标将变为图标。

➢ 单击 “图书类型”实体,按住左键的同时把光标拖拽到“读者信息”实体上,然后释放左键,一个默认的关系就建立了。同理,建立“图书信息”实体和“读者信息”实体之间的关系。如图上机1.13所示。

图上机1.13 建立实体之间的关系

➢ 选中图上机1.13中定义的“图书类型”和“图书信息”关系(Relationship_1),双击将打开如图上机1.14所示的Relationship Properties对话框。在General选项卡中定义关系的常规属性,修改关系的名称和代号如图上机1.14所示。同理,修改“图书信息”和“读者信息”关系(Relationship_2)的属性,如图上机1.15所示。

图上机1.14 修改“图书类型”和“图书信息”关系的常规属性

图上机1.15 修改“图书信息”和“读者信息”关系的常规属性

➢ 两个实体间的映射基数需要在“Cardinalities”选项卡中定义详细定义。一个“图书类型”可包含多本“图书”,即一对多的关系,如图上机1.16所示。选中Mandatory复选框强制1本“图书信息”必须属于1种“图书类型”。指定上述映射技术后,请留意关系线上出现的符号,表示0个或1个;关系线上的符号表示0个或多个。选中Mandatory后,将出现竖线(“|”),表示1。

同理,设置“图书信息”和“读者信息”的映射基数。一个读者可以借阅多本图书,一本图书可以被多个读者借阅,即它们之间是多对多的关系。如图上机1.17所示。

图上机1.16 修改“图书类型”和“图书信息”关系的映射基数

图上机1.17 修改“图书信息”和“读者信息”关系的映射基数

6.保存概念模型图

单击“保存”图标,将概念模型图保存为“CDM_ libraryDB.CDM”。

7.生成物理模型图(PDM)

绘制出概念模型图后,可以进一步进行修改,生成物理模型图。选择菜单中“Tools”➔“Generate Physiscal Model”,出现如图上机1.18所示的窗口,单击 “保存”图标,保存为“PDM_ libraryDB.PDM”。单击“确定”按钮后生成的物理模型如图上机1.19所示。

图上机1.18 设置物理模型的DBMS和Name

图上机1.19 生成物理模型图

8.生成SQL数据脚本

(1) 单击菜单“database”➔“Generate Database”,出现如图上机1.20所示的窗口。

图上机1.20 生成数据库的SQL脚本

(2) 输入SQL脚本文件名,单击“确定”按钮,自动生成对应的数据库的SQL脚本,如图上机1.21所示。该窗口中显示了SQL文件保存的路径。单击Edite按钮出现如图上机1.22所示的记事本窗口。

图上机1.21 生成脚本文件

图上机1.22 查看生成的脚本文件

PowerDesigner生成的SQL Server脚本没有建库语句,只有建表的语句。建库的语句就需要大家手动地添加进去了,关于建库的代码在后续章节将详细学习。