层次模型
层次模型是数据库系统中最早出现的数据模型,层次模型系统采用层次模型作为数据的组织形式。层次数据库系统的典型代表IMS是IBM公司1968年推出的第一个大型商用数据库管理系统。层次模型用树形结构来表示各类实体以及实体间的联系。
层次模型的数据结构
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型。
- 有且只有一个节点没有双亲结点,这个节点称为根节点;
- 根以外的其他节点有且只有一个双亲节点。
在层次模型中,**每一个节点表示一个记录类型,记录类型之间的联系用节点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系。**这就使得层次数据库系统只能处理一对多的实体联系。
每个记录类型可包含若干个字段,这里记录类型描述的是实体,字段描述实体的属性。各个记录类型及其字段都必须命名。各个记录类型、同一记录类型中各个字段不能同名。每个记录类型可以定义一个排序字段,也称为码字段,如果定义该排序字段的值是唯一的,则它就能唯一地标识一个记录值。一个层次模型在理论上可以包含任意有限个记录类型和字段,但任何实际的系统都会因为存储容量或者实现复杂度而限制层次模型中包含的记录类型数和字段的个数。
从上图可以看出层次模型像一颗倒立的树,结点的双亲是唯一的。层次模型的一个基本的特点是,任何一个给定的记录值只能按其层次路径查看,没有一个子女记录值能够脱离双亲记录值而独立存在。
层次模型的数据操纵与完整性约束
层次模型的数据操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件。在进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女节点值。在进行删除操作的时候,如果删除双亲结点值,则相应的子女节点值也将被同时删除。
层次模型的优缺点
层次模型的优点主要有:
- 层次模型的数据结构比较简单清晰;
- 层次数据库的查询效率高。因为层次模型中记录之间的联系用有向边表示,这种联系在DBMS中常用指针来实现。因此这种联系也就是记录之间的存取路径。
- 层次数据模型提供了良好的完整性支持。
层次模型的缺点主要有:
- 现实世界中很多联系是非层次性的,如节点之间具有多对多的联系,不适合用层次模型表示。
- 如果一个节点具有多个双亲结点等,用层次模型表示这类联系就很笨拙只能通过引入冗余数据(易产生不一致性)或者创建自然的数据结构(引入虚拟节点)来解决。
- 查询子女节点必须通过双亲结点。
- 由于结构严密,层次命令趋于程序化。