UML第4课数据建模.ppt

上传人:豆**** 文档编号:34219017 上传时间:2022-08-15 格式:PPT 页数:74 大小:4.38MB
返回 下载 相关 举报
UML第4课数据建模.ppt_第1页
第1页 / 共74页
UML第4课数据建模.ppt_第2页
第2页 / 共74页
点击查看更多>>
资源描述

《UML第4课数据建模.ppt》由会员分享,可在线阅读,更多相关《UML第4课数据建模.ppt(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4 4章章 数据建模数据建模第4章 数据建模2主要内容:主要内容:关系数据库模型的概念关系数据库模型的概念面向对象数据模型到关系设计模型的转换映射面向对象数据模型到关系设计模型的转换映射面向对象数据模型中类、类之间的关系到关系数据库设计模型的面向对象数据模型中类、类之间的关系到关系数据库设计模型的转换方法与步骤转换方法与步骤利用利用Rose完成面向对象系统的数据库设计与建模完成面向对象系统的数据库设计与建模第4章 数据建模3对于一个面向对象的系统,持久对象的存储依赖于面向对对于一个面向对象的系统,持久对象的存储依赖于面向对象数据库系统来完成,但至今还没有公认的面向对象数据象数据库系统来完成

2、,但至今还没有公认的面向对象数据库管理系统。目前成熟的商业数据库都是关系数据库,可库管理系统。目前成熟的商业数据库都是关系数据库,可以用关系数据库来代替面向对象数据库系统。以用关系数据库来代替面向对象数据库系统。数据库设计是系统开发的关键部分,系统数据库设计的关数据库设计是系统开发的关键部分,系统数据库设计的关键就是完成面向对象数据模型到关系数据库设计模型的转键就是完成面向对象数据模型到关系数据库设计模型的转换。换。作为一个面向对象的信息管理系统,数据库设计是系统开作为一个面向对象的信息管理系统,数据库设计是系统开发的关键部分,好的数据库设计有助于保证系统数据的整发的关键部分,好的数据库设计有

3、助于保证系统数据的整体性、完整性和共享特性。目前成熟的商业数据库都是关体性、完整性和共享特性。目前成熟的商业数据库都是关系数据库,本章以系数据库,本章以Microsoft SQL Server 2000关系数据库管关系数据库管理系统为例作简要介绍。理系统为例作简要介绍。4 41 1 基本概念基本概念第4章 数据建模4数据库数据的总体逻辑结构称为模式数据库数据的总体逻辑结构称为模式(Schemas)。关系数据库数据的总体逻辑结构是关系模式,这些数据结构的关关系数据库数据的总体逻辑结构是关系模式,这些数据结构的关系模式通过各种表来描述。系模式通过各种表来描述。一个面向对象的系统,要利用关系数据库来

4、表示对象模型一个面向对象的系统,要利用关系数据库来表示对象模型需要进行一定的转换,即把面向对象模式的数据模型转换需要进行一定的转换,即把面向对象模式的数据模型转换成关系模式的数据模型。其思想可以用如图所示的建模方成关系模式的数据模型。其思想可以用如图所示的建模方法表示。法表示。第4章 数据建模5面向对象系统的类模型向关系数据库模式转换的映射方式面向对象系统的类模型向关系数据库模式转换的映射方式主要包括两方面的映射:主要包括两方面的映射:一种是对象类的映射。一种是对象类的映射。另一种是类之间关系的映射。另一种是类之间关系的映射。4.1.1 4.1.1 对象类映射对象类映射第4章 数据建模6对象类

5、映射主要是指对象标识、属性类型和类三个方面的对象类映射主要是指对象标识、属性类型和类三个方面的映射。映射。对象标识符对象标识符(OID)映射为一张表的主键,如果类中缺少对象标识映射为一张表的主键,如果类中缺少对象标识可以为每个类增加一个对象标识符属性,并将其映射为数据库中可以为每个类增加一个对象标识符属性,并将其映射为数据库中相应表的主键。相应表的主键。属性类型映射对应于数据库相应表中的域,域的使用可使数据库属性类型映射对应于数据库相应表中的域,域的使用可使数据库设计更具一致性,优化数据库应用的可移植性。在实际应用中应设计更具一致性,优化数据库应用的可移植性。在实际应用中应为映射域的约束条件加

6、入为映射域的约束条件加入SQL语句,用以约束、检查域的取值。语句,用以约束、检查域的取值。类映射为一张数据库表,类的属性映射为表的各列类映射为一张数据库表,类的属性映射为表的各列(各个域各个域),类,类的对象映射为表中的各条记录。的对象映射为表中的各条记录。第4章 数据建模7注意下面几种特殊情况:注意下面几种特殊情况:类的属性中某些属性只是暂时性使用,不需要在数据库中永久类的属性中某些属性只是暂时性使用,不需要在数据库中永久保存,则该类属性无须映射。保存,则该类属性无须映射。类由于附加对象标识符类由于附加对象标识符OID或附加关联关系等原因,需要在表或附加关联关系等原因,需要在表中增加一些新的

7、列中增加一些新的列(域域)。映射后的列映射后的列(域域)应符合关系模型的范式要求,如果不符合则需要应符合关系模型的范式要求,如果不符合则需要应用范式设计理论优化,以达到较好的数据冗余、数据完整性应用范式设计理论优化,以达到较好的数据冗余、数据完整性以及灵活性。以及灵活性。4.1.24.1.2类间关系映射类间关系映射第4章 数据建模8类间关系映射相对对象类映射更复杂一些。类间关系包括类间关系映射相对对象类映射更复杂一些。类间关系包括关联、聚集、泛化、组合等。关联、聚集、泛化、组合等。关联关系映射关联关系映射1.关联关系描述了系统中对象或实例之间的离散连接,是一种结构关联关系描述了系统中对象或实例

8、之间的离散连接,是一种结构关系,关联涉及的对象数目称为阶元,阶元的大小反映了关联的关系,关联涉及的对象数目称为阶元,阶元的大小反映了关联的多重性。多重性。第4章 数据建模9根据阶元不同关联关系可以分为一对一、一对多和多对多等关联。根据阶元不同关联关系可以分为一对一、一对多和多对多等关联。对象类间的一对一关联。对象类间的一对一关联。可以在两个对象类转换成的关系模式中的任意一个模式内加可以在两个对象类转换成的关系模式中的任意一个模式内加入一个外键,指向另一个模式的主键,即可建立两个表之间入一个外键,指向另一个模式的主键,即可建立两个表之间的连接。的连接。对象类间的一对多关联。对象类间的一对多关联。

9、可以通过在具有多个对象的类的关系模式中加入一个外键,可以通过在具有多个对象的类的关系模式中加入一个外键,指向另一模式的主键建立两个表的连接。指向另一模式的主键建立两个表的连接。实现对象类间的多对多关联。实现对象类间的多对多关联。需要将类之间的关联也设计成一个类需要将类之间的关联也设计成一个类关联类,把一个多关联类,把一个多对多的关联转化成两个一对多的关联。引入的该关联类映射对多的关联转化成两个一对多的关联。引入的该关联类映射为关系数据库中的一个关联表,用来映射关联对象。在新增为关系数据库中的一个关联表,用来映射关联对象。在新增的关联表中设置一个标识符作为主键,加入两个外键分别指的关联表中设置一

10、个标识符作为主键,加入两个外键分别指向初始关联的两个关系模式表的主键。向初始关联的两个关系模式表的主键。第4章 数据建模10聚集关系映射聚集关系映射聚集是一种特殊的关联关系,表示聚集是一种特殊的关联关系,表示“has-a”关系。将这种关系映射关系。将这种关系映射到关系模式时可分为两种情况:到关系模式时可分为两种情况:聚集关系较为紧密的情况下两个类可以映射到一张表中。聚集关系较为紧密的情况下两个类可以映射到一张表中。聚集关系较为松散的时候可以参照一对多关联的映射方法,在聚集关系较为松散的时候可以参照一对多关联的映射方法,在子类映射的表中增加一个指向超类类表主键的外键。子类映射的表中增加一个指向超

11、类类表主键的外键。第4章 数据建模11泛化关系映射泛化关系映射对于泛化关系的映射有三种方法。对于泛化关系的映射有三种方法。一种是把类层次映射成一张表,泛化关系中的所有类都映射在单一种是把类层次映射成一张表,泛化关系中的所有类都映射在单个表中,同时增加一个对象标识符和一个用于标识角色类型的对个表中,同时增加一个对象标识符和一个用于标识角色类型的对象类型。这种方法的耦合度高。象类型。这种方法的耦合度高。另一种方法是每个子类映射为单个表,将超类的属性复制到子类另一种方法是每个子类映射为单个表,将超类的属性复制到子类中。在各子类中增加各自的对象标识符。这种方法的耦合度也比中。在各子类中增加各自的对象标

12、识符。这种方法的耦合度也比较高。较高。第三种方法是每个类映射为单个表,每张表中的对象标识符都设第三种方法是每个类映射为单个表,每张表中的对象标识符都设为超类的类表中的对象标识符,在子类的类表中,对象标识符既为超类的类表中的对象标识符,在子类的类表中,对象标识符既是主键又是外键。这种方法将创建过多的表,增加数据库访问时是主键又是外键。这种方法将创建过多的表,增加数据库访问时间。间。第4章 数据建模12组合关系映射组合关系映射组合关系是一种特殊的聚集关系,表示组合关系是一种特殊的聚集关系,表示“contains-a”关系。关系。向关系模式的映射可以参照聚集关系。此时整体和部分的向关系模式的映射可以

13、参照聚集关系。此时整体和部分的所有关系存在很强相互依赖和所有关系存在很强相互依赖和致的生命周期致的生命周期(共生死共生死),子类子类(部分部分)映射成的子表的外键不能为空。映射成的子表的外键不能为空。UML中的动态结构转换成关系数据模式时可能映射成唯一中的动态结构转换成关系数据模式时可能映射成唯一性约束、主键约束、外键约束、检查约束、索引或者触发性约束、主键约束、外键约束、检查约束、索引或者触发器等。器等。4.24.2数据库设计的基本过程数据库设计的基本过程第4章 数据建模13数据库设计主要涉及数据库设计主要涉及3个个阶段,即:阶段,即:概念设计。概念设计。逻辑设计。逻辑设计。物理设计。物理设

14、计。如图:如图:第4章 数据建模14概念设计阶段把用户的信息要求统一到一个整体逻辑结构概念设计阶段把用户的信息要求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何数据库管理中,此结构能表达用户的要求,且独立于任何数据库管理系统系统(DBMS)软件和硬件。软件和硬件。逻辑设计阶段的任务就是把概念设计阶段得到的结果转换逻辑设计阶段的任务就是把概念设计阶段得到的结果转换为与选用的为与选用的DBMS所支持的数据模型相符合的逻辑结构。对所支持的数据模型相符合的逻辑结构。对于关系数据库而言,逻辑设计的结果是一组关系模式的定于关系数据库而言,逻辑设计的结果是一组关系模式的定义,它是义,它是DB

15、MS能接受的数据库定义。能接受的数据库定义。物理设计阶段的任务是对给定的逻辑数据模型选取一个最物理设计阶段的任务是对给定的逻辑数据模型选取一个最适合应用要求的物理结构。数据库的物理结构包括数据库适合应用要求的物理结构。数据库的物理结构包括数据库的存储记录格式、存储记录安排、存取方法等,数据库的的存储记录格式、存储记录安排、存取方法等,数据库的物理设计是完全依赖于给定的硬件环境和数据库产品的。物理设计是完全依赖于给定的硬件环境和数据库产品的。第4章 数据建模15在进行数据库设计时,有几个关键的概念,如:在进行数据库设计时,有几个关键的概念,如:模式模式(schema)、主键、主键(primary

16、 key)、外键、外键(foreign key)、域、域(domain,也称,也称attribute types)、关系、关系(relation ship)、约束、约束(constraint)、索引、索引(index)、触发器、触发器(trigger)、存储过程、存储过程(stored procedure)、视图、视图(view)等。等。从某种意义上说,用从某种意义上说,用UML进行数据建模就是要考虑如何用进行数据建模就是要考虑如何用UML中的建模元素来表示这些概念,同时考虑满足引用完中的建模元素来表示这些概念,同时考虑满足引用完整性整性(referential integrity)、范式等要

17、求。、范式等要求。一般对于数据库中的这些概念,在一般对于数据库中的这些概念,在UML中大都用版型来表中大都用版型来表示,在数据建模中常用的一些版型如表所示。示,在数据建模中常用的一些版型如表所示。第4章 数据建模164.3 4.3 数据库设计的步骤数据库设计的步骤第4章 数据建模17结合结合Rose 2003工具提供的功能来说明如何用工具提供的功能来说明如何用UML的类图进的类图进行数据库设计,在行数据库设计,在Rose 2003中数据库设计的步骤如下:中数据库设计的步骤如下:创建数据库对象。这里所说的数据库对象是指创建数据库对象。这里所说的数据库对象是指Rose中构件图中中构件图中的一个构件

18、,其版型为的一个构件,其版型为Database。创建模式创建模式(schema)。对于关系数据库来说,模式可以理解为所有。对于关系数据库来说,模式可以理解为所有表及表与表之表及表与表之间的关系的集合。间的关系的集合。1.创建域包创建域包(domain package)和域和域(domain)。域可以理解成某一特。域可以理解成某一特定的数据类型,它起的作用和定的数据类型,它起的作用和VARCHAR2、NUMBER等数据类等数据类型类似,但域是用户定义的数据类型。型类似,但域是用户定义的数据类型。第4章 数据建模18创建数据模型图创建数据模型图(data model diagram)。表、视图等可

19、以放在数。表、视图等可以放在数据模型图中,类似于类放在类图中一样。据模型图中,类似于类放在类图中一样。创建表创建表(table)。如果有必要,也可以创建视图,视图是类的。如果有必要,也可以创建视图,视图是类的版型。版型。创建列创建列(column)。在表中创建每一列,包括列名、列的属性等。在表中创建每一列,包括列名、列的属性等。创建关系创建关系(relationship)。如果表与表之间存在关系,则创建它们。如果表与表之间存在关系,则创建它们之间的关系。之间的关系。在必要的情况下对数据模型进行规范化,如从第二范式转变为在必要的情况下对数据模型进行规范化,如从第二范式转变为第三范式。第三范式。在

20、必要的情况下对数据模型进行优化。在必要的情况下对数据模型进行优化。实现数据模型。在实现数据模型。在Rose 2003中,可以直接根据数据模型生成具体中,可以直接根据数据模型生成具体数据库数据库(如如SQL Server、Oracle等等)中的表、触发器、存储过程等,中的表、触发器、存储过程等,也可以根据数据模型先生成也可以根据数据模型先生成SQL语句,以后再执行这些语句,以后再执行这些SQL语句,语句,得到具体数据库中的表、触发器、存储过程等。得到具体数据库中的表、触发器、存储过程等。第4章 数据建模19在在Rose 2003中用于数据建模的菜单都在中用于数据建模的菜单都在Data Model

21、er下。下。在在Rose 2003的浏览窗口中用鼠标右击选中的对象,在弹出的浏览窗口中用鼠标右击选中的对象,在弹出式菜单中选式菜单中选Data Modeler菜单项,如图所示。其中灰色的菜单项,如图所示。其中灰色的选项表示当前不可用的菜单项。选项表示当前不可用的菜单项。第4章 数据建模20下面是具体的操作步骤:下面是具体的操作步骤:在构件视图在构件视图(component view)中创建数据库对象。中创建数据库对象。1.创建数据库对象时默认的目标数据库为创建数据库对象时默认的目标数据库为ANSI SQL92,也可设为,也可设为其他数据库,如其他数据库,如SQL Server 2000、Ora

22、cle 9.x、IBM DB2等。如图等。如图所示创建的数据库对象名为所示创建的数据库对象名为DB_0,目标数据库设为,目标数据库设为SQL Server 2000 。第4章 数据建模21第4章 数据建模22第4章 数据建模23在逻辑视图在逻辑视图(logical view)中创建模式,并选定目标数据库。中创建模式,并选定目标数据库。如图所示创建的模式名为如图所示创建的模式名为schema0,选定的目标数据库是,选定的目标数据库是DB_0 。第4章 数据建模24在逻辑视图中创建域包和域。在逻辑视图中创建域包和域。首先创建域包。首先创建域包。如图所示创建的域包的名字为如图所示创建的域包的名字为D

23、P_0,设定的,设定的DBMS是是SQL Server,也就是说,在这个域包下定义的域是针对,也就是说,在这个域包下定义的域是针对SQL Server数据库的。数据库的。第4章 数据建模25第4章 数据建模26再创建域。再创建域。域可看作是定制的数据类型,可以为每个域加检查语句。域可看作是定制的数据类型,可以为每个域加检查语句。如图所示创建的域的名字是如图所示创建的域的名字是DOM_0,数据类型为,数据类型为VARCHAR,长度为长度为4,有惟一性约束和非空约束。创建了域,有惟一性约束和非空约束。创建了域DOM_0后,以后,以后在定义表的列的时候,就可以把该列的类型定义为后在定义表的列的时候,

24、就可以把该列的类型定义为DOM_0。第4章 数据建模27第4章 数据建模28创建数据模型图。数据模型图在模式下创建。创建数据模型图。数据模型图在模式下创建。创建表。在数据模型图中创建表。创建表。在数据模型图中创建表。创建列。在表上建立列。创建列。在表上建立列。如图所示创建的表数据模型图的名字是如图所示创建的表数据模型图的名字是Data Model Diagram,表,表是是Table1和和Table2。在表。在表Table1中创建了列中创建了列COL_0和和COL_1,其中,其中列列COL_0为主键。在表为主键。在表Table2中创建了列中创建了列COL_2、COL_3、COL_4,其中列其中

25、列COL_2为主键,列为主键,列COL_4的类型为步骤的类型为步骤3中创建的域中创建的域DOM_0。第4章 数据建模29第4章 数据建模30第4章 数据建模31第4章 数据建模32第4章 数据建模33创建表与表之间的关系。创建表与表之间的关系。表与表之间存在两种关系,即非确定性表与表之间存在两种关系,即非确定性(non-identifying)关系和关系和确定性确定性(identifying)关系。关系。非确定性关系表示子表不依赖于父表,可以离开父表单独存非确定性关系表示子表不依赖于父表,可以离开父表单独存在。在。用关联、聚集关系的用关联、聚集关系的版型表示。版型表示。确定性关系表示子表不能离

26、开父表而单独存在。确定性关系表示子表不能离开父表而单独存在。用组合关系的用组合关系的版型表示。版型表示。创建了数据模型后,还要将模型规范化,如转换为创建了数据模型后,还要将模型规范化,如转换为3NF。第4章 数据建模34优化数据模型,如创建索引、视图、存储过程、非规范化优化数据模型,如创建索引、视图、存储过程、非规范化(denormalization)、使用域等。、使用域等。索引可以用操作的索引可以用操作的版型表示。版型表示。视图是类的视图是类的版型。版型。存储过程是操作的存储过程是操作的版型。版型。由于存储过程不是单独作用于表的,而是跟特定的数据库联系由于存储过程不是单独作用于表的,而是跟特

27、定的数据库联系在一起的,具有全局性,所以把所有的存储过程放在效用在一起的,具有全局性,所以把所有的存储过程放在效用(utility)中中(效用是类的版型,用于表示全局性的变量或操作效用是类的版型,用于表示全局性的变量或操作),如图所示。如图所示。第4章 数据建模35触发器是作为操作的触发器是作为操作的版型,由于触发器一定是和具版型,由于触发器一定是和具体的表相关的,所以建模时触发器是作为某个表的操作部分的版体的表相关的,所以建模时触发器是作为某个表的操作部分的版型表示的,如图所示。型表示的,如图所示。第4章 数据建模36实现数据模型,也就是利用实现数据模型,也就是利用Rose 2003产生数据

28、定义语言产生数据定义语言(DDL)或直接在数据库中创建表。或直接在数据库中创建表。下面对第下面对第7步中涉及的表与表之间的非确定性关系和确定步中涉及的表与表之间的非确定性关系和确定性关系做些说明。性关系做些说明。在这两种关系中,子表中都增加外键以便支持关系。在这两种关系中,子表中都增加外键以便支持关系。对非确定性关系,外键并不成为子表中主键的一部分;对非确定性关系,外键并不成为子表中主键的一部分;对确定性关系,外键成为子表中主键的一部分。对确定性关系,外键成为子表中主键的一部分。当非确定性关系的父表一端的多重性为当非确定性关系的父表一端的多重性为1或或1.n时,称作强制的时,称作强制的(man

29、datory)非确定性关系。非确定性关系。当非确定性关系的父表一端的多重性为当非确定性关系的父表一端的多重性为0.1或或0.n时,称作可选的时,称作可选的(optional)非确定性关系。非确定性关系。下面是表与表之间的各种关系的例子。下面是表与表之间的各种关系的例子。第4章 数据建模37第4章 数据建模384.4 4.4 对象模型和数据模型的相互转换对象模型和数据模型的相互转换第4章 数据建模39在在Rose 2003中,对象模型中,对象模型(类图类图)和数据模型可以相互转换。和数据模型可以相互转换。这种转换不是这种转换不是UML规范说明中要求的,是规范说明中要求的,是Rose 2003提供

30、的提供的一个功能,在转换过程中会用到包这种结构。一个功能,在转换过程中会用到包这种结构。4.4.1 4.4.1 对象模型转换为数据模型对象模型转换为数据模型第4章 数据建模40所谓对象模型转换为数据模型,简单地说,就是把类转换所谓对象模型转换为数据模型,简单地说,就是把类转换为表,类与类之间的关系转换为表与表之间的关系,或者为表,类与类之间的关系转换为表与表之间的关系,或者也转换为表。也转换为表。在在Rose 2003中可以把逻辑视图下的包直接转换为数据模型,中可以把逻辑视图下的包直接转换为数据模型,但这种转换必须是对包进行的。也就是说,要转换的类要但这种转换必须是对包进行的。也就是说,要转换

31、的类要放在某个包中,然后把整个包中的所有类都转换过去。放在某个包中,然后把整个包中的所有类都转换过去。第4章 数据建模41下面给出转换的具体步骤:下面给出转换的具体步骤:首先按照上节中介绍的步骤在首先按照上节中介绍的步骤在Rose 2003的构件视图下创建数据的构件视图下创建数据库对象。库对象。在逻辑视图下创建包,例如在逻辑视图下创建包,例如Demo包,并在包中创建类,例如类包,并在包中创建类,例如类Flight和类和类FlightAttendant,在类,在类Flight和类和类FlightAttendant之间之间建立多对多的关联,如图下所示。需要注意的是,类建立多对多的关联,如图下所示。

32、需要注意的是,类Flight和类和类FlightAttendant必须要设置为必须要设置为Persistent(表示该类具有持久性,表示该类具有持久性,这个属性可以在类的这个属性可以在类的Specification对话框的对话框的Detail标签下设置标签下设置),对于非对于非Persistent的类的类(创建类时,默认是非创建类时,默认是非Persistent的的),在转,在转换时不会生成对应的表。换时不会生成对应的表。1.在这个例子中,类与类之间是多对多的关联,也可以是别的关在这个例子中,类与类之间是多对多的关联,也可以是别的关系,如系,如1对多关联、泛化关系等,同样可以转换过去。对多关联

33、、泛化关系等,同样可以转换过去。第4章 数据建模42第4章 数据建模43用鼠标右击包用鼠标右击包DEMO,在弹出的菜单中选,在弹出的菜单中选Data Modeler Transform to Data Model第4章 数据建模44弹出对话框,如下图所弹出对话框,如下图所示。示。在这个对话框中,可在这个对话框中,可以对要生成的数据模以对要生成的数据模型做一些设置,如要型做一些设置,如要生成的模式的名字、生成的模式的名字、目标数据库、所生成目标数据库、所生成的表名的前缀等,也的表名的前缀等,也可以选择是否要对外可以选择是否要对外键生成索引。键生成索引。这里把目标数据库设这里把目标数据库设为在第为

34、在第1步中创建的数步中创建的数据库对象据库对象DB_0,其他,其他的选项采用默认值,的选项采用默认值,然后单击然后单击OK按钮即可。按钮即可。第4章 数据建模45这时在逻辑视图的这时在逻辑视图的Schemas包下会创包下会创建建S_1模式模式(实际上也是一个包实际上也是一个包),在,在S_1模式中有表模式中有表T_Flight、T_0、T_FlightAttendant。为了显示表与表之间的关系,还需要按为了显示表与表之间的关系,还需要按上节中介绍的步骤手工创建一个数据模上节中介绍的步骤手工创建一个数据模型图,例如型图,例如NewDiagram1。然后把这。然后把这3个表拖动到数据模型图中,表

35、与表之间个表拖动到数据模型图中,表与表之间的关系就自动显示出来了。如图所示。的关系就自动显示出来了。如图所示。第4章 数据建模46第4章 数据建模47需要说明的是,把对象模型转换为数据模型,其结果并不需要说明的是,把对象模型转换为数据模型,其结果并不是惟一的。是惟一的。Rose 2003中生成的对象模型只是其中的一种结中生成的对象模型只是其中的一种结果,如果用户觉得需要,也可以自己根据对象模型创建数果,如果用户觉得需要,也可以自己根据对象模型创建数据模型,结果可以不一样。据模型,结果可以不一样。4.4.2 4.4.2 数据模型转换为对象模型数据模型转换为对象模型第4章 数据建模48对象模型和数

36、据模型的开发往往是并行进行的,所以在建对象模型和数据模型的开发往往是并行进行的,所以在建模过程中不只是有对象模型向数据模型转换的需要,同样模过程中不只是有对象模型向数据模型转换的需要,同样也有数据模型向对象模型转换的需要。所谓数据模型向对也有数据模型向对象模型转换的需要。所谓数据模型向对象模型的转换,简单地说,就是把表转换为类,表与表之象模型的转换,简单地说,就是把表转换为类,表与表之间的关系转换为类与类之间的关系。间的关系转换为类与类之间的关系。下面给出数据模型向对象模型转换的例子,这里的数据模下面给出数据模型向对象模型转换的例子,这里的数据模型以上节中得到的数据模型为例,然后把它转换为对象

37、模型以上节中得到的数据模型为例,然后把它转换为对象模型,并与最初的对象模型做比较。型,并与最初的对象模型做比较。第4章 数据建模49转换的具体步骤如下:转换的具体步骤如下:数据模型向对象模型的转换是对模式数据模型向对象模型的转换是对模式(即包的即包的版型版型)进行的。进行的。1.Rose2003会把一个模式中的所有表及其关系转换为对象模型,会把一个模式中的所有表及其关系转换为对象模型,而不会对单个的表进行转换。用鼠标右击图中的而不会对单个的表进行转换。用鼠标右击图中的S_1,在弹出的菜单中选择,在弹出的菜单中选择Data Modeler Transform to Object Model菜单项

38、,如图所示。菜单项,如图所示。第4章 数据建模50第4章 数据建模51这时会弹出一个对话这时会弹出一个对话框;如图所示。框;如图所示。在这个对话框中,可在这个对话框中,可以对要生成的对象模以对要生成的对象模型做一些设置,如要型做一些设置,如要生成的包的名字、所生成的包的名字、所生成的类名的前缀等,生成的类名的前缀等,也可以选择是否根据也可以选择是否根据表的主键生成类中对表的主键生成类中对应的属性。这里使用应的属性。这里使用默认值,即包名为默认值,即包名为OM_S_1,类名的前缀,类名的前缀为为OM_,不选择生成,不选择生成对应主键的属性,然对应主键的属性,然后单击后单击OK按钮即可。按钮即可。

39、第4章 数据建模52这时在逻辑视图下这时在逻辑视图下会创建包会创建包OM_S_1,在这个包中有在这个包中有M_T_Flight类和类和OM_T_FlightAttendant类。为了显示类类。为了显示类与类之间的关系,与类之间的关系,还需要创建一个类还需要创建一个类图,例如图,例如NewDiagram2。然。然后把这两个类拖动后把这两个类拖动到类图中,类与类到类图中,类与类之间的关系就自动之间的关系就自动显示出来了。如图显示出来了。如图所示。所示。第4章 数据建模534.5 4.5 数据库案例分析数据库案例分析第4章 数据建模54依照下图所示的类图作为案例,采用依照下图所示的类图作为案例,采用

40、Rose对其进行关系数对其进行关系数据库设计建模。据库设计建模。第4章 数据建模55 在上图中,各个类之间的关糸有:在上图中,各个类之间的关糸有:1)泛化关系。泛化关系。People类和类和SalesClerk类是泛化类是泛化(继承继承)关系,关系,People类是超类是超类,类,SalesClerk类是子类。类是子类。2)一对多的关联关系。一对多的关联关系。SalesClerk类和类和SalesContract类是一对多的关联关类是一对多的关联关系,表示一个系,表示一个SalesClerk类对象可对应多个类对象可对应多个SalesContract类对象,而一类对象,而一个个SalesCont

