三、层次模型

层次模型是数据库系统中最早出现的数据模型,层次数据库管理系统采用层次模型作为数据的组织方式,其典型代表是IBM公司的IMS(information management system,IMS)数据库管理系统。现实世界中,许多实体之间的联系都表现出一种很自然的层次关系,如家族关系、行政机构等。

1.层次模型的数据结构

层次模型采用树形结构来表示各类实体以及实体之间的联系。在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型。

(1)有且只有一个结点没有双亲,该结点称为根结点。

(2)根以外的其他结点有且只有一个双亲结点。

在层次模型中,同一双亲的子女节点互称兄弟节点(twin/sibling),没有子女节点的节点称为叶节点。图1-12是一个层次模型的示例,其中R1是根节点,R2R3R1的子女节点,R2R3互为兄弟节点;R4R5R2的子女节点,R4R5互为兄弟节点;R3R4R5是叶节点。

img

图1-12 层次模型

层次模型有两个基本特征。

(1)层次模型只能直接处理一对多的实体关系。

(2)任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。

图1-13是一个医生病人层次模型。该层次模型有4个记录型。医院记录是根结点,由医院编号、医院名称、地址3个字段构成。医院记录有两个子女结点,科室记录和病人记录,科室记录由科室编号、科室名称、科室地点3个字段构成,病人记录由病人ID、姓名、职业3个字段构成,科室记录和病人记录互为兄弟结点。医生记录由医生ID、姓名、职称3个字段构成,是科室记录的子女结点。病人记录和医生记录都是叶结点。医院到科室、医院到病人、科室到医生均是一对多的联系。

img

图1-13 医生病人层次数据模型

2.层次模型的优缺点

层次模型的主要优点。

(1)数据结构简单清晰。

(2)层次数据库的查询效率高。

(3)提供了良好的数据完整性支持。

层次模型的主要缺点。

(1)不能直接表示实体型间的多对多联系,只能通过引人冗余数据或创建虚拟结点的方法来解决,易产生不一致性。

(2)对数据的插人和删除的操作限制太多。

(3)查询子女结点必须通过双亲结点。