‘实体关系模型’(Entity-Relation (E-R) Model)是将现场实境以图形化显现出来的工具。数据库设计者到客户现场将访谈或自己所认识的情境以 E-R 图绘制出来,再利用它和客户之间沟通。所绘制出来的图形会随时改变,一直到双方都认可才可以继续往下设计数据库,也就是说,这个阶段会耗费最多的时间。从另一方面来讲,我们将现场情境用图形绘出来,此图形需要大家都看得懂,因此,需要一个标准化图示来表示,这就是标准化的 E-R Mode。首先,我们来看标准化的 E-R 图的符号,如下:

表示该实体是依附别的实体而存在,譬如:监护人是依附学生个体而存在。

用来描述实体的现象,譬如学生实体的学号、姓名、、等等。

用来描述属性再细分其它小属性,譬如:姓名属性再区分为姓与名。

用来辨识在实体集合中唯一性的属性。譬如:学号是学生实体中唯一性的辨识。

用来表示实体之间连系的管道(关系),譬如:学生与班别之间的联系是班别代码。

在真实环境里,无论有形或无形的个体,都称为实体。每一个实体是由若干个属性来描述它的特质。图 9-4 是表示学生的个体,它是由学号、姓名、性别、地址、电话与电子邮件等属性来描述。为了达成每一笔记录代表一个学生,学生之间不可重复,我们发现仅有‘学号’满足条件(1. 不可重复性、2. 最小性),因此我们选择它为主键。

同学开始设计时,不要太在乎需要哪些属性来描述,只要能连结起来就好,到底要哪些属性需视系统需求而定。

如果某些属性可再细分其它小属性的话,称之衍生属性,如图 9-5 所示,我们再将姓名区分为‘姓’与‘名’两属性。

个体之间需建立关系才可以由一个个体找到另一个个体,如果有一个个体它无法和其它个体建立关系,则他就没有存在的价值。实体之间关系有‘一对多,1:M’、‘多对一,M:1’、‘一对一,1:1’与‘多对多,M:N’等四种,前面两种几乎一样,只不过将它倒过来显示。

图 9-6 表示学生个体与班级个体之间的关系,表示学生是属于哪一个班级的,因此,它们之间是属于‘隶属’关系。首先,我们看班级个体,它是由班级名称、系别名称、入学年度等属性描述,其中班级名称好像拥有唯一性的特质,但我们考虑到他每年都会修改,譬如:今年是‘进四资二丙’,明年可能是‘进四资三丙’,因此它也不适合当主键。我们只好再增加‘班级代码’属性,确定它不会变更,选定为‘主键’。

既然,学生要与班级建立隶属关系,只好在学生个体中增加‘班级代码’属性,用来表示他是哪一个班级的学生,也称之为‘外来键’。一个班级可能拥有若干个学生,因此,班级与学生之间的关系是‘多对一,M:1’,我们在图示表示哪一个是多(M)、哪一个是一(1)。

图 9-7是多对多的范例,系统设计学生同时可以修读多门课,每一门课也可以让多位学生选读。另外,关系也可以附加属性,譬如图(七)中,选课关系增加‘分数’的属性,其用来记录学生修读的分数。

我们用学生与监护人之间关系来说明一对一关系,假设每一位学生只有一位监护人,每一位监护人也仅隶属一位学生,如图 9-8所示。