41、ract类对象只能对应一个类对象只能对应一个SalesClerk类对象。同样,类对象。同样,Client类和类和SalesContract类也是一对多的关联关系。类也是一对多的关联关系。3)多对多的关联关系。多对多的关联关系。SalesContract类和类和Product类之间是多对多的关联类之间是多对多的关联关系,其实际意义是一个关系,其实际意义是一个SalesContract类对象可以对应多个类对象可以对应多个Product类类对象,一个对象,一个Product类对象也可以对应多个类对象也可以对应多个SalesContract类对象。类对象。第4章 数据建模56首先对首先对People类

42、和类和SalesClerk类进行映射转换,它们之间是类进行映射转换,它们之间是泛化泛化(继承继承)关系,采用每个子类映射为单个表,将超类的关系,采用每个子类映射为单个表,将超类的属性复制到子类映射的表中。属性复制到子类映射的表中。然后在各子类映射的表中增加各自的对象标识符。然后在各子类映射的表中增加各自的对象标识符。4.5.14.5.1创建数据库关系模式生成器创建数据库关系模式生成器第4章 数据建模57首先运行首先运行Rational Rose系统。系统。在左侧浏览器窗口用鼠标右键单击逻辑视图在左侧浏览器窗口用鼠标右键单击逻辑视图“Logic View”,在弹,在弹出的菜单中选择数据模型生成器

