E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;
用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。
下图为一个E/R图
上图显示的关系都是2元关系,也可以有多元关系,下图为3元关系
多对多联系
用直线连接,如上上例所示,实体与实体之间有关系,连线都是直线,以likes为例,一个drinker可以喜欢很多的beer,一个beer也可以被很多的drinker喜欢。
多对一联系
用箭头连接,如下图的favorite,每个drinker最喜欢的beer最多只能有一种,即0或1,而每一种beer可以是很多的drinker最喜欢的。注意箭头的方向!!!
一对一联系
用圆箭头连接,如下图的best-seller,每个厂商有且只有一个销售最好的beer,而每个厂商有很多的beer,因此beer可能是best-seller,也可能不是。
角色
如上图,同样是drinker,但由于之间的关系为married,因此需要区分husband和wife。
子类
同面向对象的子类一样的意思。
如上图的Ales,是beers的一个字类,继承了bees的属性,同时多出了color这个属性。
弱实体集
如上图players,即为一个弱实体集,即players中的主键number无法唯一确定,还需要加上teams的主键name才能够唯一确定,简单说,以NBA为例,一个号码加上一个球队名才能够唯一确定一名球员。注意弱实体集与其关联的实体之间的关系形状(如上图的plays-on)。
弱实体集的主要应用场景是,假设将drinkers(name, addr)和favorite(drinker, beer)进行合并成drinker1(name, addr, favBeer),则如下图所示,addr重复了,即产生了冗余。
E/R图转换成关系
如上图右下角即为最终转换成的关系。
子类转换成关系
总共有三种方式(以下图为例):
1.面向对象(Object-oriented)
即将beers和ales看成两个单独的实体,同时子类继承了父类的所有属性。
2.E/R图风格(E/R style)
即子类只继承了父类的主键,同时子类的数据在父类中也有
3.用NULL值代替(Use nulls)
即将子类合并到父类中,而缺失的数据用NULL代替。