
1.4 数据模型
数据库是现实世界中某种应用环境(一个单位或部门)所涉及的数据的集合,它不仅要反映数据本身的内容,而且要反映数据之间的联系。由于计算机不能直接处理现实世界中的具体事物,所以必须将这些具体事物转换成计算机能够处理的数据。在数据库技术中,用数据模型(Data Model)来对现实世界中的数据进行抽象和表示。
1.4.1 数据的抽象过程
从现实世界中的客观事物到数据库中存储的数据是一个逐步抽象的过程,这个过程经历了现实世界、观念世界和机器世界3个阶段,对应于数据抽象的不同阶段,采用不同的数据模型。首先将现实世界的事物及其联系抽象成观念世界的概念模型,然后转换成机器世界的数据模型。概念模型并不依赖于具体的计算机系统,它不是数据库管理系统所支持的数据模型,它是现实世界中客观事物的抽象表示。概念模型经过转换成为计算机上某一数据库管理系统支持的数据模型。所以说,数据模型是对现实世界进行抽象和转换的结果,数据的抽象过程如图1-3所示。

图1-3 数据的抽象过程
1. 对现实世界的抽象
现实世界就是客观存在的世界,其中存在着各种客观事物及其相互之间的联系,而且每个事物都有自己的特征或性质。计算机处理的对象是现实世界中的客观事物,在对其实施处理的过程中,首先应了解和熟悉现实世界,从对现实世界的调查和观察中抽象出大量描述客观事物的事实,再对这些事实进行整理、分类和规范,进而将规范化的事实数据化,最终实现由数据库系统存储和处理。
2. 观念世界中的概念模型
观念世界是对现实世界的一种抽象,通过对客观事物及其联系的抽象描述,构造出概念模型。概念模型的特征是按用户需求对数据进行建模,表达了数据的全局逻辑结构,是系统用户对整个应用项目涉及的数据的全面描述。概念模型主要用于数据库设计,它独立于实现时的数据库管理系统。也就是说,无论选择何种数据库管理系统,都不会影响概念模型的设计。
概念模型的表示方法有很多,目前较常用的是实体联系模型(Entity Relationship Model,E-R模型)。E-R模型主要用E-R图来表示。
3. 机器世界中的逻辑模型和物理模型
机器世界是指现实世界在计算机中的体现与反映。现实世界中的客观事物及其联系,在机器世界中以逻辑模型来描述。在选定数据库管理系统后,就要将E-R图表示的概念模型转换为具体的数据库管理系统支持的逻辑模型。逻辑模型的特征是按计算机实现的观点对数据进行建模,表达了数据库的全局逻辑结构,是设计人员对整个应用项目数据库的全面描述。逻辑模型服务于数据库管理系统的应用实现。通常,我们把数据的逻辑模型直接称为数据模型。数据库系统中主要的逻辑模型有层次模型、网状模型和关系模型。
物理模型是对数据最底层的抽象,用以描述数据在物理存储介质上的组织结构,与具体的数据库管理系统、操作系统和硬件有关。
从概念模型到逻辑模型的转换是由数据库设计人员完成的,从逻辑模型到物理模型的转换是由数据库管理系统完成的,一般人员不必考虑物理实现细节,因而逻辑模型是数据库系统的基础,也是应用过程中要考虑的核心问题。
1.4.2 概念模型
当分析某种应用环境所需的数据时,总是首先找出涉及的实体及实体之间的联系,进而得到概念模型,这是数据库设计的先导。
1. 实体与实体集
实体(Entity)是现实世界中任何可以相互区分和识别的事物,它可以是能触及的客观对象,如一位教师、一名学生、一种商品等,也可以是抽象的事件,如一场足球比赛、一次借书等。
性质相同的同类实体的集合称为实体集(Entity Set)。例如,一个学院的所有教师,2010南非世界杯足球赛的全部64场比赛等。
2. 属性
每个实体都具有一定的特征或性质,这样才能区分一个个实体。例如,教师的编号、姓名、性别、职称等都是教师实体具有的特征,足球赛的比赛时间、地点、参赛队、比分、裁判姓名等都是足球赛实体的特征。实体的特征称为属性(Attribute),一个实体可用若干属性来描述。
能唯一标识实体属性或属性集的称为实体标识符。例如,教师的编号可以作为教师实体的标识符。
3. 类型与值
属性和实体都有类型(Type)和值(Value)之分。属性类型就是属性名及其取值类型,属性值就是属性所取的具体值。例如,教师实体中的“姓名”属性,属性名“姓名”和取字符类型的值是属性类型,而“赵琳琳”“刘穆奋”等是属性值。每个属性都有特定的取值范围,即值域(Domain),超出值域的属性值则认为无实际意义。例如,“性别”属性的值域为男、女,“职称”属性的值域为助教、讲师、副教授、教授等。由此可见,属性类型是个变量,属性值是变量所取的值,而值域是变量的取值范围。
实体类型就是实体的结构描述,通常是实体名和属性名的集合。具有相同属性的实体,有相同的实体类型。实体值是一个具体的实体,是属性值的集合。例如,教师实体类型是:
教师(编号,姓名,性别,出生日期,职称,基本工资,研究方向)
教师“刘穆奋”的实体值是:
(T6,刘穆奋,男,09/21/65,教授,3500,数据库技术)
由上可见,属性值所组成的集合表征一个实体,相应的这些属性名的集合表征一个实体类型,同类型实体的集合称为实体集。
在Access中,用“表”来表示同一类实体,即实体集;用“记录”来表示一个具体的实体;用“字段”来表示实体的属性。显然,字段的集合组成一条记录,记录的集合组成一个表,实体类型则代表了表的结构。
4. 实体间的联系
实体之间的对应关系称为联系(Relationship),它反映了现实世界事物之间的相互关联。例如,图书和出版社之间的关联关系为:一个出版社可以出版多种图书,同一种图书可以在多个出版社出版。
实体间的联系是指一个实体集中可能出现的每一个实体与另一实体集中多少个具体实体存在联系。实体之间有各种各样的联系,归纳起来有3种类型。
(1)一对一联系
如果对于实体集A中的每一个实体,实体集B中至多只有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1∶1。例如,一个工厂只有一个厂长,一个厂长只在一个工厂任职,厂长与工厂之间的联系就是一对一联系,如图1-4所示。

