
1.5 概念模型
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
概念模型的表示方法很多,最著名、最常用的就是我们常说的实体—联系方法(Entity-Relationship),该方法运用E-R图来描述现实世界,E-R方法也称E-R模型。
1.5.1 实体-联系模型
实体模型是设计数据库的先导。用户需要先列出实际问题或者客户的要求,然后对实体及其联系进行模拟,建立一个正确的实体模型。
1. 实体
实体是客观存在并可相互区别的事物。实体是实实在在的客观存在,例如一本书、一个学生、一辆轿车等。实体本身不能被装进数据库,在数据库里出现的实体只能是实体的名称或标识符以及实体的一部分属性。
2. 属性
属性是实体所具有的某一特性,是实体的一些外在特征,例如一本书的作者、出版社、定价、出版日期、页码数,一个学生的姓名、学号、年龄、系别、出生年月等。属性的差异使我们把同一类实体的不同个体区分开来。
例如,“库存信息”实体可以由“产品ID”“产品编号”“产品名称”“单位”“单价”等属性组成。

根据系统的需求,每个属性都有它的数据类型和特性。特性是指定该属性在某些情况下是否必需的,属性有默认值以及属性的取值限制等。
3. 联系
在现实世界中,事物内部及事物间的联系在信息世界里反映为实体(集)内部及实体(集)间的联系。例如一名学生阅读一本书,其中“阅读”就是一名学生与一本书之间的联系。
例如,将【图书编号】与【借阅记录】相互联系起来。主要表现在该书是否已经被读者借阅,是否已经归还。

1.5.2 实体-联系方法
实体-联系模型(E-R模型)是P.P.Chen于1976年提出的。它直接从现实世界中抽象出实体类型及实体间的联系,然后,用E-R图表示数据结构,是一种用来在数据库设计过程中表示数据库系统结构的方法。
它的主导思想是使用实体(entity)、实体的属性(attribution)以及实体之间的关系(relationship)来表示数据库系统的结构。因此,在E-R图中的具体表示方法如下:
□ 实体型。用矩形表示,矩形框内标明实体名。
□ 属性。用椭圆形表示,并用无向边将其与实体连接起来。
□ 联系。用菱形表示,菱形框内标明联系名,并用无向边连接有关实体,同时在无向边旁标明联系类型。
下面用E-R图来完成图书借阅信息管理系统的概念模型设计。
首先,要设计图书借阅信息管理系统的数据库,并不是直接设计表,而是进行需求分析,从而得出该系统运作的数据流程图,但这部分内容不是本书的重点,这里不做详细阐述。下面介绍从设计局部E-R图开始进行概念模型设计。
在原有的数据流程图的基础上设计局部E-R图,并提取实体型。因此,可以将实体型归纳起来,大致有出版社、图书、读者、工作人员、规则等。
□ “出版社”实体型。在“出版社”实体型中,包含“出版社号”和“名称”等实体内容。其中“出版社号”为主键。

□ “读者”实体型。在“读者”实体型中,包含“姓名”“单位”“编号”等实体内容。其中“编号”为主键。

□ “图书”实体型。在“图书”实体型中,包含“书号”“书名”“作者”等实体内容。其中“书号”为主键。

□ “工作人员”实体型。在“工作人员”实体型中,包含“编号”“姓名”等实体内容。其中“编号”为主键。

□ “规则”实体型。在“规则”实体型中,包含“租金”“类别”“罚金”等实体内容。其中“类别”为主键。

其次,研究个实体型之间的联系,个实体之间的联系如下图所示。

其中“借阅”和“违反”两个联系又有各自的属性,其局部E-R图如下。


通过上述的实体形态设计好E-R图以后,再来研究各实体形态之间的联系。也可以参照用户自己设计的流程图来建立实体形态联系,并完善实体形态之间的关系类型。创建的各实体形态联系如下图所示。

根据上述规则,结合E-R图,可得出以下几个关系定义:
读者:{读者编号,单位,姓名}
出版社:{出版社号,出版社名称}
图书:{书号,书名,作者,单价,出版社}
规则:{类别,租金,罚金}
员工:{姓名,编号}
借阅:{借阅编号,书籍编号,读者编号,借书日期,应还日期,工作人员}
违规记录:{违规编号,读者编号,缴款日期,金额,缴款类别}
然后,结合前面讲过的范式理论进行数据关系优化,从而得出最终的表定义。
E-R模型是对现实世界的一种抽象,抽取了客观事物中人们所关心的信息,忽略了非本质的细节,并对这些信息进行了精确的描述。E-R图所表示的概念模型与具体的DBMS所支持的数据模型相互独立,是各种数据模型的共同基础,因而是抽象和描述现实世界的有力工具。
在完成了E-R图以后,就可以将E-R图转换为真正的数据表结构。在E-R图向数据表转换的过程中,首先需要将实体转换为一个独立的数据表,然后将实体的属性转换为数据表中的字段,最后根据实体之间的关系建立数据表。