43、选项出的菜单中选择数据模型生成器选项“Data Modeler”,在弹出的,在弹出的下一级菜单中选择下一级菜单中选择“New”选项,然后在弹出的下一级菜单中再选项,然后在弹出的下一级菜单中再选择模式选择模式“Schema”选项,即可开始将类生成相应的关系模式。选项,即可开始将类生成相应的关系模式。后续的操作都在此基础上进行。后续的操作都在此基础上进行。第4章 数据建模58在展开的模式在展开的模式“Schemas”对话框中,系统默认生成的名字为对话框中,系统默认生成的名字为“S_0”的模式,右键单击打开模式规格说明的模式,右键单击打开模式规格说明“Open Specification”对对话框,

44、将模式名称话框,将模式名称“S_0”修改为修改为“进销存管理系统进销存管理系统”。如图所示。如图所示。第4章 数据建模59在在“进销存管理系统进销存管理系统”选项上单击鼠标右键,在弹出的菜单中选选项上单击鼠标右键,在弹出的菜单中选择择“Data Modeler”,然后选择其,然后选择其“New-Data Model Diagram”子菜子菜单创建一个新数据模型图。双击该图,工具栏按钮变成如图所单创建一个新数据模型图。双击该图,工具栏按钮变成如图所示。示。4.5.24.5.2泛化关系映射的关系模式泛化关系映射的关系模式第4章 数据建模60建立泛化关系映射的关系模式过程如下:建立泛化关系映射的关系