图1-4 一对一联系
(2)一对多联系
如果对于实体集A中的每一个实体,实体集B中可以有多个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1∶n。例如,一个公司有许多职员,但一个职员只能在一个公司就职,所以公司和职员之间的联系是一对多联系,如图1-5所示。

图1-5 一对多联系
(3)多对多联系
如果对于实体集A中的每一个实体,实体集B中可以有多个实体与之联系,而对于实体集B中的每一个实体,实体集A中也可以有多个实体与之联系,则称实体集A与实体集B之间有多对多联系,记为m∶n。例如,一个读者可以借阅多种图书,任何一种图书可以被多个读者借阅,所以读者和图书之间的联系是多对多联系,如图1-6所示。

图1-6 多对多联系
5. E-R图
概念模型是反映实体及实体之间联系的模型。在建立概念模型时,要逐一给实体命名以示区别,并描述它们之间的各种联系。E-R图是用一种直观的图形方式建立现实世界中实体及其联系模型的工具,它是数据库设计的一种基本工具。
E-R图用矩形框表示现实世界中的实体,用菱形框表示实体间的联系,用椭圆形框表示实体和联系的属性,实体名、属性名和联系名分别写在相应框内。对于作为实体标识符的属性,在属性名下画一条横线。实体与相应的属性之间、联系与相应的属性之间用线段连接。联系与其涉及的实体之间也用线段连接,同时在线段旁标注联系的类型(1∶1、1∶n或m∶n)。
图1-7用来表示读者实体和图书实体的多对多联系模型,其中,“借书证号”属性作为读者实体的标识符(不同读者的借书证号不同),“书号”属性作为图书实体的标识符。联系也可以有自己的属性,如读者实体和图书实体之间的“借阅”联系可以有“借阅日期”属性。

