游戏开发工具

绘制E-R图:数据库概要设计阶段

在《数据库需求分析阶段详解》一节我们讲解了如何解决客户的业务和数据处理需求。需求分析阶段过后,就进入了概要设计阶段。

在概要设计阶段,我们需要和项目团队中的其他成员及客户进行沟通,讨论数据库的设计是否满足客户的业务和数据处理需求。

数据库设计和机械、建筑等行业一样,机械行业需要机械制图,建筑行业需要施工图,而数据库设计也需要图形化的表达方式——E-R图(Entity-Relationship),也可以称为实体-关系图

实体关系图构成要素

E-R图是设计数据库的工具之一,一般情况下,用于建立数据库的概念模型。实体、属性和关系是构成 E-R图的基本要素。

1. 实体

实体是指现实世界中客观存在并可以相互区分的对象或事物。就数据库而言,实体往往指某类事物的集合。可以是具体的人和事物,也可以是抽象的概念、联系。例如,酒店管理系统中的客房(如 1008 客房、1018 客房等)、客人(如张三、李四、王五)等。

实体一般是名词,对应表中的一行数据。例如,用户张三是一个实体,他对应于客人表中“张三”所在的一行数据,包括客人姓名、身份证号等信息。严格的说,实体用来指表中的一行特定数据。但在开发时,我们也常常把表称为一个实体。

2. 属性

属性可以理解为实体的特征。例如,”客人“这一实体的属性有入住日期、结账日期和交付的押金等。属性用来对应表中的列。

3. 关系

关系是两个或多个实体之间的关联关系。

关系可分为以下 4 种类型,例如对于实体 X 和 Y 之间的关系就必须为以下任意一种:

1)一对一

X 中的一个实体最多与 Y 中的一个实体关联,并且 Y 中的一个实体最多与 X 中的一个实体关联。

比如,每辆汽车同一时刻只能占用一个车位,同一时刻每个车位也只停放一辆汽车,那么,汽车实体与车位实体之间就是一对一的关系。一对一关系也可以表示为 1 : 1。

2)一对多

X 中的一个实体可以与 Y 中任意数量的实体关联,Y 中的一个实体最多与 X 中的一个实体关联。

比如,一间客房可以入住多位客人,但是一位客人只能入住一间客房,所以,客房实体和客人实体之间就是典型的一对多的关系。一对多关系也可以表示为 1 : N。

3)多对一

X 中的一个实体最多与 Y 中的一个实体关联,Y 中的一个实体可以与 X 中的任意数量的实体关联。

比如,客房实体和客人实体之间是典型的一对多关系,反过来说,客人实体和客房实体之间就是多对一的关系。

4)多对多

X 中的一个实体可以与 Y 中的任意数量的实体关联,反之亦然。

比如,图书馆的每本书可以借给多个读者,每个读者也可以借阅多本书,那么,图书实体和读者实体之间就是典型的多对多关系。再如,产品和订单之间也是多对多关系,每个订单中可以包含多个产品,一个产品也可以出现在多个订单中。多对多关系也可以表示为 M : N。

绘制实体关系图

E-R 图以图形的方式来表示数据库的整个逻辑结构,如下:

1、实体:用矩形表示

2、属性:用椭圆形表示

3、关系:用菱形表示

4、使用直线连接属性和实体,以及连接实体和关系

E-R(实体关系)图的绘制一般用软件辅助,画实体关系图常用的软件有:WORD、亿图图示、Visio 等,PPT 也可以绘制出美观的实体关系图。

下图为客人实体和客房实体之间的联系。

1.png


在 E-R图中,直线可以有方向(在末端有一个箭头)的来表示实体之间的关系。

下面演示如何绘制不同关系的 E-R 图。其中一些语言可能不符合实际情况,另外,为了方便大家观看,我们省略了实体中的属性,只留下了实体和关系。

1)一对一

2.png

上图表示为一位客人最多入住一间客房,一间客房最多被一位客人入住。

2)一对多

3.png

上图表示一位客人可以入住多间客房,一间客房最多被一位客人入住。

3)多对一

4.png

上图表示一位客人最多入住一间客房,一间客房可以被多位客人入住。

4)多对多

5.png

上图表示一位客人可以入住多间客房,一间客房也可以被多位客人入住。

为了画图更加方便,也可以用 1 代替箭头,用*代替直线。如多对一还可以如下:

6.png

绘制 E-R 图后,我们还需要反复与客户进行沟通,让客户提出修改意见,以确认系统中的数据处理需求是否正确完整。