三分钟搞懂
在数据库设计初期,借助E-R图可以帮你很好的理清当前业务中各实体的关系,一般E-R图出来了基本上Schema也就能定下来了,看过很多关于E-R图的范例,一般都会拿学生管理,图书管理什么的来讲解,一点儿都不生动,今天这篇我觉的没准能帮你重新认识E-R图这一利器。
Step 1: 背景介绍

上图是一个动物园之中,饲养员正在喂养几只美洲驼,也就是大家俗称的草泥马,基于这个场景,我们需要建立一份关于动物园中饲养动物的数据模型,下面会通过简单的几个步骤来说明这个过程。
Step 2: 引入第一个实体


在准备数据模型的时候,我们发现喂养这一动作(也称事件)是连接各方参与者的核心,所以我们首先为数据模型中添加一个Event的实体。
Step 3: 创建第一个关联
我们在羊驼和事件之间建立一条连线,来表明二者之间的联系。


Step 4: 引入饲养员
图中我们不仅能看到羊驼和喂养事件,我们还能看到饲养员,所以我们也应该在图中添加一个新实体饲养员,并在饲养事件与饲养员之间建立一条连线以表明二者关系。


Step 5: 引入食物实体
既然上面的事件叫做喂养,那么食物也应该是其中必不可少的实体,所以我们再向其中添加一个Food
的实体,并建立关联。


Step 6: Review our Data Model
有了上面的实体,现在我们重新审视我们的数据模型,发现在饲养事件中饲养员可能饲养的动物会不止一种,所以可以把正在被喂养的动物提出来独立成一个实体,其它任何动物都有可能担当被饲养这一角色,这样一来动物这一实体就被下放到下一层级了,如下图:

Step 7: Food in an Event
上一步我们抽象出了正在被喂养的动物这一实体,因为动物有不同属种的,所以会需要用不同的食物来喂养不同的动物。于是顺利成章,我们又抽象出正在投放的饲料这一实体。

Step 8: 建立完成E-R图
上面根据我们分析得到的图只是个概念图,概念图用来与客户和业务方沟通再好不过了,但真正到了实施这一步,工程师之间沟通最好的还是E-R图(实体-联系图),除了能体现出实体类型,以及它们几者之间的关系外,还能更详尽的表明每个实体都拥有哪些属性,搞清楚E-R图后,再下手建立Schema之类的就不会再犯嘀咕了。

本文是我在DatabaseAnswers网站上看到的一篇E-R图教程,做了一些简单的意译,习惯看原文的可以从文末取阅。相比国内那些以图书管理系统,学生管理系统为基础的范例而言这个应该是我见到的最简单生动的E-R图教程了,希望对你有帮助。




