ER 图的最小化

2025年3月17日 | 阅读 3 分钟

ER图

ER图代表实体关系图。当我们用图表绘制实体之间的关系时,就称为实体关系图。ER图仅用于数据库管理员的理解目的。我们不能直接在计算机上使用ER图。ER图被转换为表单,然后使用任何查询语言将其插入计算机。在ER图中,我们使用属性、实体以及实体之间的关系。我们使用椭圆形来表示实体,使用菱形来表示实体之间的关系。

基数

两个实体集之间可能存在的关系的数目称为基数。

ER图中有四种基数类型

  • 一对一
  • 一对多
  • 多对一
  • 多对多

ER 图的最小化

最小化是指减少ER图中的表数。我们知道,我们将ER图映射到表以将其保存在系统中。如果表很多,数据库管理员将更难处理数据和访问不同的表。我们可以尽可能地最小化这些表以降低数据库的复杂性。减少ER图将取决于关系的基数。所以我们将看到最小化ER图的不同情况。

  • 一对一关系

当两个实体之间存在一对一关系时,可能存在两种情况

当一端存在总参与时

Minimization of ER Diagrams

假设我们有两个实体,p1和p2分别是这两个实体的属性和主键。如果实体1端存在总参与,那么我们可以将两个表合并为一个,主键为p1。

由于实体1是总参与,这意味着实体1的每一行都与实体2的一行相关。尽管如此,实体2的每个条目都不一定与实体1的行相关。所以,我们将选择p1作为主键。

当不存在总参与时

Minimization of ER Diagrams

假设我们有两个实体,p1和p2分别是这两个实体的属性和主键。如果不存在总参与,那么我们就不能合并和减少表,因为如果我们合并表,以p1为主键或以p2为主键,那么我们会丢失一些条目,并且在合并的表中会出现NULL值。

因此,在一对一关系中,如果不存在总参与,至少需要两个表。

  • ER图中的一对多基数
Minimization of ER Diagrams

我们可以通过一个例子来理解。假设我们有一个实体是学生,另一个实体是课程,关系是注册。一个学生可以注册一门课程,但一门课程可以被许多学生注册,所以这是一对多基数。

我们将有三个表:一个用于学生,一个用于课程,最后一个用于注册。我们可以合并任何两个表来最小化ER图。我们可以将学生和注册表合并,以学生ID作为主键,课程作为其他表。因此,我们可以将其最小化为两个表。

因此,在一对多基数中,我们至少需要两个表。

  • 一对多基数

在一对多基数中,其工作方式与多对一相同,我们将表合并为至少两个表以最小化ER图。

  • 多对多基数
Minimization of ER Diagrams

假设我们使用与上述情况相同的例子,但现在一个学生可以注册多门课程,一门课程可以被许多学生注册。所以,这将是多对多基数关系。现在,如果我们合并这两个表,那么我们就必须选择学生ID或课程ID作为主键,在这两种情况下,合并的表都会有冗余数据。因此,我们不能合并表,在多对多基数关系中至少需要三个表。