45、模式过程如下:单击工具栏上的单击工具栏上的“Table”图标按钮,在右侧窗口空白处单击鼠标图标按钮,在右侧窗口空白处单击鼠标添加一个表对象。打开表规格说明添加一个表对象。打开表规格说明“Table specification”对话框,对话框,在在“General”页修改表名为页修改表名为“People”。在。在“Columns”页编辑表的列页编辑表的列(域域)属性,单击新建图标,或者在列表空白处选择右键快捷菜单属性,单击新建图标,或者在列表空白处选择右键快捷菜单“Insert”可创建一个新列,如图所示。可创建一个新列,如图所示。第4章 数据建模61在新添加的列在新添加的列(域域)上单击右键,选

46、择上单击右键,选择“Open Speclfication”,打开,打开设置对话框设置该设置对话框设置该 列列(域域)的名称、数据类型、长度、是否主键的名称、数据类型、长度、是否主键以及默认值。把以及默认值。把People类的属性映射成表列,应为类的属性映射成表列,应为People类增加类增加一个标识符属性一个标识符属性PID,并将其映射为对应表的主键,并将其映射为对应表的主键(表中右侧有表中右侧有红色红色“PK”字样的域字样的域)。完成后的。完成后的People类对应的关系数据库二维类对应的关系数据库二维表如图所示。表如图所示。依照以上方法完成依照以上方法完成salesClerk类映射的表单,

