E-R图
- 矩形表示为实体集Entity Sets
- 菱形表示为关系集Relationship Sets
- 连接线将实体集连接到关系集
- 椭圆Ellipse表示属性Attributes
关系集
成员
基数约束 Cardinality Constraints
使用有指向的箭头表示“一”,使用无指向的线表示“多”,则关系和实体集之间可以有这些:
一对一关系
一个顾客通过借贷关系最多与一个贷款相关联,同时一个贷款也至多与一个顾客相关联
一对多关系
这里一份贷款最多能与一个顾客相关联,但是一个顾客能够有多份贷款
多对多关系
- 一份贷款与多个顾客相关联
- 一个顾客有多份贷款
实体集与关系集中的参与度 Participation
全部参与 Total Participation
实体集中的每一个实体都参与到关系集R的至少一个关系中,则实体集E在关系集R中的参与称为全部的Total
在上面的例子中贷款实体在借贷关系中的参与是全部的,因为每一个贷款都必定有一个顾客实体与之关联
部分参与 Partial Participation
实体集中只有部分实体参与到了R的联系中,则实体集E到关系集R的参与称为部分的Partial
上面的例子中,顾客实体在贷款关系中的参与是部分的,因为并不是所有顾客都有一份贷款
关系集的度 Degree
参与关系集的实体集的数目称为关系集的度
关系集的实体集的参与数目大于2的情况是很少的,绝大多数度都为2,即Binary,度为3时称为Ternary
三元关系ER图举例
三元关系中的约束
- 在三元或度更高的关系集中,至多允许一个有指向的箭头来表示基数约束
若需要有更多的单项箭头,则有两种办法,假设ABC三个实体间存在关系R,有指向B和C的箭头
- 每个A在B和C之间与一个单独的实体相关联
- 每对实体(A,B)都与一个独立的实体C相关联,(A,C)与单独的实体B相关联
非二元关系集转化为二元关系
一般,任何的非二元关系都可以表示成二元关系的形式,假设ABC三个实体以关系R连接:
使用新的实体E代替关系R的位置,并在E和ABC之间设置关系Ra,Rb,Rc。若实体R有属性,则将这些属性赋值给实体E;并为E创建一个特殊的标志属性special identifying,通过这些属性来区分实体集中的各个实体,针对关系集R中的每个联系ai,bi,ci,在实体集E中创建新的实体ei并在三个新的关系集中插入新的联系:Ra中插入(ei,ai),在Rb中插入(ei,bi),在Rc中插入(ei,ci)
弱实体集 Weak Entity
没有主键的实体集称为弱实体集,其存在取决于标识实体集Identifying Entity Set的存在,必须通过一个全部参与,一对多,的关系来与弱实体集相关联,这个标识关系使用双线菱形在ER图中表示。
- 弱实体集使用双线矩形来表示
- 使用虚线dashed下划线underline来标识处弱实体中的标识键discriminator
ER设计决策
- 实体集中的属性如何用来标识一个对象
- 使用实体集还是关系集来标识真实世界中存在的概念
- 三元关系与二元关系的使用
- 强实体与弱实体的使用