
1.3 数据模型
数据模型是企业或信息系统中数据特征的抽象。从理论上讲,数据模型是指反映事物与事物之间联系的数据组织结构和形式。任何一个数据库管理系统都是基于某种数据模型的。根据模型应用的不同目的,可以将这些模型划分为两类,它们分属于两个不同的层次。第一类是概念模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。第二类是逻辑模型和物理模型,主要用于DBMS的实现。逻辑模型主要包括层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)、面向对象模型(Object Oriented Model)和对象关系模型(Object Relational Model)等。物理模型是对数据最底层的抽象,它描述数据在磁盘上的存储方式和存取方法。一般用户则不需考虑物理模型的细节。本节主要介绍逻辑模型。
1.3.1 基本组成
数据模型所描述的内容包括3个部分:数据结构、数据操作和数据约束。
(1)数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。
(2)数据操作:数据模型中的数据操作主要描述在相应数据结构上的操作类型和操作方式。数据库主要有检索和更新(包括插入、删除、修改)两大类操作。
(3)数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系及它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。
1.3.2 层次模型
层次模型用树形结构来表示实体与实体之间的联系。在这种模型中,记录类型为结点,由根结点、父结点和子结点构成。层次模型像一棵倒置的树,根结点在上,层次最高,子结点在下,逐层排列。其主要特征是:有且只有一个无双亲的根结点;根结点以外的子结点,向上仅有一个父结点,向下可以有若干个子结点。
层次模型表示的是一个父结点对应于多个子结点,而一个子结点只能对应于一个父结点的一对多的联系,它不能表示较复杂的数据结构,但却简单、直观、处理方便、算法规范,如图1.6所示。

图1.6 层次模型
1.3.3 网状模型
网状模型用网状结构表示实体与实体之间的联系。在这种模型中,记录类型为结点,由结点与结点之间的相互关联构成,网状模型是层次模型的扩展,表示多个从属关系的层次结构,呈现一种交叉关系的网络结构。其主要特征是:允许有一个以上的结点无双亲结点,至少有一个结点有多于一个的双亲结点。
网状模型在概念上和结构上都比较复杂,实现的算法也难以规范化,但这种数据模型可以表示较复杂的数据结构,如图1.7所示。

图1.7 网状模型
1.3.4 关系模型
关系模型是目前最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。20世纪80年代以来,计算机厂商新推出的数据库管理系统几乎都支持关系模型,非关系系统的产品也大都加上了关系接口。数据库领域当前的研究工作也都是以关系方法为基础,因此本书的重点也将放在关系数据库上。
关系模型是用二维表结构来表示实体与实体之间的联系的。在这种模型中,一个二维表就是一个关系,它是以关系数学理论为基础的,二维表不仅能够描述实体本身,而且还能反映实体之间的联系。其主要特征是:关系中每一数据项不可再分,是最基本的单位;每一竖列属性相同,列数根据需要而设,且各列的顺序是任意的;每一行由一个事物的诸多属性构成,行数根据需要而定,且各行的顺序是任意的。
关系模型(如表1.1所示)有很强的数据表达能力和坚实的数学理论,而且结构单一,数据操作方便,最易被用户接受,应用也最为广泛。
表1.1 关系模型

以关系模型建立的关系数据库是目前应用最为广泛的数据库,本书所要介绍的Access就是一种基于关系模型的数据库管理系统。
关系数据模型具有以下优点。
● 关系模型与非关系模型不同,它是建立在严格的数学概念基础上。
● 关系模型的概念单一。无论实体还是实体之间的联系都用关系表示。对数据的检索结果也是关系(即表)。所以其数据结构简单、清晰,用户易懂、易用。
● 关系模型的存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,简化了程序员的工作和数据库开发创建的工作。
关系数据模型诞生以后发展迅速,深受用户的喜爱。
1.3.5 面向对象模型
20世纪80年代以来,面向对象的方法和技术在计算机各个领域,包括程序设计语言、软件工程、信息系统设计、计算机硬件设计等方面都产生了深远的影响,也促进了数据库中面向对象数据模型的研究和发展。
在对象数据模型中,每个对象都有一个唯一不变的标识符,称为对象标识符,它独立于对象的实际值。对象在创建时系统就分配给它一个对象标识符,在对象的整个生命周期,对象标识符的值都不会变化。形式上,一个对象是一个形如(oid,val)的二元组,其中oid为对象标识符,val是一个值,val可以取简单值,也可以取复杂值。其中复杂值包括引用值、元组值、集合值。例如,描述Employer Joe的对象可能看起来如下:
(#00032, [ SSN: 111-22-3333, Name: Joe, PhoneN: { "13654327320","02085283546"}, Employee: {#00045, #00007} ] )
#00032表示描述Joe这个老板的数据对象的对象标识符,其余的部分是该对象的值。注意,Employee属性的值是表述Joe的员工对象的对象标识符集合。这里,Joe是一个简单值,#00045是一个引用值,#00032对象在方括号中的所有值是一个元组值,{"13 654 327 320","02 085 283 546"}是一个集合值。
1.3.6 对象关系模型
为了更安全地实现从传统关系数据库向对象数据库的转化,20世纪90年代出现了以对象关系模型为基础的数据库系统。对象关系模型与对象模型的主要区别在于:对于前者,每个对象实例的顶层结构总是元组,而对于后者,每个对象的顶层结构可以是任意类型的值。对象关系模型与传统关系模型的区别在于,在传统关系模型中元组只能取简单值,而在对象关系模型中元组可以为任意值。