E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;

用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。

下图为一个E/R图

er图详解 mysql sqlyog er图_sql

上图显示的关系都是2元关系,也可以有多元关系,下图为3元关系

er图详解 mysql sqlyog er图_父类_02

多对多联系

用直线连接,如上上例所示,实体与实体之间有关系,连线都是直线,以likes为例,一个drinker可以喜欢很多的beer,一个beer也可以被很多的drinker喜欢。

多对一联系

用箭头连接,如下图的favorite,每个drinker最喜欢的beer最多只能有一种,即0或1,而每一种beer可以是很多的drinker最喜欢的。注意箭头的方向!!!

er图详解 mysql sqlyog er图_数据库_03

一对一联系

用圆箭头连接,如下图的best-seller,每个厂商有且只有一个销售最好的beer,而每个厂商有很多的beer,因此beer可能是best-seller,也可能不是。

er图详解 mysql sqlyog er图_父类_04

角色

er图详解 mysql sqlyog er图_子类_05

如上图,同样是drinker,但由于之间的关系为married,因此需要区分husband和wife。

子类

同面向对象的子类一样的意思。

er图详解 mysql sqlyog er图_er图详解 mysql_06

如上图的Ales,是beers的一个字类,继承了bees的属性,同时多出了color这个属性。

弱实体集

er图详解 mysql sqlyog er图_er图详解 mysql_07

如上图players,即为一个弱实体集,即players中的主键number无法唯一确定,还需要加上teams的主键name才能够唯一确定,简单说,以NBA为例,一个号码加上一个球队名才能够唯一确定一名球员。注意弱实体集与其关联的实体之间的关系形状(如上图的plays-on)。

弱实体集的主要应用场景是,假设将drinkers(name, addr)和favorite(drinker, beer)进行合并成drinker1(name, addr, favBeer),则如下图所示,addr重复了,即产生了冗余。

er图详解 mysql sqlyog er图_子类_08

E/R图转换成关系

er图详解 mysql sqlyog er图_er图详解 mysql_09

如上图右下角即为最终转换成的关系。

子类转换成关系

总共有三种方式(以下图为例):

er图详解 mysql sqlyog er图_父类_10

1.面向对象(Object-oriented)

er图详解 mysql sqlyog er图_sql_11

即将beers和ales看成两个单独的实体,同时子类继承了父类的所有属性。

2.E/R图风格(E/R style)

er图详解 mysql sqlyog er图_sql_12

即子类只继承了父类的主键,同时子类的数据在父类中也有

3.用NULL值代替(Use nulls)

er图详解 mysql sqlyog er图_er图详解 mysql_13

即将子类合并到父类中,而缺失的数据用NULL代替。