数据库设计:从E-R模型到UML及其他考量
立即解锁
发布时间: 2025-08-23 00:33:58 阅读量: 7 订阅数: 25 


数据库系统概念第六版精华
### 数据库设计:从 E-R 模型到 UML 及其他考量
#### 1. 方法对比与聚合表示
在数据库设计中,不同方法各有优劣。第二种方法在定义外键约束时存在缺陷。例如,假设有一个涉及实体集“person”的关系集 R。使用第一种方法,从关系集创建关系模式 R 时,会同时定义 R 上的外键约束,引用“person”模式。但第二种方法没有一个单一的关系可供 R 的外键约束引用。为避免此问题,需要创建一个至少包含“person”实体主键属性的关系模式“person”。
若将第二种方法用于重叠泛化,一些值会被不必要地多次存储。比如,一个人既是员工又是学生,街道和城市的值会被存储两次。若泛化是不相交但不完全的,即有些人既不是员工也不是学生,就需要一个额外的模式“person (ID, name, street, city)”来表示这些人,但外键约束问题依然存在。若尝试解决该问题,将员工和学生也在“person”关系中表示,那么学生的姓名、街道和城市信息会在“person”关系和“student”关系中冗余存储,员工同理。这表明应只在“person”关系中存储这些信息,并从“student”和“employee”中移除,这样就回到了第一种方法。
对于包含聚合的 E-R 图设计模式,过程相对直接。以图 7.23 为例,“proj guide”聚合与“evaluation”实体集之间的关系集“eval for”的模式,包含“evaluation”实体集主键的每个属性,以及“proj guide”关系集的主键属性。若“eval for”关系集有描述性属性,也会包含在内。然后按照已定义的规则转换聚合实体集内的关系集和实体集。
创建关系集主键和外键约束的规则同样适用于涉及聚合的关系集,将聚合视为其他实体集。聚合的主键是定义它的关系集的主键,无需单独的关系来表示聚合,而是使用从定义关系创建的关系。
#### 2. 数据建模的替代符号
数据模型的图形表示是数据库模式设计的重要部分。数据库模式的创建不仅需要数据建模专家,还需要了解应用需求但可能不熟悉数据建模的领域专家。直观的图形表示有助于这些专家之间的信息交流。
目前有多种数据建模的替代符号,其中 E-R 图和 UML 类图应用最为广泛。E-R 图符号没有统一标准,不同书籍和 E-R 图软件使用不同符号。
##### 2.1 替代 E-R 符号
常见的替代 E-R 符号如下:
- **属性表示**:一种表示实体属性的替代方法是将属性显示在与表示实体的方框相连的椭圆中,主键属性通过下划线表示。关系属性也可类似表示,将椭圆连接到表示关系的菱形上。
- **基数约束表示**:关系的基数约束有多种表示方式。一种是在关系边缘使用标签“*”和“1”来描绘多对多、一对一和多对一关系(一对多情况与多对一对称,未展示)。另一种替代符号中,关系集用实体集之间的线表示,不使用菱形,仅能建模二元关系,基数约束用“crow’s-foot”符号表示。在 E1 和 E2 之间的关系 R 中,两边都有“crow’s-foot”表示多对多关系,仅 E1 边有表示从 E1 到 E2 的多对一关系。该符号中,垂直条表示完全参与,空心圆表示部分参与,但需注意其位置与实体参与关系的方向相反。
- **泛化表示**:泛化的一种替代表示是使用三角形而不是空心箭头。在第五版之前的版本中,使用椭圆表示属性,三角形表示泛化,这种使用椭圆表示属性、菱形表示关系的符号接近陈在引入 E-R 建模概念的论文中使用的原始 E-R 图形式,现在被称为陈式符号。1993 年,美国国家标准与技术研究院定义了名为 IDEF1X 的标准,使用“crow’s-foot”符号,用垂直条表示完全参与,空心圆表示部分参与。
随着统一标记语言(UML)的使用增加,为使 E-R 符号更接近 UML 类图形式进行了更新。与之前的符号相比,新符号对属性的表示更紧凑,也更接近许多 E-R 建模工具支持的符号,同时更接近 UML 类图符号。
不同工具构建 E-R 图有各自的符号变体,部分工具还提供多种 E-R 符号变体供选择。E-R 图中的实体集与从这些实体创建的关系模式的一个关键区别是,与 E-R 关系对应的关系模式中的属性(如“instructor”的“dept name”属性)不在 E-R 图的实体集中显示。一些数据建模工具允许用户在同一实体的两种视图之间选择,一种是不包含这些属性的实体视图,另一种是包含这些属性的关系视图。
##### 2.2 UML 类图符号
实体 - 关系图有助于对软件系统的数据表示组件进行建模,但数据表示只是整个系统设计的一部分,其他组件包括用户与系统的交互模型、系统功能模块的规范及其交互等。统一建模语言(UML)是在对象管理组织(OMG)支持下开发的用于创建软件系统各组件规范的标准。UML 的部分组成如下:
- **类图**:类似于 E-R 图,后续将说明其与 E-R 图的关系。
- **用例图**:展示用户与系统之间的交互,特别是用户执行任务的步骤。
- **活动图**:描绘系统各组件之间的任务流程。
- **实现图**:显示系统组件及其在软件和硬件层面的互连。
UML 对对象进行建模,而 E-R 对实体进行建模。对象类似实体且有属性,还提供一组可调用的函数(方法),用于根据对象属性计算值或更新对象本身。类图除了属性还能描绘方法。UML 不支持复合或多值属性,派生属性相当于无参数的方法。由于类支持封装,UML 允许属性和方法前缀“+”“-”“#”,分别表示公共、私有和受保护的访问。
在 UML 术语中,关系集称为关联,为与 E-R 术语一致,仍称为关系集。在 UML 中,用一条线连接实体集表示二元关系集,在线旁写上关系集名称,也可在实体集旁的线上写上角色名称,指定实体集在关系集中扮演的角色。或者将关系集名称写在一个框中,连同关系集的属性,并用虚线将框连接到表示关系集的线上,此框可视为实体集,像 E-R 图中的聚合一样参与与其他实体集的关系。
自 UML 1.3 版本起,支持非二元关系,使用与 E-R 图相同的菱形符号。早期版本的 UML 无法直接表示非二元关系,需转换为二元关系。UML 允许对二元关系也使用菱形符号,但大多数设计师使用线符号。
UML 中基数约束的指定方式与 E-R 图相同,形式为“l..h”,其中“l”表示实体可参与关系的最小数量,“h”表示最大数量。但需注意,约束的位置与 E-R 图中约束的位置完全相反。例如,E2 边的约束“0..*”和 E1 边的“0..1”表示每个 E2 实体最多可参与一个关系,而每个 E1 实体可参与多个关系,即从 E2 到 E1 的关系是多对一。
UML 支持泛化,符号与 E-R 符号基本相同,包括不相交和
0
0
复制全文
相关推荐










