1.2.4 逻辑数据模型
数据库中的数据必须能够反映事物之间的各种联系,而具有联系性的相关数据总是按照一定的组织关系排列,从而构成一定的结构,对这种结构的描述就是逻辑数据模型。逻辑数据模型是指反映客观事物及客观事物间联系的数据组织结构和形式。任何一个数据库管理系统都是按照某种逻辑数据模型建立和组织的。
数据库的逻辑数据模型又称数据库的结构数据模型,或直接简称数据模型(Data Model)。到目前为止,相继出现的数据模型主要有层次、网状、关系和面向对象四种。
1. 层次模型
层次模型表示数据间的从属关系结构,是一种以记录某一事物的类型为根结点的有向树结构。层次模型像一棵倒立的树,根结点在上,层次最高,子结点在下,逐层逐级排列。上级结点与下级结点之间为一对多的联系。图1.9给出了一个层次模型的例子,其中,“工业大学”为根结点,“工业大学”以下为各级子结点。
图1.9 层次模型
层次模型具有以下特征。
① 有且仅有一个根结点而且无双亲。
② 根结点以下的子结点,向上层仅有一个父结点,向下层有若干子结点。
③ 最下层为叶结点且无子结点。
支持层次模型的数据库管理系统称为层次数据库管理系统,其中的数据库称为层次数据库。
2. 网状模型
在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示这种关系很不直观,网状模型克服了这一弊病,可以清晰地表示这种非层次关系。
网状模型是用网状结构表示实体与实体之间联系的模型。网状模型是层次模型的扩展,它表示多个从属关系的层次结构,可以允许两个结点之间有多种联系。网状模型表现为一种交叉关系的网络结构。
网状模型具有以下特征。
① 有一个以上的结点无双亲。
② 至少有一个结点有多双亲。
网状模型可以表示较复杂的数据结构,它不但可以表示数据间的纵向关系,而且可以表示数据间的横向关系。
网状模型中每个结点表示一个记录(实体),每个记录可包含若干个字段(实体的属性),结点间的连线表示记录(实体)间的父子关系。
图1.10所示的是一个“学生”-“选课”-“课程”的网状模型,该模型中的每个学生可以选修多门课程,显然对于学生记录中的一个值,选课记录中可以有多个值与之联系,而选课记录中的一个值只能与学生记录的一个值相联系。
图1.10 网状模型
学生与选课之间的联系是一对多的联系,同样,课程与选课间的联系也是一对多的联系。
支持网状模型的数据库管理系统称为网状数据库管理系统,其中的数据库称为网状数据库。
3. 关系模型
用二维表结构来表示实体与实体之间联系的模型称为关系模型。它是由IBM的科德于1970年首次提出的。其特点是:理论基础完备、模型简单、说明性的查询语言和使用方便。
关系模型发展较晚,却是最常用、最重要的一种数据模型。
在关系模型中,操作的对象和结果都是二维表,这种二维表就是关系。关系模型的主要特征是用二维表表示实体集。例如,表1.2所示的“学生档案”就是一个关系。
表1.2 学生档案表
(1)二维表的特点
① 表有表名:即学生档案表。
② 表由两部分构成,即一个表头和若干行数据。
③ 从垂直方向看,表由若干列组成,每列都有列名,如“学号”“姓名”等。
④ 同一列的值取自同一个定义域,例如,“性别”的定义域是(男、女)。
⑤ 每一行的数据代表一个学生的信息,同样每一个学生在表中也有一行。
(2)对一张二维表可以进行的操作
① 填表:将每个同学的数据填写进表格。
② 修改:改正表中的错误数据。
③ 删除:去掉一个学生的数据(如某个同学已退学或出国等)。
④ 查询:在表中按某些条件查找满足条件的学生。
(3)关系的特点
关系是一种规范化了的二维表,为了使相应的数据操作简化,在关系模型中,对关系作了种种限制,关系具有如下特性。
① 关系中的每一数据项不可再分,是最基本的单位,满足此条件的关系称为规范化关系,否则称为非规范化关系。
② 每一竖列的数据项是同属性的,列数根据需要而设,且各列的顺序是任意的。
③ 每一横行记录由一个个体事物的诸多属性构成,记录的顺序可以是任意的。
④ 一个关系是一张二维表,不允许有相同的字段名,也不允许有相同的记录行。
关系模型对数据库的理论和实践产生了很大的影响,成为当今最流行的数据库模型。本书重点介绍的是关系数据库的基本概念和使用。
4. 面向对象模型
面向对象的数据模型(Object Oriented Model)吸收了面向对象程序设计方法的核心概念和基本思想,它用面向对象的观点来描述现实世界的实体。一系列面向对象的核心概念构成了面向对象数据模型的基础,其中主要包括对象和对象标识、属性和方法、封装和消息以及类和继承。
面向对象数据模型能完整地描述现实世界的数据结构,具有丰富的表达能力,但模型相对比较复杂,涉及的知识比较广,区别于传统数据模型的本质特征,因此,面向对象数据模型尚未达到关系数据模型的普及程度。