使用PowerDesigner进行数据库建模入门
PowerDesigner(简称PD)是一种强大的数据库建模工具,使用PD可以创建业务模型,UML类图等,当然最主要的功能是数据库建模。我打算分以下几个部分来讲如何使用PD。
1,两种重要模型,概念模型和物理模型
2,创建表和主外键
3,创建视图和存储过程
4,生成数据库
两种重要模型
首先说概念模型,概念模型是一个抽象的宏观层次的业务模型,比如E-R(实体关系)图,在概念模型中最重要的对象是实体和关系。
根据概念模型可以生成逻辑模型,逻辑模型是概念模型的延伸,表示概念之间的逻辑次序,是一个属于方法层次的模型。具体来说,逻辑模型中一方面显示了实体、实体的属性和实体之间的关系,另一方面又将继承、实体关系中的引用等在实体的属性中进行展示。逻辑模型介于概念模型和物理模型之间,具有物理模型方面的特性,在概念模型中的多对多关系,在逻辑模型中将会以增加中间实体的一对多关系的方式来实现。逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现,使用逻辑模型可以生成针对具体数据库管理系统的物理模型。逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来生成物理模型。
其次物理模型依赖于具体的物理实现,使用的是数据库对象,原来的“实体-关系”转换成“表-外键”,实体的属性转换为表的列,同时每个列的数据类型转换为对应的DBMS中支持的数据类型。
对于SQL Server 2008的物理模型,如果主键需要使用自增长,那么需要修改具体的列,设置该列为Identity。如果生成的数据类型不合理,也可以调整数据类型,使得数据类型使用得更恰当。在物理模型中除了生成的表外,还可以手动增加视图、存储过程、业务规则等在概念模型和逻辑模型中无法表达的数据库对象。
对物理模型调整好后,就可以将模型应用到SQL Server数据库中。在数据库中实现物理模型的方法有两种,一种是使用PD连接到SQL Server数据库,然后将模型同步到数据库中,另一种方法就是生成数据库脚本。
创建表和主外键
1,创建表:
新建物理模型时需要指定物理模型对应的DBMS,这里我们使用Sql server 2008,新建一个物理模型后,系统会显示一个专门用于物理模型设计的工具栏,如下图:
若要在物理模型中添加一个表,单击“表”按钮,然后再到模型设计面板中单击一次便可添加一个表,系统默认为表命名为Table_n,这里的n会随着添加的表增多而顺序增加。添加的表是没有任何列的,如图所示:
单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在General选项卡中可以设置表的Name、Code等属性。例如我们要新建一个教室表(ClassRoom),则可修改Name和Code。Name是在模型中显示的名称,Code是生成数据库表的时候的实际表名。另外Name中的内容还会作为SQL Server中的表备注。
单击Columns切换到列选项卡,在下面的列表中可以添加表中的列。Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外键,M代表不能为空。为教室表设计了两个列,如图所示:
2,设定主键
在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键。在为表设置主键时有以下几种办法:
1>在Columns选项卡中,直接选中主键列的P列复选框,这是最简单的方式。
2>选中一个列,然后单击工具栏中的“属性”按钮,系统将弹出列属性窗口,在该窗口中可以设置该列的各种属性,当然也包括该列是否是否是主键。另外还有一个很重要的复选框是“Identity”。选中Identity复选框则表示该列为自增列。如图:
3> 切换到Keys选项卡中,在其中添加一行命名为PK_ClassRoom,然后单击工具栏的“属性”按钮,打开键属性窗口,在该窗口中切换到Columns选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列,单击确定按钮即可完成主键的创建。
另外需要注意的是,在建立主键时,系统会在主键上建立索引,索引分为聚集索引和非聚集索引,在“键属性”窗口的General选项卡中可以设置该主键上建立的索引是聚集索引还是非聚集索引,如图所示:
3,设定外键
如果是由概念模型或者逻辑模型生成物理模型,那么外键是通过Relationship生成的,也可以通过工具栏中的Reference来实现两表之间的外键关系。假如一个课程只会在一个固定的教室上课,而一个教室会安排多个课程在不同的时间上课,所以教室和课程是一对多的关系,那么课程表中就需要添加RoomID列以形成外键列,具体操作方法就是在工具栏中单击“Reference”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用,不会再添加新列。如图:
切换到鼠标指针模式,双击箭头,系统将弹出引用的属性窗口,在属性窗口中可以设置该引用的Name、Code、关联的列、约束名、更新策略和删除策略等。其它约束还包括check约束,默认值约束,非空约束等等
创建视图和存储过程
1,创建视图
在SQL Server中视图定义了一个SQL查询,一个查询中可以查询一个表也可以查询多个表,在PD中定义视图与在SQL Server中定义查询相似。例如要创几个所有学生的所有选课结果的视图,那么在工具栏中选择视图按钮,然后在设计面板中单击鼠标一次便可添加一个空白的视图,切换到鼠标指针模式,双击该视图便可打开视图的属性窗口。在General选项卡中,可以设置视图的名字和其他属性。
Usage是表示视图是只读的视图还是可更新的视图,还有一个是check option选项,指定了 CHECK OPTION,也不能依据视图来验证任何直接对视图的基础表执行的更新。如果我们只创建一般的视图,那么就选择只查询选项。
Dimensional Type指定该视图表示的是维度还是事实,这个主要是在进行数据仓库多维数据建模时使用,一般情况下不需要指定。后面的两个复选框也不需要进行修改。Type使用默认的view选项。
切换到SQL Query选项卡,在文本框中可以设置视图定义的查询内容,建议直接先在SSMS中验证视图定义SQL语句的正确性,然后再将SQL语句复制粘贴到该文本框中。在定义视图时最好不要使用*,而应该使用各个需要的列名,这样在视图属性的Columns中才能看到每个列。设计SQL Query如图所示。
当然,也可以在PD中使用自带的SQL编辑器编写SQL语句,单击右下角的“Edit with SQL Editor”按钮,即可弹出SQL Editor编辑器,编写SQL语句。
2,创建存储过程
在工具栏中单击Procedure按钮,然后在设计面板中单击一次便可添加一个Procedure。例如要创建一个存储过程根据学生的学号获得学生所选的课程,那么对于的操作如下:在指针模式下双击添加的Procedure,打开Procedure属性窗口,在General选项卡中可以设置该存储过程的名字。
然后切换到Definition选项卡,该选项卡中定义了存储过程的定义,在下拉列表框中,选择<Default Procedure>选项,如果是要定义函数,那么就需要选择<Default Function>选项,系统会根据选择的类型创建SQL语句的模板。
在下面的SQL语句中,可以将create procedure [%QUALIFIER%]%PROC%保留,其他的删除,根据自己要创建的存储过程编写SQL语句。
create procedure [%QUALIFIER%]%PROC%
@StudentID int
as
begin
select CourseName
from vwStudentCourse
where StudentID=@StudentID
end
单击确定按钮,系统会根据编写的SQL语句,将所使用的表、视图与存储过程关联起来,如图所示:
这样,存储过程在PD的物理模型中的创建就算完成了。
生成数据库
第一步:配置数据源
1,选择菜单"Database-->Configure connections"如图:
2,打开”Configure Data Connections“窗口如图
3,选择系统数据源
4,选择数据源驱动程序
5,数据源名称和sql server服务器选择,服务器即SSMS登陆的服务器名称
6,选择验证模式及填写登陆ID和密码
7,更改默认数据库,这一步很重要,否则会覆盖默认的数据库,数据库即为要生成的数据名
8,确认完成即创建好了数据源
第二步:生成数据库
1,选择菜单"Database--->generate database",打开database generation窗口,选择Direct generation直接生成数据库
注意:这一步可以点击数据库图标重新配置数据源
2,点击确定后打开"Execute SQL Query"窗口,点击Run按钮后即可执行SQL创建数据表。
注:本文引用了深蓝居博文:http://www.cnblogs.com/studyzy/archive/2009/12/15/1624899.html