图1-7 读者实体和图书实体的E-R图
1.4.3 逻辑模型
E-R模型只能说明实体间语义的联系,还不能进一步说明详细的数据结构。在进行数据库设计时,总是先设计E-R模型,然后再把E-R模型转换成计算机能实现的逻辑数据模型,如关系模型。逻辑模型不同,其描述和实现的方法也不同,相应的支持软件即数据库管理系统也不相同。在数据库系统中,常用的逻辑模型有层次模型、网状模型和关系模型3种。
1. 层次模型
层次模型(Hierarchical Model)用树形结构来表示实体及其之间的联系。在这种模型中,数据被组织成由“根”开始的“树”,每个实体由“根”开始沿着不同的分支放在不同的层次上。“树”中的每一个节点代表一个实体类型,连线则表示它们之间的联系。根据树形结构的特点,建立数据的层次模型需要满足如下两个条件。
① 有一个节点没有父节点,这个节点即根节点。
② 其他节点有且仅有一个父节点。
如图1-8所示的层次模型就像一颗倒置的树,根结点在最上面,其他结点在下,逐层排列。事实上,许多实体间的联系本身就是自然的层次关系,如一个单位的行政机构、一个家庭的世代关系等。

图1-8 层次模型示意图
层次模型的特点是各实体之间的联系通过指针来实现,查询效率较高。但由于受到如上所述的两个条件的限制,层次模型可以方便地表示出一对一和一对多的实体联系,但不能直接表示出多对多的实体联系。对于多对多联系,必须先将其分解为几个一对多联系,才能将其表示出来。因而,对于复杂的数据关系,实现起来较为麻烦,这就是层次模型的局限性。
采用层次模型来设计的数据库称为层次数据库。层次模型的数据库管理系统是最早出现的,它的典型代表是IBM公司在1968年推出的IMS(Information Management System)系统,这是世界上最早出现的大型数据库管理系统。
2. 网状模型
网状模型(Network Model)是用实体类型为节点的有向图来表示各实体及其之间的联系。其特点如下。
① 可以有一个以上的节点无父节点。
② 至少有一个节点有多于一个的父节点。
在网状模型中,子结点与父结点的联系可以不唯一,因此要为每个联系命名,并指出与该联系有关的父结点和子结点。在图1-9中,E3有E1、E2两个父结点,把E1和E3之间的联系命名为R1,E2和E3之间的联系命名为R2。

图1-9 网状模型示意图
网状模型比层次模型复杂,它可以直接用来表示多对多联系。然而由于技术上的困难,一些已实现的网状数据库管理系统(如Database Task Group系统)中仍然只允许处理一对多联系。
网状模型的特点是各实体之间的联系通过指针实现,查询效率高,多对多联系也容易实现。但是当实体集和实体集中实体的数目较多时,众多的指针使管理工作变得复杂,对用户来说使用起来也比较麻烦。
3. 关系模型
与层次模型和网状模型相比,关系模型(Relational Model)有着本质的差别,它用二维表格来表示实体及其相互之间的联系。在关系模型中,把实体集看成一个二维表,每一个二维表称为一个关系。每个关系均有一个名字,称为关系名。
关系模型是由若干个关系模式(Relational Schema)组成的集合,关系模式就相当于前面提到的实体类型,它的实例称为关系(Relation)。对于教师关系模式—教师(编号,姓名,性别,出生日期,职称,基本工资,研究方向),其关系实例如表1-1所示。
表1-1 教师关系模式

一个关系就是没有重复行和重复列的二维表,二维表的每一行在关系中称为元组,每一列在关系中称为属性。教师关系的每一行代表一个教师的记录,每一列代表教师记录的一个字段。
虽然关系模型比层次模型和网状模型发展得晚,但它的数据结构简单、容易理解,而且它建立在严格的数学理论基础上,所以是目前比较流行的一种数据模型。自20世纪80年代以来,新推出的数据库管理系统几乎都支持关系模型。本书讨论的Access 2010就是一种关系数据库管理系统。