📜  什么是映射基数? ER图

📅  最后修改于: 2021-09-08 16:04:55             🧑  作者: Mango

先决条件: ER模型介绍

介绍 :
每当一种实体类型的属性引用另一种实体类型时,它们之间就存在某种关系。
例子 –

  • 部门的属性经理是指管理部门的员工。
  • 在 ER 模型中,这些引用表示为关系。

关系 :
ER 模型中的关系使用菱形框表示。
例子 –

“购买”是客户实体和产品之间的关系。这种关系可以理解为“客户购买一个/多个产品”。

因此,关系是连接多个实体的一种方式。

  • 当客户购买产品时,有一个与之相关的时间戳,因此属性“时间”将是 ‘Buys’ 的属性。
  • 从集合和关系的概念可以很容易地理解所有数据库概念。
  • 根据集合论的观点,它将表示为

通过解释这个,我们可以理解,很多客户可以购买同类型的产品,很多产品可以被很多客户购买。并且有些产品不会被任何客户购买,有些客户不会购买任何产品。

根据 Relation/table 透视图或关系模型:
它可以表示为

由于客户和产品之间的关系是多对多(M:N),因此我们需要单独的表/关系用于“购买”。
在购买关系中,Cust_id 和 Prod_id 是客户和产品的外键。

映射基数/基数比:
映射基数是实体可以参与的最大关系实例数。
例子——

实体类型employee通过works_for关系与部门实体类型相关

在数学上,这里 (e1, e2,e3…) 是实体集 Employee 的实例,(d1,d2, d3 ….) 是实体类型部门的实例,(r1, r2,,r3 …..) 和 (r1, r2, r3 …) 是关系类型的关系实例。

R 中的每个实例 ri(其中 i = 1,2,3,….)是一个实体的关联,并且该关联恰好包含来自每个参与实体类型的一个实体。每个这样的关系实例,ri 表示参与 ri 的实体通过用户提供给设计者的任何约束/条件以某种方式相关。

  • 在works_for 二元关系类型Department 中:Employee 是基数(N:1),这意味着每个部门可以与任意数量的员工相关,但一个员工只能与(为其工作)一个部门相关。
  • 二元关系类型的可能基数比为 (1:1,1:N, N:1 ,N:M)。

参与或存在约束:
它表示每个实体可以参与的最小关系实例数,也称为最小基数约束。有两种类型的参与约束,它们是total 和 partial
例子 –

  • 在上面的例子中,如果公司的政策是每个员工都应该为一个部门工作。那么员工实体集中的所有员工都必须通过works_for关系与部门相关联。因此,员工实体类型的参与在关系类型中是总计的。总参与也称为存在依赖。
  • 并且如果有一个新部门不需要员工的约束,那么员工实体集中的某个实体与该部门实体之间没有works_for关系。因此,员工实体在此关系(works_for)中的参与是部分的。
  • 在 ER 图中,使用将参与实体类型连接到关系的双线表示总参与,并使用单线表示部分参与。

基数比和参与约束统称为关系类型的结构约束。
下面举例说明二元关系的所有可能基数比。

1. 一对一关系(1:1):
它使用箭头(⇢,⇠)表示(ER 图可以有多种可能的符号)。
例子 –

在这个 ER 图中,实体 customer 和驾驶执照都有一个箭头,这意味着实体 Customer 以一对一的方式参与关系“has a”。它可以理解为“每个客户只有一个驾照,每个驾照都与一个客户相关联”。
ER 图的集合论观点是

可能有些客户没有信用卡,但每张信用卡都只与一个客户相关联。因此,实体客户完全参与关系。

2.一对多关系(1:M):
例子 –

这种关系是一对多的关系,因为“有些员工管理多个团队,而只有一个经理管理一个团队”。
ER图的集合论观点是:

3. 多对一关系(M:1):
例子 –

它与一对多关系有关,但差异是由于透视。
任何数量的信用卡都可以属于一个客户,可能有一些客户没有任何信用卡,但系统中的每张信用卡都必须与一名员工相关联(即总参与)。而一张信用卡不能同时属于多个客户。
ER图的集合论观点是:

4. 多对多关系(M:N):
例子 –
一个客户可以购买任意数量的产品,一个产品可以被多个客户购买。

ER图的集合论观点是:

二元关系的四个基数中的任何一个都可以有双方部分、全部和一个部分和一个完全参与,这取决于用户要求指定的约束。