软件工程环境
综合实践结业论文—数据建模
1.1数据建模的基本概念
在设计数据库时,对现实世界进行分析、抽象、并从中找出内在联系,进而确定数据库的结构,这一过程就称为数据库建模。
数据建模中的三种模型的简介
a)概念模型
把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个数据库管理系统(DBMS)支持的数据模型,而是概念级的模型,成为概念模型。
b)逻辑模型
逻辑模型是对概念模型的扩展。
不仅定义了描述概念模型中对象的相关属性,而且定义了对象之间的逻辑关系,比如:聚合、扩展。
在数据仓库中,它关联着逻辑模型和物理模型两方。
目前最流行就是关系模型也就是对应的关系数据库。
常见的实体联系有:一对一联系,一对多联系,多对多联系。
c)物理模型
物理模型定义了数据的物理存储方式。
通常是我们定义的一种数据库。
如关系数据库中的一些对象为表、视图、字段、数据类型、长度、主键、外键、索引、约束、是否可为空、默认值。
1.2 MDA转化
模型驱动架构(MDA)的模型转换提供了一个完全可配置的方式将一个模型中的元素和模型片段从一个域转换到另一个域。
这通常涉及到平台无关模型(PIM)元素转换成指定平台的模型(PSM)的元素。
从单一的、平台独立的元素到可以负责创建跨多个域的多个平台相关的元素。
也就是说从概念模型可以转化成任何语言的逻辑模型,没有平台的限制,例如:java、c++、c#等等,数据库建模的时候我们可以给它转化成具体的数据库管理系统。
a)定义配置转换
EA中提供了MDA转换模板,打开EA工具下的Tools目录下的MDA Transformation Templates,得到下图:
本文讲的是数据建模,因此我们选择DDL语言,在DDL转换中主要是将逻辑图中的类转化为物理存储系统中的表:
将类中Attribute转换为表的列:
将类中的Connector创建为表的外键:
在DDL转换中,主要是上面三种的转换,对于Operation、Parameter等都没有定义。
b)逻辑模型的MDA转换
本文以网上书店的实例进行讲解,首先我们看一下它的概念模型:
其中包括书、作者、账号、订单、交易实体等等,它们之间还有对应的关系,有一对一,多对多等等。
为各个实体添加属性我们得到了另外一种模型——逻辑模型,如下:
从图中我们可以看到每个实体都有了自己的独立的属性,并且这些属性独立于任何平台。
本文以网上书店的实例进行讲解,我们选择Logical Level包,右键选择Transform Current Package :
得到下图:
左边为所有包中所选中的元素,右边你可以选择转换的平台,本文是数据建模,因此选择DDL,执行转换,得到下图:
这里我们需要注意的是在逻辑模型中我们可以看到书与作者是多对多的关系,在转换为DDL表中,书与作者之间有一个联合表。
最后我们可以把这些表的SQL语句生成出来,然后在DDMS系统中执行脚本,就在数据库中生成了相关的表,除了创建表,我们还可以创建视图,索引等等,我们接下来就简单的讲解以下创建索引。
我们以网上书店的例子为例,比如为Account表创建索引,首先选择Account 表,右键,选择“功能与属性”下的“操作”,点击“操作”得到下图:
上图我们是我们已经创建好的索引,创建索引,我们只需要在构造性的选择框中选择Index,在哪一列设置索引我们也可以在此对话框进行设置,然后在拓展属性进行其它相关的设置。
对于视图的创建,我们选择“工具箱”选择“更多的工具”下的数据建模,选择View,将View拖入刚才生成的DDL图中,单击打开,得到下图:
我们可以选择数据库和语句的填写。
c)Sql脚本的生成
在上面的基础上我们选择生成的DDL包,右击,选择“代码工程”下的“生成DDL”点击,得到下图:
我们可以在左侧选择生成索引、视图、触发器、等等,然后在DDMS系统中执行脚本,就在数据库中生成了相关的表。
2.0 Powerdesigner 进行数据库建模
2.1创建表
新建物理模型时需要指定物理模型对应的DBMS,这里我们使用Sql server 2008,新建一个物理模型后,系统会显示一个专门用于物理模型设计的工具栏,如下图:
单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在General选项卡中可以设置表的Name、Code等属性。
例如我们要新建一个教室表(ClassRoom),则可修改Name和Code。
Name是在模型中显示的名称,Code是生成数据库表的时候的实际表名。
另外Name中的内容还会作为SQL Server中的表备注。
单击Columns切换到列选项卡,在下面的列表中可以添加表中的列。
Name是模型上显示的名称,Code是生成的实际的表名,后面的3个复选框P代办主键、F代表外键,M代表不能为空。
为教室表设计了两个列,如图所示:
2.2设定主键
在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键。
在为表设置主键时有以下几种办法:
1>在Columns选项卡中,直接选中主键列的P列复选框,这是最简单的方式。
2>选中一个列,然后单击工具栏中的“属性”按钮,系统将弹出列属性窗口,在该窗口中可以设置该列的各种属性,当然也包括该列是否是否是主键。
另外还有一个很重要的复选框是“Identity”。
选中Identity复选框则表示该列为自增列。
如图:
3> 切换到Keys选项卡中,在其中添加一行命名为PK_ClassRoom,然后单击工具栏的“属性”按钮,打开键属性窗口,在该窗口中切换到Columns选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列,单击确定按钮即可完成主键的创建。
2.3创建视图
在SQL Server中视图定义了一个SQL查询,一个查询中可以查询一个表也可以查询多个表,在PD中定义视图与在SQL Server中定义查询相似。
例如要创几个所有学生的所有选课结果的视图,那么在工具栏中选择视图按钮,然后在设计面板中单击鼠标一次便可添加一个空白的视图,切换到鼠标指针模式,双击该视图便可打开视图的属性窗口。
在General 选项卡中,可以设置视图的名字和其他属性。
Usage是表示视图是只读的视图还是可更新的视图,还有一个是check option选项,指定了CHECK OPTION,也不能依据视图来验证任何直接对视图的基础表执行的更新。
如果我们只创建一般的视图,那么就选择只查询选项。
Dimensional Type指定该视图表示的是维度还是事实,这个主要是在进行数据仓库多维数据建模时使用,一般情况下不需要指定。
后面的两个复选框也不需要进行修改。
Type使用默认的view选项。
切换到SQL Query选项卡,在文本框中可以设置视图定义的查询内容,建议直接先在SSMS 中验证视图定义SQL语句的正确性,然后再将SQL语句复制粘贴到该文本框中。
在定义视图时最好不要使用*,而应该使用各个需要的列名,这样在视图属性的Columns中才能看到每个列。
设计SQL Query如图所示。
2.4创建存储过程
在工具栏中单击Procedure按钮,然后在设计面板中单击一次便可添加一个Procedure。
例如要创建一个存储过程根据学生的学号获得学生所选的课程,那么对于的操作如下:在指针模式下双击添加的Procedure,打开Procedure属性窗口,在General 选项卡中可以设置该存储过程的名字。
然后切换到Definition选项卡,该选项卡中定义了存储过程的定义,在下拉列表框中,选择<Default Procedure>选项,如果是要定义函数,那么就需要选择<Default Function>选项,系统会根据选择的类型创建SQL语句的模板。
3.0生成数据库
第一步:配置数据源
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 创建数据表。
4.0总结
本文主要讲解的是数据库建模,第一部分讲的是在EA下的数据库建模,第二部分是在PD下的额数据库建模,通过这两部分的学习,让我们对数据库建模有了更深的了解,另外,也增强了我们动手能力以及解决问题的能力,对我们以后的学习生活提供了很好的帮助。