47、如图所示类映射的表单,如图所示4.5.34.5.3关联关系映射的关系模式关联关系映射的关系模式第4章 数据建模62类之间的关联关系映射到关系数据库中二维表关系模式的类之间的关联关系映射到关系数据库中二维表关系模式的步骤如下。步骤如下。(1)一对多关联关系映射一对多关联关系映射对销售人员类对销售人员类salesClerk与销售合同类与销售合同类SalesContract的一对的一对多关联关系进行映射:多关联关系进行映射:1) 分别建立两个类映射的关系数据库二维表。分别建立两个类映射的关系数据库二维表。第4章 数据建模63从图中可以看出,在销售人员从图中可以看出,在销售人员SalesClerk表中

48、有主键表中有主键SalesClerkID,在销售合同在销售合同salesContract表中有主键表中有主键sConID。在。在SalesContract表表中又增加了一个外键中又增加了一个外键(表中右侧有红色表中右侧有红色“FK”字样的域字样的域)SalesClerkID,其指向为其指向为SalesClerk表的主键。表的主键。第4章 数据建模64客户客户Client类与销售合同类与销售合同SalesContract类之间也是一对多的关联,类之间也是一对多的关联,它们的映射可以仿照上面的步骤添加客户它们的映射可以仿照上面的步骤添加客户Client表和销售合同表和销售合同SalesContra

