1、第八章 使用UML的数据库分析与设计,本章的教学目的长期以来按照传统的系统设计方法,应用程序设计与数据库设计是分别进行的,设计完成后还需要对这两项设计进行协调,因此比较麻烦。如果采用UML进行系统分析和设计,则可以把系统的应用程序设计和数据库设计统一起来,有效地提高数据库设计的效率和质量,降低开发风险,提高软件部件的可重用性,降低开发成本。所以,希望同学们通过本章的学习能掌握使用 UML进行数据库分析与设计的方法。 本章的教学内容 UML关系数据库设计的概念、术语和规范 使用UML进行数据库分析与设计的方法与过程,8.1 数据库设计的一般方法与过程 1.传统的关系数据库设计方法与过程传统的关系
2、数据库设计的过程分为4个阶段: 需求分析; 概念结构设计; 逻辑结构设计; 物理结构设计。 (1)需求分析阶段的主要任务是通过对现行的系统进行调查分析,以确定即将建立的数据库应用系统的信息需求和处理要求,并对数据的存储要求和处理要求进行描述,编制出数据库需求分析说明书,作为后续各设计阶段的依据。,(2)概念结构设计需要借助某种工具或方法,如当前应用最广泛的有实体联系方法(Entity-Relationship,ER方法),它使用ER图定义系统的信息组织模式,即概念结构。,教师-学生-课程E-R 图,(3)逻辑结构设计的任务是按照一定的规则,将概念结构转换为某种数据库管理系统所能接受的数据模型。
3、,图2 一个实体类型转换为一个关系模型,(4)物理结构设计将前一阶段设计的关系模式转化为具体数据库环境下的数据表结构,以实现对数据库的有效管理。这需要依赖于给定的计算机系统来确定。对于关系数据库系统来说,数据库的物理结构主要由DBMS确定。2.基于UML的数据库设计使用UML做数据库设计,可以把数据库设计与系统的应用程序设计结合在一起进行,而且UML具有更强的建模表现能力。,基于UML的关系数据库设计与传统的关系数据库设计的过程类似,一般分为4个阶段: 业务Use Case模型设计:就是进行数据库的需求分析,使用用例图等建立业务模型。 逻辑数据模型设计:主要是确定应用系统所需要的持久数据。使用
4、类图等建立数据库逻辑模型。如果是关系数据库设计,则需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 物理数据模型设计:使用组件图、配置图等,设计数据库的物理模型。 物理实现设计:根据物理数据模型建立具体数据库环境下的数据库,定义构成数据库的基本表、视图等。,8.2 UML用于数据库设计的规范 8.2.1 表是关系数据库的基本建模结构。表又称为二维表或关系,它是具有相同结构的行(Row)的集合,行又称为元组。表中的每一列又称为关系的属性。,在UML中表用类的图标来表示,带有构造型图标“ ”或,类名即表名,类的属性描述表的列特性,包括列名、数
5、据类型,以及有关的约束。在类的行为部分,根据需要可以给出对表的一些操作的描述,也可以缺省。,8.2.2 关键字与索引 (1)候选关键字(candidate key):是一个或多个属性的组合,它唯一地确定某个表里的记录。一个候选关键字里的属性集必须是最小化的;除非破坏唯一性,否则属性不能从候选关键字删除。候选关键字里的属性不能为空。 (2)主关键字(primary key):是一个特别选定的候选关键字,用来唯一地确定表里的记录。 (3)外来关键字(foreign key):是一个属性或属性组,它在本表中不是关键字,不能唯一地标识表中的行,但它在另一个表中是主关键字,能够唯一地标识那个表中的行。外
6、来关键字体现了两个表的联系,实现表之间的参照完整性。 (4)索引:索引是由数据库表中一列或多列值的集合形成的数据结构,使用这种结构可快速访问数据库表中的特定信息。在UML图标中,索引用构造型表示。,索引表结构图,8.2.3 约束约束是一种施加于数据库结构的规则,用于保证数据库的正确性或完整性。 (1)主关键字约束加在表的图标中的一个属性名前面,表示该属性为主关键字,也可以加在一个操作名前表示该操作的类型。主关键字约束使用构造型表示,也可用一个小图标“PK”代替。,(2)外来关键字约束加在表中的一个属性名前面,表示该属性为外来关键字,也可以加在一个操作名前表示该操作的类型。外来关键字约束使用构造
7、型表示,也可用一个小图标“FK”代替。,(3)触发器约束为保证表的数据完整性而定义的约束操作。当对表中数据进行了增、删、改等操作时,触发器可能被自动激发执行。触发器约束使用构造型表示,它可以加在一个操作名前面,以表示该操作是一个触发器。,(4)值检验约束可以检验表中列值是否符合某个规则,比如把列值与一个固定的值范围进行比较或与数据库中的其他数据进行比较。值检验约束使用构造型表示,它可以加在一个操作名前面,以表示该操作是一个值检验约束。,(5)值唯一性约束保证所定义列的所有值是互不相同的。值唯一性约束使用构造型表示,它可以加在一个操作名前面,以表示该操作是一个值检验约束。,8.2.4 联系存在于
8、两个表之间的任何关系称为联系。表之间的联系有两种:非确定性联系和确定性联系。 非确定性联系(Non-Identify Relationship)是存在于两个独立表之间的联系,此时在子表中的外来关键字为非主关键字列 。,确定性联系(Identify Relationship)是存在于两个有依赖关系的表之间的联系,若父表不存在,则子表也不存在,子表的存在依赖于父表的存在。父表中的每一个主关键字列都可成为子表中的主关键字列的一部分和外来关键字列。,8.5 视图一个视图是一个基本表的投影,包含基本表的部分数据。 视图可以看成数据库的窗口,可以简化数据库查询的复杂性,有利于保持数据库数据的一致性和安全性
9、。在UML中,视图用带有构造性图标“ ”或的类表示,类名即为视图名。但是,视图的属性必须与其来源表中相应的属性一致。,8.6 数据库与数据库模式(1) 数据库在UML中,数据库用带有构造型的组件表示,也可用柱型图标表示。,(2) 数据库模式数据库模式是表的组织结构的描述。关系数据库模式是关系模式的集合,包括对表的静态结构和完整性约束的定义。在UML中,数据库模式用带有构造型的包表示,通常用在类图中。,8.7 表空间与节点 (1)表空间表空间是指数据的存储区域。一个数据库可以分布在一个或多个表空间,这取决于数据库的数据量、数据访问要求和安全性的要求。表空间用带有构造型的组件表示,表空间与数据库的
10、联系用依赖表示。,(2)节点节点(Node)是处于运行期的分布式系统的物理元素,代表计算机资源,如处理器或其他硬件设备。经过开发得到的软件组件和重用模块就必须配置在相应的节点上才能被执行。节点在配置图中使用,通过节点和节点之间的联系,表达计算机系统的物理配置结构。,8.3 关系数据库逻辑模型设计 8.3.1 逻辑模型设计在逻辑数据模型设计阶段,主要任务是确定应用系统所需长期保存的持久数据,用类图等建立数据库的逻辑模型。对于关系数据库,则需要根据系统中的实体类,创建关系数据库模式,包括表、视图、索引等数据结构元素的设计,以及相应的触发器、存储器的设计。 8.3.2 从类创建表将类转换为表的最简单
11、做法是一对一映射,即为每一个实体类创建一个表。类中的属性就是表中的列,类中的关键字就是表的关键字。,类向表映射示例,类向表映射时应注意的事项: (1)注意数据类型的转换:要把对象类的属性数据类型 转换为数据库模型中列的数据类型; (2)可导出的属性数据,不必作为持久性数据映射成表中的列。 (3)从类创建表的过程中,要指定主关键字和外来关键字,增加必要的约束条件,如合法输入值校验等,做成操作函数列入相应的表模型中。,8.3.3 联系的映射1. 关联的映射 (1)类之间的关联是“一对一”的情形在向关系数据模型的映射中,可以为每一个类创建一个表,其中主表的主关键字也是它所关联的表的外来关键字。,(2
12、)类之间的关联是“一对多”的情形 在向关系数据模型的映射中,可以为每一个类创建一个表,其中“一”方表的主关键字也是它所关联的“多”方表的外来关键字。,(3)类之间的关联是“多对多”的情形 在向关系数据模型的映射中,除了为每一个类创建一个表以外,必须创建一个关联表(Associate Table),实现多对多的关联。关联表的作用是把一个“多对多” 的联系转换为两个 “一对多”的联系,该关联表的主关键字由它所关联的每个表的主关键字组成。,2.泛化/特化联系的映射对于泛化/特化联系的映射,可以有如下三种做法: (1)为超类和每个子类创建一个表,同时视需要可为每一个超类/子类对创建一个视图; (2)为
13、超类创建一个表,将子类的所有列信息存入到超类表中,即将表示泛化/特化联系的层次结构(继承)简单地转换为一个表。 (3)为每一个子类创建一个表,将超类的所有列信息存入到每个子类表中。,当采用第二种方法把泛化/特化关系映射为关系数据模型时,将子类表的所有列信息存入到超类表中。如图8.15所示。,当采用第三种方法把泛化/特化关系映射为关系数据模型时, 为每一个子类创建一个表,将超类的所有列信息存入到每个子类表中。如图8.16所示。,3. 聚合/组合联系的映射聚合/组合联系的映射类似于关联的映射,可以有如下三种做法: (1)如果构成聚合/组合联系的超类和子类之间的多重性是“一对一”的,则可以把超类和子
14、类合并转换为一个表,其中包含超类和子类的全部属性数据。,(2)如果构成聚合/组合联系的超类和子类之间的多重性是“一对多”的,则可以把超类和子类分别转换为一个表。对于聚合,超类相应的表和子类相应的表之间存在非确定性联系;对于组合,两个表之间存在确定性联系。,8.3.4 触发器与存储过程,触发器(Trigger)为保证表的数据正确性和完整性而定义的约束操作。当对表中数据进行增、删、改等操作时,触发器可能被自动激发执行。触发器约束使用构造型表示,它可以加在一个操作名前面,以表示该操作是一个触发器。,存储过程 (Stored Procedure) 是一种对数据库进行数据操作和运算的程序过程,是经过事先
15、编译的存储在数据库内部的过程。一个存储过程可以是依附于某个表的,也可以是独立的。在数据库建模中,一个或多个存储过程可以组织成存储过程集,用带有构造型的类图标表示,在其中的操作框中列出每个存储过程的名称、类型和参数,并在前面标记。,8.4 关系数据库物理设计主要任务是创建必需的表空间和数据库,并把它们配置到适当的物理节点上。 (1)首先创建表空间,然后根据表所存储的数据的特点、数据量的大小,以及对数据存取特性的要求,把全部的表划分成几个组,将每组存入一个或几个表空间。一个表空间可以存储多个表,一个表的数据也可分散于多个表空间,视具体情况而定。,在表空间的基础上,进一步创建数据库,并且按照实际需要
16、和实现环境,考虑将数据库配置在一个独立的物理节点上,还是与应用系统配置在同一个节点上。,8.5 网上书店的关系数据库设计,基于UML的关系数据库设计一般分为4个阶段: 业务Use Case模型设计:就是进行数据库的需求分析,使用用例图等建立业务模型。 逻辑数据模型设计:主要是确定应用系统所需要的持久数据。使用类图等建立数据库逻辑模型。如果是关系数据库设计,则需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 物理数据模型设计:使用组件图、配置图等,设计数据库的物理模型。 物理实现设计:把物理数据模型转换到实际的数据库环境。结合实际的数据库环境,定义构成数据库的基本表、文件的组织方式、索引方式等。,习题和实验题试用UML对学生选课系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能: ;(2)成绩管理功能。 试完成下列工作,写出相关的分析和设计文档 : (1)写出系统需求分析画出用例图; (2)建立系统静态结构模型画出类图; (3)建立系统动态结构模型画出序列图、协 作图、活动图; (4)建立关系数据库逻辑模型; (5)建立系统物理模型画出组件图和配置图。,