使用powerdesigner设计数据库教程授课资料Word文档格式.docx
《使用powerdesigner设计数据库教程授课资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《使用powerdesigner设计数据库教程授课资料Word文档格式.docx(97页珍藏版)》请在冰豆网上搜索。
1.2.1.1PowerDesigner主要包括以下几个功能部分:
(1)DataArchitect
这是一个强大的数据库设计工具,使用DataArchitect可利用实体-关系图为一个信息系统创建"
概念数据模型"
-CDM(ConceptualDataModel)。
并且可根据CDM产生基于某一特定数据库管理系统(例如:
SybaseSystem11)的"
物理数据模型"
-PDM(PhysicalDataModel)。
还可优化PDM,产生为特定DBMS创建数据库的SQL语句并可以文件形式存储以便在其他时刻运行这些SQL语句创建数据库。
另外,DataArchitect还可根据已存在的数据库反向生成PDM,CDM及创建数据库的SQL脚本。
(2)ProcessAnalyst
这部分用于创建功能模型和数据流图,创建"
处理层次关系"
。
(3)AppModeler
为客户/服务器应用程序创建应用模型。
(4)ODBCAdministrator
此部分用来管理系统的各种数据源。
1.2.1.2PowerDesigner的几种主要模型文件:
概念数据模型(CDM)
CDM表现数据库的全部逻辑的结构,与任何的软件或数据储藏结构无关。
一个概念模型经常包括在物理数据库中仍然不实现的数据对象。
它给运行计划或业务活动的数据一个正式表现方式。
物理数据模型(PDM)
PDM叙述数据库的物理实现。
藉由PDM,考虑真实的物理实现的细节。
面向对象模型(OOM)
一个OOM包含一系列包,类,接口,和他们的关系。
这些对象一起形成所有的(或部份)一个软件系统的逻辑的设计视图的类结构。
一个OOM本质上是软件系统的一个静态的概念模型。
业务程序模型(BPM)
BPM描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。
BPM是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序,流程,信息和合作协议之间的交互作用。
1.2.2比较目前流行的几个建模工具:
包括powerdesigner,rose,visio,ERWin,
ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对UML建模的支持,ROSE一开始没有对数据库端建模的支持,但是在现在的版本中已经加入数据库建模的功能。
ROSE主要是在开发过程中的各种语义、模块、对象以及流程,状态等描述比较好,主要体现在能够从各个方面和角度来分析和设计,使软件的开发蓝图更清晰,内部结构更加明朗(但是它的结构仅仅对那些对掌握UML的开发人员,也就是说对客户了解系统的功能和流程等并不一定很有效),对系统的代码框架生成有很好的支持。
但对数据库的开发管理和数据库端的迭代不是很好。
PowerDesigner原来是对数据库建模而发展起来的一种数据库建模工具。
直到7.0版才开始对面向对象的开发的支持,后来又引入了对UML的支持。
但是由于PowerDesigner侧重不一样,所以它对数据库建模的支持很好,支持了能够看到的90%左右的数据库,对UML的建模使用到的各种图的支持比较滞后。
但是在最近得到加强。
所以使用它来进行UML开发的并不多,很多人都是用它来作为数据库的建模。
如果使用UML分析,它的优点是生成代码时对Sybase的产品PowerBuilder的支持很好(其它UML建模工具则没有或者需要一定的插件),其他面向对象语言如C++,Java,VB,C#等支持也不错。
但是它好像继承了Sybase公司的一贯传统,对中国的市场不是很看看好,所以对中文的支持总是有这样或那样的问题。
VISIO原来仅仅是一种画图工具,能够用来描述各种图形(从电路图到房屋结构图),也是到VISIO2000才开始引进软件分析设计功能到代码生成的全部功能,它可以说是目前最能够用图形方式来表达各种商业图形用途的工具(对软件开发中的UML支持仅仅是其中很少的一部分)。
它跟微软的office产品的能够很好兼容。
能够把图形直接复制或者内嵌到WORD的文档中。
但是对于代码的生成更多是支持微软的产品如VB,VC++,MSSQLServer等(这也是微软的传统),所以它可以说用于图形语义的描述比较方便,但是用于软件开发过程的迭代开发则有点牵强。
此节详细信息可参考
1.2.3Powerdesigner的安装。
练习任务:
完成Powerdesigner15的安装。
(包括破解:
))
2概念数据模型CDM基本概念
2.1概念数据模型概述
数据模型是现实世界中数据特征的抽象。
数据模型应该满足三个方面的要求:
1)能够比较真实地模拟现实世界
2)容易为人所理解
3)便于计算机实现
概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。
它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。
通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。
换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;
然后再将CDM转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。
CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的静态特性、动态特性以及完整性约束条件等,其中包括了数据结构、数据操作和完整性约束三部分。
1)数据结构表达为实体和属性;
2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作;
3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等)。
2.2实体、属性及标识符的定义
实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。
例如,学校中的每个学生,医院中的每个手术。
每个实体都有用来描述实体特征的一组性质,称之为属性,一个实体由若干个属性来描述。
如学生实体可由学号、姓名、性别、出生年月、所在系别、入学年份等属性组成。
实体集(EntitySet)是具体相同类型及相同性质实体的集合。
例如学校所有学生的集合可定义为“学生”实体集,“学生”实体集中的每个实体均具有学号、姓名、性别、出生年月、所在系别、入学年份等性质。
实体类型(EntityType)是实体集中每个实体所具有的共同性质的集合,例如“患者”实体类型为:
患者{门诊号,姓名,性别,年龄,身份证号.............}。
实体是实体类型的一个实例,在含义明确的情况下,实体、实体类型通常互换使用。
实体类型中的每个实体包含唯一标识它的一个或一组属性,这些属性称为实体类型的标识符(Identifier),如“学号”是学生实体类型的标识符,“姓名”、“出生日期”、“信址”共同组成“公民”实体类型的标识符。
有些实体类型可以有几组属性充当标识符,选定其中一组属性作为实体类型的主标识符,其他的作为次标识符。
2.3实体、属性及标识符的表达
引导学生对EStore或其自己的EStore系统进行分析,思考此项目涉及的实体有哪些,关键的属性包含什么?
并在纸面描绘出来。
3建立工程项目和完成实体创建
3.1什么是工程(Project)
对于工程的概念,相信大家并不陌生,当文档数量和团队协作越来越多时,如何有效的进行管理就成了问题。
工程就像一个容器,方便我们管理分散的各个模型和文档。
“您可以将实现共同目标的一组模型,或者其它任何格式的文档放进一个工程里,并作为一个整体,存放到知识库(Repository)里”。
这是PowerDesigner用户手册里的描述。
3.2为什么引入工程(Project)的概念
从容器的角度来说,似乎PowerDesigner之前的版本已经支持了诸如工作区(Workspace)和文件夹(Folder)的功能,那么为什么还需要工程呢?
对于复杂的建模任务,只有容器的功能似乎略显单薄,我们还需要更多便于查看、维护、共享甚至是引导等等功能。
当然如果在未来出现了更为复杂的需求或用例,也必须有升级和扩展到空间。
因此,工程被定义成了一种新的模型,从元模型的层次上看,它和面向对象模型(OOM)、数据模型(CDM、PDM)等等都是等价的。
从语义上看,它则是用来管理模型的模型。
这样做,加入了很多灵活性,并且可以复用PowerDesigner许多既有的机制。
3.3工程主要的特性
支持视图(Diagram):
工程支持两种视图,一种叫工程视图(ProjectDiagram),用来展示模型和文档之间的关系;
另一种叫框架矩阵(FrameworkMatrix),作为一种框架(Framework)来指导工程的建立,以及对工程进行有效的观察和维护。
方便管理和共享:
对于团队协作来说,知识库(Repository)是很重要的手段。
在PowerDesigner中虽然可以批量处理文件夹内的一组模型,但单个模型仍然是知识库的管理单元;
而工程可以真正作为一个整体存在。
比较与合并(Compare&
Merge):
可以利用PowerDesigner现有的框架对工程进行细粒度的比较与合并,不仅在版本管理中必不可少,也会在一些特定的场合中体现出它的价值。
生成报告(Reporting):
报告是视图的延伸,也是PowerDesigner的延伸,以文档的形式呈现,对于特别是像工程这样关注大局的模型来说,也更加的重要。
3.4新建EStore项目工程
在PowerDesigner15的文件菜单中,加入了一个新的命令:
新建工程(NewProject)。
在这个空的工程中,我们可以通过工具栏或右键菜单向工程内添加文档。
3.5在建立的项目上新增几个文件夹,分别用于需求、概念数据模型、物理数据模型、面向对象模型等内容的分类存放。
最终效果如图:
注意:
本文因是整个EStore项目教程的powerdesigner数据建模部分,因此主要使用到概念数据模型进行设计,并通过概念数据模型生成物理数据模型,并最终生成数据库,其他内容暂不放入此教程。
小技巧:
调色板(Palette)快捷工具栏的显示:
找回PowerDesigner工具栏palette的方法
Tools(工具栏)----------customsizetoolbars(自定义工具栏)------palette(调色板)勾选
工作空间的整理:
在Powerdesigner操作过程中,你会发现随着你创建的项目或模型的增多,在你的工作空间下可能会堆积了很多过期无用的模型或项目,看上去挺烦。
甚至同一个文件你双击打开几次工作空间下都会增加几个对应的项目或模型。
此时你可以右键点击不想看到的项目或模型,选择“从工作空间分离”,将她排除在你的工作空间之外。
完成EStore或学生自己EStore系统的项目建立。
4概念数据模型以及实体、属性创建
4.1新建概念数据模型
1)选择File-->
New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型。
也可以在对应文件夹上通过右键来选择建立CDM。
输入我们EStore的第一个数据库(商品信息)名称EStore4后点击确定生成第一个空白的CDM。
2)完成概念数据模型的创建。
以下图示,对当前的工作空间进行简单介绍。
该CDM编辑区
CDM绘制工具条,下一步要使用其中实体设计
双击此处查看该CDM属性
3)选择新增的CDM模型,右击,在弹出的菜单中选择“特性”属性项,弹出如图所示对话框。
在“General”标签里可以输入所建模型的名称、代码、描述、创建者、版本以及默认的图表等等信息。
在“Notes”标签里可以输入相关描述及说明信息。
当然再有更多的标签,可以点击"
More>
>
"
按钮,这里就不再进行详细解释。
4.2创建新实体
1)在CDM的图形窗口中,单击工具选项版上的Entity工具,再单击图形窗口的空白处,在单击的位置就出现一个实体符号。
点击Pointer工具或右击鼠标,释放Entitiy工具。
如图所示
2)双击刚创建的实体符号,打开下列图标窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。
注意,此处的Name用于powerdesigner的界面实现,可以使用容易理解的中文信息,但Code默认是和Name相同的,而Code用于后期代码生成时的命名,因此,注意Code的命名要参考前期指定的数据库命名规范,避免后期生成代码的时候名称不符合规范。
阶段任务:
让学生完成余下的Category(产品分类),Item(具体的商品信息),Product(产品),Supplier(供应商)的对应实体的添加。
最终效果:
4.3添加实体属性
1)分析产品分类实体,考虑该实体需要的属性有哪些。
(一般来说,每个实体最好都应有一个主键属性,用于索引和查找,并和其他表发生关联,对比较复杂的实体,描述字段也最好加上,否则仅仅从名称上可能难以理解该对象的真实含义)
最总得到的实体属性如下:
属性名
属性类型
含义
事例
说明
CategoryId
Varchar(10)
主标识符
BIRDS
分类Id
Name
Varchar(80)
Null,是
Birds
分类,类别;
鸟类
Descn
Varchar(255)
描述;
描述鸟类的
引导学生对余下的4个实体对象进行分析,分别提取出它们的关键属性。
Product:
具体的产品;
ProductId
BD-01
产品的Id号
Polica
产品的名称
可以生活在院子里和野生自然环境
产品的描述
Image
Image.jpg
产品的图片
Invertory:
库存
Qty
int
Null,否
1000
库存商品的数量
Item:
具体的商品信息
ItemId
ESC-1
商品的Id
ListPrice
Decimal(10,2)
100.00
商品的卖价;
UnitCost
90.00
商品的进价;
Status
Varchar
(2)
P
状态,如表示商品是否已发送,发送到哪里了;
Happy
商品的名字
Archar(80)
商品的图片
Supplier:
供应商的信息
SuppId
Int
1
供应商的Id
XYZpets
供应商的名称
AC
状态
Addr1
临沂
美国地址
Addr2
临沭
City
城市
State
加利福尼亚
美国的一个州
Zip
Varchar(5)
12345
美国的邮编
Phone
Varchar(40)
1234567890
美国的电话号码
引导学生分析上面5个实体之间的关系,如:
1个产品必然是属于某个产品分类的。
1种具体的商品避让是属于摸个产品的,也必然有一个特定的供应商。
1条库存信息必然是要描述某种具体商品的的库存。
2)双击产品分类实体,在窗口的“Attribute”选项标签上可以添加属性,如下图所示。
(注意还是要按规范命名Code)。
当然,你也可以使用使用“Model”--->
DataItems菜单,在打开的窗口中显示已有的数据项的列表,点击“AddaRow”按钮,创建一行新的数据作为该实体的属性。
这里的属性,更准确的表述可以为数据项(DataItem)。
数据项是信息存储的最小单位,当它附加在实体上时,就成为了实体的属性。
模型中允许存在没有附加至任何实体上的数据项。
添加完毕后效果如图:
数据项中的“添加属性”和“重用已有数据项”这两项功能与模型中DataItem的Uniquecode和Allowreuse选项有关。
P列表示该属性是否为主标识符(其中分类编号为主标识符);
D列表示该属性是否在图形窗口中显示;
M列表示该属性是否为强制的,即该列是否为空值。
如果一个实体属性为强制的,那么,这个属性在每条记录中都必须被赋值,不能为空。
3)双击其中的一条属性,可以查看和设置修改该属性的具体信息。
相关数据说明如下
这里域的概念在下一个章节中将另外介绍。
4.4数据项的唯一性代码选项和重用选项
在上面的操作过程中,你也许会发现一个现象,比如名称(Code:
Name)这个属性,在多个实体中都出现过,当你设置完Item商品信息实体中的名称属性后后,再去设置Invertory供应商实体时,你会发现在输入完Name和Code后,后面的字段类型等其他信息都一起自动生成了。
检查一下生成的信息,和你前面设置过的Item商品信息实体中的Name属性其实是一样的。
而且你可以尝试对它们进行修改,你也会发现修改其中一处,另一处对应的信息也自动跟新了。
实际上,只要两个数据项Code一样,系统默认情况下是认为这不是两个数据项,而是一个数据项。
因此,系统才会根据前面设置的信息自动生成后面的数据项。
在上面这个例子中,我们的几个Name属性都正好配置相同,你也许觉得很方便,但再另外一些场景中,也许你的供应商的名称数据类型觉得设置为Varchar(50)就足够了,这时你就会发现系统的这个默认功能不再友好。
当然,你可以设置不同的Code解决这个问题,但明显可能带来命名不规范的问题。
Powerdesigner中,你可以通过下面的手段解决这个问题。
使用Tools--->
ModelOptions->
ModelSettings。
在DataItem组框中定义数据项的唯一性代码选项(UniqueCode)与重用选项(AllowReuse)。
如果选择UniqueCode复选框,每个数据项在同一个命名空间有唯一的代码,而选择Allowreuse,一个数据项可以充当多个实体的属性。
如果你设置实体属性的时候,想要使用前面已经设置过的某个属性,那么可以这么操作:
1)双击一个实体符号,打开该实体的属性窗口。
2)单击Attributes选项卡,打开如下图所示窗口
AddaDataItem与ReuseaDataItem的区别在于:
AddaDataItem情况下,选择一个已经存在的数据项,系统会自动复制所选择的数据项。
如果您设置了UniqueCode选项,那系统在复制过程中,新数据项的Code会自动生成一个唯一的号码,否则与所选择的数据项完全一致。
ReuseaDataItem情况下,只引用不新增,就是引用那些已经存在的数据项,作为新实体的数据项。
边上还有一些其他的设置,你也可以尝试设置一下,比如DefaultDatatypes设置默认情况下数据项的数据类型。
在这个项目中,你会发现大量实体的属性的数据类型是Varchar(80)的,那么你就可以设置此项为VarChar(80),你就会发现添加一行新数据后默认就是该数据类型了。
其他设置你现在也可以尝试去修改一下,根据提示说明看看效果如何,大部分的配置你都很容易在实体设置上找到对应的效果,如果找不到,或不知道该项设置是做什么的饿,没关系,在后面的课程中我们会陆续提到。
每次输入属性名称时,因为我们输入的是中文名称,Code一般和Name不一样,但系统一直会自动生成Code,需要我们去先删除再输入新值,很麻烦,要取消这个自动生成的功能,可以这么操作:
Tools-->
GeneralOptions-->
Dialog-->
取消选中NametoCodemirroring
阶段任务(以下任务可针对EStore或学生实训的EStore系统):
1.建立3个概念数据模型,分别对应产品信息、订单信息和其他属性信息(包括账户、购物车、用户配置等其他信息)
2.完成3个概念数据模型的实体初步设计,并分别建立各个实体。
3.完成各个实体的属性设置,并配置好主标识符和非空设置。
5概念