49、ct表的关联。表的关联。2)然后为两个类添加关联,选择然后为两个类添加关联,选择“关联关联”图标,添加从销售人员图标,添加从销售人员SalesClerk表到销售合同表到销售合同SalesContract表的关联。表的关联。3)双击刚添加的关联可以打开关联规格说明双击刚添加的关联可以打开关联规格说明“Open Specification”对话框,设置关联的属性,如图所示。此处添加的关联两端的阶对话框,设置关联的属性,如图所示。此处添加的关联两端的阶元反映了实际业务的情况,保留默认的设置。完成后的两个表之元反映了实际业务的情况,保留默认的设置。完成后的两个表之间的关联模型图如图所示。间的关联模型图

50、如图所示。第4章 数据建模65 (2)多对多关联关系映射多对多关联关系映射在类图中产品在类图中产品Product类和销售合同类和销售合同SalesContract类是多对类是多对多的关联。多的关联。在实际业务中,一个商品可能出现在多个销售合同中,一个销售在实际业务中,一个商品可能出现在多个销售合同中,一个销售合同也可能包括多个商品。合同也可能包括多个商品。1)添加关联类。依照多对多关联的映射方法,将产品添加关联类。依照多对多关联的映射方法,将产品Product类和类和销售合同销售合同SalesContract类之间的关联关系设计成一个新类类之间的关联关系设计成一个新类关关联类,命名为联类,命名

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