数据库设计与E-R模型:综合解析
立即解锁
发布时间: 2025-08-23 01:16:45 阅读量: 2 订阅数: 17 

### 数据库设计与E - R模型:综合解析
在数据库设计领域,合理的设计方法和有效的数据建模至关重要。下面我们将深入探讨数据库设计中的多种关键概念和方法。
#### 方法对比与问题解决
在数据库设计中,存在不同的方法,而某些方法在特定方面存在不足。例如,第二种方法在定义外键约束时存在问题。假设存在一个涉及实体集“person”的关系集“R”,使用第一种方法从关系集创建关系模式“R”时,会同时定义一个引用“person”模式的外键约束。但使用第二种方法时,没有一个单一的关系可供“R”的外键约束引用。为避免此问题,需要创建一个至少包含“person”实体主键属性的关系模式“person”。
若使用第二种方法处理重叠泛化,会出现不必要的数据重复存储。比如,一个人既是员工又是学生,“street”和“city”的值会被存储两次。若泛化是不相交但不完全的,即有些人既不是员工也不是学生,就需要一个额外的模式“person (ID, name, street, city)”来表示这些人,但上述外键约束问题仍然存在。为解决此问题,若将员工和学生信息也添加到“person”关系中,会导致“name”、“street”和“city”信息在“person”关系和“student”关系(针对学生)以及“person”关系和“employee”关系(针对员工)中冗余存储。因此,建议只在“person”关系中存储这些信息,并从“student”和“employee”中移除,这实际上就回到了第一种方法。
#### 聚合的表示
对于包含聚合的E - R图设计模式相对简单。以特定图为例,关系集“eval for”(在“proj guide”的聚合和实体集“evaluation”之间)的模式包括“evaluation”实体集主键中的每个属性,以及“proj guide”关系集的主键属性。若“eval for”关系集有描述性属性,也会包含在内。然后按照已定义的规则转换聚合实体集中的关系集和实体集。
之前创建关系集主键和外键约束的规则同样适用于涉及聚合的关系集,将聚合视为普通实体集。聚合的主键是定义它的关系集的主键,无需单独的关系来表示聚合,而是使用从定义关系创建的关系。
#### 数据建模的替代符号
数据模型的图形表示是数据库模式设计的重要部分。数据库模式的创建不仅需要数据建模专家,还需要了解应用需求但可能不熟悉数据建模的领域专家。直观的图形表示有助于这些专家之间的信息交流。
目前提出了多种数据建模的替代符号,其中E - R图和UML类图应用最为广泛。E - R图没有统一的标准符号,不同书籍和软件使用不同的符号。下面我们来了解一些常见的替代E - R符号:
- **属性表示**:一种替代方法是将实体的属性用椭圆连接到表示实体的方框上,主键属性通过下划线表示。关系属性也可以类似地用椭圆连接到表示关系的菱形上。
- **基数约束表示**:
- 一种方式是在关系的边上使用“*”和“1”标签来表示多对多、一对一和多对一关系。
- 另一种方法是用实体集之间的线表示关系集(不用菱形),仅能建模二元关系。基数约束用“crow’s - foot”符号表示,如在实体集“E1”和“E2”之间的关系“R”中,两边都有“crow’s feet”表示多对多关系,仅“E1”边有表示从“E1”到“E2”的多对一关系。总参与用竖线表示,部分参与用圆圈表示,且位置与实体参与方向相反。
- **泛化表示**:之前的版本中用三角形表示泛化,现在的新版本为了更接近UML类图的形式进行了更新。使用椭圆表示属性和菱形表示关系的符号接近Chen最初提出的E - R图形式,被称为Chen符号。美国国家标准与技术研究院在1993年定义了标准“IDEF1X”,使用“crow’s - foot”符号,用竖线表示总参与,空心圆圈表示部分参与。
此外,一些数据建模工具允许用户在实体的两种视图之间选择,一种是不包含某些属性的实体视图,另一种是包含这些属性的关系视图。
#### UML统一建模语言
实体 - 关系图有助于对软件系统的数据表示组件进行建模,但数据表示只是整个系统设计的一部分。UML是由对象管理组织(OMG)开发的用于创建软件系统各组件规范的标准,它包含以下几个部分:
- **类图**:类似于E - R图,但UML建模对象,而E - R建模实体。对象有属性,还提供一组可调用的函数(方法)。类图除了能描绘属性,还能描绘方法。UML不支持复合或多值属性,派生属性相当于无参数的方法。由于类支持封装,UML允许属性和方法前缀“+”、“ - ”或“#”,分别表示公共、私有和受保护的访问。
- **用例图**:展示用户与系统之间的交互,特别是用户执行任务的步骤,如取款或注册课程。
- **活动图**:描绘系统各组件之间的任务流程。
- **实现图**:展示系统组件及其在软件和硬件层面的互连。
在UML中,关系集被称为关联,为保持与E - R术语一致,我们仍称为关系集。二元关系集在UML中用连接实体集的线表示,可在旁边写上关系集名称,也可在实体集旁边的线上写角色名称。或者将关系集名称和属性写在一个框中,用虚线连接到表示关系集的线上。
UML从1.3版本开始支持非二元关系,使用与E - R图相同的菱形符号。基数约束的表示形式与E - R图相同,但位置相反。UML支持泛化,符
0
0
复制全文
相关推荐









