
1.1.3 数据模型
模型是对现实世界特征的模拟和抽象。如一组建筑设计沙盘,一架精致的航模飞机等都是具体的模型。数据模型是模型的一种,它是现实世界数据特征的抽象。现实世界中的具体事务必须用数据模型这个工具来抽象和表示,计算机才能够处理。
1.概述
数据模型通常由数据结构、数据操作和数据约束三部分组成。数据结构是所研究的对象类型的集合。数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。数据约束是一组完整规则的集合。通过数据结构、数据操作和数据约束可以完整描述数据模型。
根据模型应用的层次不同,可以将这些模型划分为3类。
第1类模型是概念数据模型,又称概念模型或信息模型,它是按用户的观点来对数据和信息建模,是用户和数据库设计人员之间进行交流的工具,这一类模型中最著名的就是实体关系模型。实体关系模型直接从现实世界中抽象出实体类型以及实体之间的关系,然后用实体关系图(E-R图)表示数据模型。E-R图有下面四个基本成分。
(1)矩形框,表示实体类型(问题的对象);
(2)菱形框,表示关系类型(实体之间的联系);
(3)椭圆形框,表示实体类型的属性;
(4)连线。实体与属性之间,关系与属性之间用直线连接;关系类型与其涉及的实体类型之间也以直线相连,并在直线端部标注关系的类型(1:1、1:n或m:n)。
如图1.7所示是一个E-R图的示例。

图1.7 E-R图
第2类模型是逻辑数据模型,又称数据模型,它是一种面向数据库系统的模型,该模型着重于在数据库管理系统一级的实现。概念模型只有转化为数据模型后才能在数据库中得以实现。其主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模,主要用于DBMS的实现。
第3类模型是物理数据模型,又称物理模型,它是一种面向计算机物理表示的模型,此模型给出了数据模型在计算机上物理结构的表示。
数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型的。为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型,人们常常先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界。也就是说把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型,而是概念级的模型;然后再把概念模型转换为计算机上某一DBMS支持的数据模型,这一过程如图1.8所示。

图1.8 现实世界中客观对象的抽象过程
2.相关概念
建立数据模型需要掌握以下几个概念。
1)实体
客观存在,并可相互区别的事物称为实体(Entity)。实体可以是实实在在的客观存在,例如学生、教师、商店、医院;也可以是一些抽象的概念或地理名词,如地震、北京市。
2)属性
实体所具有的特征称为属性(Attribute)。实体本身并不能被装进数据库,要保存客观世界的信息,必须将描述事物外在特征的属性保存在数据库中。属性的差异能使我们区分同类实体,如一个人可以具备姓名、年龄、性别、身高、肤色、发型、衣着等属性,根据这些属性可以在熙熙攘攘的人群中一眼认出所熟悉的人。
3)实体集和实体型
具有共性的实体组成的一个集合称为实体集(Entity Set)。一个实体所有属性的集合称为实体型。例如,要管理学生信息,可以存储每一位学生的学号、姓名、性别、出生年月、出生地、家庭住址、各科成绩等,其中学号是人为添加的一个属性,用于区分两个或多个因巧合而属性完全相同的学生。在数据库理论中,这些学生属性的集合就是一个实体集,这些学生所具有的所有的属性就是一个实体型,在数据库应用中,实体集以数据表的形式呈现,实体型以字段名称的形式呈现。
4)联系客观事物往往不是孤立存在的,相关事物之间保持着各种形式的联系方式。在数据库理论中,实体(集)之间同样也保持着联系,这些联系同时也制约着实体属性的取值方式与范围。这种实体集之间的对应关系称为联系。
实体的联系方式通常有3种,一对多、多对多和一对一。
(1)一对多。“一对多”联系类型是关系型数据库系统中最基本的联系形式,例如“系”表与“教师”表这两个实体的联系方式就属于“一对多”关系,即一个系可以有多名教师,但一名教师只能属于一个系。
(2)多对多。“多对多”联系类型是客观世界中事物间联系的最普遍形式,例如在一个学期中,一名学生要学若干门课程,而一门课程要让若干名学生来修;一名顾客要逛若干家商店才能买到称心的商品,而一家商店必须有许多顾客光顾才得以维持等。上述的学生与课程之间、顾客与商店之间的关系均为“多对多”联系。
(3)一对一。“一对一”情况较为少见,它表示某实体集中的一个实体对应另一个实体集中的一个实体。例如为补充系的信息,添加一个“系办”表,表示每个系的系部办公室地点。从常识得知,一个系只有一个系部办公室,反之一个系部办公室只为一个系所有,这两个实体的联系方式就属于“一对一”关系。
3.常用模型
数据库领域常用的数据模型经常是按照数据的组织形式划分为,包括层次模型、网状模型、关系模型和面向对象模型4种。
1)层次模型
在层次模型中,实体间的关系形同一棵根在上的倒挂树,上一层实体与下一层实体间的联系形式为一对多。现实世界中的组织机构设置、行政区划关系等都是层次结构应用的实例。基于层次模型的数据库系统存在天生的缺陷,它访问过程复杂,软件设计的工作量较大,现已较少使用。
层次模型具有以下特点。
(1)有且仅有一个结点无父结点,它位于最高层次,称为根结点。
(2)根结点以外的其他结点有且仅有一个父结点,如图1.9所示。
2)网状模型
网状数据模型又称网络数据模型,它较容易实现普遍存在的“多对多”关系,数据存取方式要优于层次模型,但网状结构过于复杂,难以实现数据结构的独立,即数据结构的描述保存在程序中,改变结构就要改变程序,因此目前已不再是流行的数据模型。
网状模型具有以下特点。
(1)允许一个以上的结点无双亲结点。
(2)一个结点可以有多于一个双亲结点,如图1.10所示。

图1.9 层次模型

图1.10 网状模型
3)关系模型
关系模型是以二维表的形式表示实体和实体之间联系的数据模型,即关系模型数据库中的数据均以表格的形式存在,其中表完全是一个逻辑结构,用户和程序员不必了解一个表的物理细节和存储方式;表的结构由数据库管理系统(DBMS)自动管理,表结构的改变一般不涉及应用程序,在数据库技术中称为数据独立性。
关系模型具有以下特点。
(1)每一列中的值具有相同的数据类型。
(2)列的顺序可以是任意的。
(3)行的顺序可以是任意的。
(4)表中的值是不可分割的最小数据项。
(5)表中的任意两行不能完全相同。
基于关系数据模型的数据库系统称为关系数据库系统,所有的数据分散保存在若干个独立存储的表中,表与表之间通过公共属性实现“松散”的联系,当部分表的存储位置、数据内容发生变化时,表间的关系并不改变。这种联系方式可以将数据冗余(即数据的重复)降到最低。
4)面向对象模型
面向对象模型是一种新兴的数据模型,它采用面向对象的方法来设计数据库。面向对象模型的数据库存储对象是以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。Computer Associates的Jasmine就是面向对象模型的数据库系统。