ER 图的最小化
问题陈述
ER 图是显示各种表及其之间关系的图形表示。通过 ER 图,我们可以减少数据库的数量。
一对一基数
让我们考虑以下具有一个对一个基数的图:
上面的 ER 图表示 3 个实体:
- 员工实体有两个属性,即 emp_name。emp_id 是主键
- 公司实体有两个属性,即 cmp_name。cmp_id 是主键
- 工作实体的主键可以是 emp_id 或 cmp_id
- 我们不能将 3 个表合并成一个,可以将工作合并到员工或公司中。在一对一基数场景中,至少需要 2 个表。
一对多基数
让我们考虑以下具有一个对多基数的图:
在这个 ER 图中,一个员工可以为一家公司工作,但一家公司可以拥有许多这样的员工。上面的 ER 图表示 3 个实体:
- 员工实体有两个属性:emp_id 和 emp_name。emp_id 是主键
- 公司实体有两个属性:emp_id 和 cmp_name。cmp_id 是主键
- 我们不能将 cmp_id 作为主键,因为多个员工可以为同一个 cmp_id 工作。但是,我们可以将员工和工作表合并。因此,在一对多基数场景中,至少需要 2 个表。
多对多基数
让我们考虑以下具有一个对多基数的图:
在这个 ER 图中,一个员工可以为多家公司工作,一家公司可以拥有许多这样的员工。上面的 ER 图表示 3 个实体:
- 员工实体有两个属性:emp_id 和 emp_name。emp_id 是主键
- 公司实体有两个属性:emp_id 和 cmp_name。cmp_id 是主键
- 与前面的示例不同,不能将工作表与员工或公司合并。如果我们尝试合并它,它将创建冗余数据。因此,在多对多基数场景中,至少需要 2 个表。
广告