|
|
|
在E-R模型中,联系用菱形表示,如上表所示。通常可在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:*或*:*)。实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。
|
|
|
|
|
|
两个实体之间的联系可分为3类:一对一联系记为1:1,一对多联系记为1:*(或1:n),多对多联系记为*:*(或m:n)。
|
|
|
|
(1)1:1。如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之对应,反之亦然,则称A与B具有一对一联系。
|
|
|
|
(2)1:*。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之对应,则称A与B具有一对多联系。
|
|
|
|
(3)*:*。如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之对应;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之对应,则称A与B具有多对多联系。
|
|
|
|
例如,下图表示两个不同实体集之间的联系,其含义如下:
|
|
|
|
|
|
|
|
上图(a)所示的E-R图表示:电影院里一个座位只能坐一个观众,因此观众与座位之间是一个1:1的联系,联系名为“V_S”。
|
|
|
|
上图(b)所示的E-R图表示:部门DEPT和职工EMP实体集,若一个职工只能属于一个部门,那么,这两个实体集之间应是一个1:*的联系,联系名为“D_E”。
|
|
|
|
上图(c)所示的E-R图表示:工程项目PROJ和职工EMP实体集,若一个职工可以参加多个项目,一个项目可以由多个职工参加,那么,这两个实体集之间应是一个*:*的联系,联系名为“PR_E”。
|
|
|
|
|
|
两个以上不同实体集之间存在1:1:1、1:1:*、1:*:*和*:*:*的联系。例如,下图表示了三个不同实体集之间的联系。
|
|
|
|
|
|
|
|
上图(a)表示供应商Supp、项目Proj和零件Part之间的多对多(*:*:*)的联系,联系名为“SP_P”。表示供应商为多个项目供应多种零件,每个项目可用多个供应商供应的零件,每种零件可由不同的供应商供应的语义。
|
|
|
|
上图(b)表示病房、病人和医生之间的一对多对多(1:*:*)的联系,联系名为“P_D”。表示一个特护病房有多个病人和多个医生,一个医生只负责一个病房,一个病人只属于一个病房的语义。
|
|
|
|
注意:三个实体集之间的多对多的联系和三个实体集两两之间的多对多的联系的语义是不同的。例如,供应商和项目实体集之间的“合同”联系,表示供应商为哪几个工程签了合同。供应商与零件两个实体集之间的“库存”联系,表示供应商库存零件的数量。项目与零件两个实体集之间的“组成”联系,表示一个项目有哪几种零件组成。
|
|
|
|
|
|
同一实体集内的各实体之间也存在1:1、1:*和*:*的联系,如下图所示。从图中可见,职工实体集中的领导与被领导联系是1:*的,如下图(a)所示。但是,职工实体集中的婚姻联系是1:1的,如下图(b)所示。
|
|
|
|
|
|
|