层次模型是数据库系统中最早出现的数据模型,层次数据库系统的典型代表是IBM公司的IMS( Information Management System)数据库管理系统。
(一) |
层次模型的数据结构 |
| 1. |
层次模型的基本结构 |
| |
层次模型用树形结构来表示各类实体以及实体间的联系,每一结点表示一个记录类型(实体型),每个记录类型包含若干个字段(实体的属性)。
下面是一个层次模型的示例:

|
| |
限制: |
| |
· 只有一个结点没有双亲结点,称之为根结点 |
| |
· 根以外的其它结点有且只有一个双亲结点 |
| |
因此层次数据库系统只能处理一对多的实体关系。 |
| 2. |
多对多联系在层次模型中的表示 |
| |
用层次模型表示多对多联系,必须首先将其分解成一对多联系。 |
| |
分解方法有两种:冗余结点法和虚拟结点法。
例:实体集(学生)和(课程)具有多对多的联系(m:n)


冗余结点法增设冗余结点,将多对多的联系(m:n)转换为一对多的联系(1:n)。
虚拟结点法将冗余结点转换为虚拟结点(指引元),指向所替代的结点。
|
|
| (二) |
层次模型的数据操纵与完整性约束 |
| 层次数据模型的操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件。 |
| 进行插入操作时,如果没有相应的双亲结点值就不能插入子女结点值。 |
| 进行删除操作时,如果删除双亲结点值,则相应的子女结点值也被同时删除。 |
| 进行更新操作时,应更新所有相应记录,以保证数据的一致性。 |
|
| (三) |
层次模型的存储结构 |
| 1. |
邻接法: |
| |
按照层次树前序穿越的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序。 |
| 2. |
链接法: |
| |
用指引元来反映数据之间的层次联系。 |
| |
下面是一个层次模型的记录实例集,其中一个结点代表一个记录。

按邻接法存放时,层次顺序为:1、2、3、4、5、6、7、8、9、10、11、12。按链接法存放时,增加指引元来反映层次联系,如:增加指引元指向最左边的子女和最近的兄弟结点。
|
|
| (四) |
层次模型的优缺点 |
| 优点: |
| · 数据模型比较简单,操作简单。 |
| · 对于实体间联系是固定的,且预先定义好的应用系统,性能较高。 |
| · 提供良好的完整性支持。 |
| 缺点: |
| · 不适合于表示非层次性的联系。 |
| · 对插入和删除操作的限制比较多。 |
| · 查询子女结点必须通过双亲结点。 |
| · 由于结构严密,层次命令趋于程序化。 |
|