E-R图,中文名称叫实体-关系图,是数据库设计所使用的重要模型。
E-R图最早由Peter Chen提出,他现在是路易斯安那州立大学的教授,中文名叫陈品山,是出生于台湾的美国计算机科学家。这是他的照片:
他刚提出来E-R图的时候,使用矩形表示实体集,椭圆形表示属性,菱形表示关系。类似于这样:
这种表示方法叫做Chen方法(陈氏表示法)。有人常常把Chen方法当作E-R图的唯一的方法,我之前也以为是这样,实际上是不对的,这只是E-R图刚诞生时的画法,之后有各种各样的改进方法。这个方法存在的最大问题就是当一个实体存在很多属性的时候,就是产生非常多的椭圆,导致图片非常混乱,不清晰明了。在Chen方法的基础上,后人有做一些增补和改进,但这些改动没有改变属性用椭圆来表示这一最大的缺点,因此依然可以称之为Chen方法。
后来的一种比较有名的改进方法叫做Crow’s foot方法,示例如图:
这种方式将每个实体用一个上下分割的方框来表示,上半部分写实体名称,下半部分写实体属性,类似于UML类图的表示方法。同时用鸦爪符号表示“……对多”或“多对……”关系,这也是Crow’s foot(乌鸦脚)这个名字的由来。这种方法使得实体和关系的表示更加清晰明了。它的详细画法如下图所示:
对于E-R图的多种不同表示方法,在Abraham Silberschatz所著的数据库系统概念(第6版)这本书中有一张图做了一个集锦,如下(没找到电子版的,只能拍照了):
数据库系统概念(第6版)这本书中也提到,在本书第5版及以前的版本中,使用陈氏表示法来表示E-R图,但随着UML使用的增多,第6版采用了更接近于UML类图的形式。此外它还提到了美国国家标准和技术研究院还定义过一个叫IDEF1X的标准,也使用鸦爪形符号,但本书没有对IDEF1X做具体展开。关于IDEF1X的内容,推荐大家观看哈尔滨工业大学战德臣老师讲授的数据库原理在线课程,在中国大学mooc和B站上都有,这门课程对IDEF1X做了具体讲授。