6.2.4 基本的数据模型

2025-06-07 22:34:06 更新

1. 层次模型(Hierarchical Model)

层次模型采用树型结构表示数据与数据间的联系。在层次模型中,每个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根结点以外的其他结点有且仅有一个双亲结点。上层和下一层类型的联系是1 : ”联系(包括1 : 1联系)。

层次模型不能直接表示多对多的联系。若要表示多对多的联系,可采用冗余节点法或虚拟节点分解法•层次模型的优点是记录之间的联系通过指针实现,比较简单,查询效率高。层次模型的缺点是只能表示1 : n的联系,尽管有许多辅助手段实现刀m:n的联系,但较复杂不易掌握;由于层次顺序严格和复杂,插入删除操作的限制比较多,导致应用程序编制比较复杂。 1968年,美国IBM公司推出的IMS系统(信息管理系统)是典型的层次模型系统,20世纪70年代在商业上得到了广泛的应用。

2. 网状模型(Network Model)

采用网络结构表示数据与数据间联系的数据模型称为网状模型(Network Model).在网状模型中,允许一个以上的节点无双亲,一个节点可以有多于一个的双亲。

网状模型(也称DBTG模型)是一个比层次模型更具有普遍性的数据结构,是层次模型的一个特例。网状模型可以直接地描述现实世界,因为去掉了层次模型的两个限制,允许两个节点之间有多种联系(称之为复合联系).需要说明的是,网状模型不能表示记录之间的多对多联系,需要引入联结记录来表示多对多联系。

网状模型中的每个节点表示一个记录类型(实体),每个记录类型可以包含若干个字段(实体的属性),节点间的连线表示记录类型之间一对多的联系。层次模型和网状模型的主要区别如下:

(1) 网状模型中子女节点与双亲节点的联系不唯一,因此需要为每个联系命名。

(2) 网状模型允许复合链,即两个节点之间有两种以上的联系.

通常,网状数据模型没有层次模型那样严格的完整性约束条件,但DBTG在模式DDL中提供了定义DBTG数据库完整性的若干概念和语句,主要有:

(1) 支持记录码的概念。码能唯一标识记录的数据项的集合。

(2) 保证一个联系中双亲记录和子女记录之间是一对多联系。

(3) 以支持双亲记录和子女记录之间的某些约束条件。例如,当插入一条选课记录

“1014, C2, 98”时,只有学生实体中存在学号为“1014”的学生记录,课程实体存在课程号

为“C2”的课程,系统才认为是合法的操作。

网状模型的主要优点是能更为直接地描述现实世界,具有良好的性能,存取效率高。其主要缺点是结构复杂。例如,当应用环境不断扩大时,数据库结构就变得很复杂,不利于最终用

户掌握。编制应用程序难度比较大。DBTG模型的DDL、DML语言复杂,记录之间的联系是

通过存取路径来实现的,因此程序员必须了解系统结构的细节,增加了编写应用程序的负担。

3. 关系模型(RelationalModel)

关系模型(Relation Model)是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。关系模型是由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。给定变量的值随时间可能发生变化,类地,当关系被更新时,关系实例的内容也随时间发生了变化。

由于关系模型比网状、层次模型更为简单灵活,因此,数据处理领域中,关系数据库的使用已相当普遍。但是,现实世界存在着许多含有更复杂数据结构的实际应用领域,例如CAD数据、图形数据和人工智能研究等,需要有一种数据模型来表达这类信息,这种数据模型就是面向对象的数据模型。

4. 面向对象数据模型(Object Oriented Model)

面向对象数据模型(Object Oriented Model)的核心概念如下:

(1)对象和对象标识(OID)。对象是现实世界中实体的模型化,与记录、元组的概念相似,但远比它们复杂,每一个对象都有一个唯一的标识,称为对象标识。对象标识不等于关系模式中的记录标识,OID是独立于值的,全系统唯一的。

(2)封装(encapsulate)。每一个对象是状态(state)和行为(behavior)的封装。对象的状态是该对象属性的集合,对象的行为是在该对象状态上操作的方法(程序代码)的集合。被封装的状态和行为在对象外部是看不见的,只能通过显式定义的消息传递来访问。

(3)对象的属性(object attribute)。对象的属性描述对象的状态、组成和特性,对象的某个属性可以是单值或值的集合。对象的一个属性值本身在该属性看来也是一个对象。

(4)类和类层次(class and class hierarchy)。

①类。所有具有相同属性和方法集的对象构成了一个对象类。任何一个对象都是某个对象类的一个实例(instance)。对象类中属性的定义域可以是任何类,包括基本类,如整型、实型和字串等;一般类,包含自身属性和方法类本身。

②类层次。所有的类组成了一个有根有向无环图,称为类层次(结构)o 一个类可以从直接/间接祖先(超类)中继承(inherit)所有的属性和方法,该类称为子类。

(5)继承〈inherit)。子类可以从其超类中继承所有属性和方法。类继承可分为单继承(即一个类只能有一个超类)和多重继承(即一个类可以有多个超类)。

面向对象数据模型比网络、层次、关系数据模型具有更加丰富的表达能力。由于面向对象模型的丰富表达能力,模型相对复杂,有关面向对象分析及设计方面的内容可参考第10章。