一对一基数
让我们考虑下面的一对一基数图 -
在此 ER 图中,员工可以为一家公司工作,但公司可以有许多这样的员工。上面的 ER 图代表 3 个实体 -
- Employee 实体有 2 个属性,即 - emp_id 和 emp_name。 emp_id 是主键
- 公司实体有 2 个属性,即 - emp_id 和 cmp_name。 cmp_id 是主键
- 我们不能将 cmp_id 作为主键,因为多个员工可以为同一个 cmp_id 工作。但是,我们可以将 Employee 和 Work 表结合起来。因此,在一对多基数场景中至少需要 2 个表。
多对多基数
让我们考虑下图的一对多基数 -
在此 ER 图中,员工可以为多家公司工作 一个公司可以有很多这样的员工。上面的 ER 图代表 3 个实体 -
- Employee 实体有 2 个属性,即 - emp_id 和 emp_name。 emp_id 是主键
- 公司实体有 2 个属性,即 - emp_id 和 cmp_name。 cmp_id 是主键
- 与前面的示例不同,无法将工作表与 Employee 或 Company 合并。如果我们尝试合并它,则会创建冗余数据。因此,在多对多基数场景中至少需要 2 个表