ER 图的最小化

mysqlmysqli database

问题陈述

ER 图是显示各种表及其之间关系的图形表示。通过 ER 图,我们可以减少数据库的数量。

一对一基数

让我们考虑下图中一对一基数的 −

上面的 ER 图表示 3 个实体 −

  • 员工实体有 2 个属性,即 emp_name。emp_id 是主键
  • 公司实体有 2 个属性,即 cmp_name。 cmp_id 是主键
  • Work 实体的主键可以是 emp_id 或 cmp_id
  • 我们不能将 3 个表合并为一个,可以将 Work 合并到 Employee 或 Company。一对一基数场景至少需要 2 个表。

一对多基数

让我们考虑下图中的一对多基数 −

在此 ER 图中,员工可以为一家公司工作,但公司可以有许多这样的员工。上面的 ER 图表示 3 个实体 −

  • 员工实体有 2 个属性,即 − emp_id 和 emp_name。emp_id 是主键
  • 公司实体有 2 个属性,即 − emp_id 和 cmp_name。cmp_id 是主键
  • 我们不能将 cmp_id 设为主键,因为多个员工可以为同一个 cmp_id 工作。但是,我们可以合并员工表和工作表。因此,在一对多基数场景中至少需要 2 个表。

多对多基数

让我们考虑下图中的一对多基数 −

在此 ER 图中,员工可以为多家公司工作,一家公司可以有许多这样的员工。上面的 ER 图代表 3 个实体 −

  • 员工实体有 2 个属性,即 − emp_id 和 emp_name。emp_id 是主键
  • 公司实体有 2 个属性,即 − emp_id 和 cmp_name。 cmp_id 是主键
  • 与前面的示例不同,不能将工作表与员工表或公司表合并。如果我们尝试合并,那么它将创建冗余数据。因此,在多对多基数场景中至少需要 2 个表

相关文章