层次数据模型

2025年5月26日 | 阅读10分钟

在本文中,我们将详细了解层级数据模型。

引言

众所周知,数据库模型构成了任何数据库管理系统(DBMS)的基础框架,决定了数据的存储、组织和检索方式。在这种情况下,最早也是最具影响力的数据库模型之一就是“层级模型”,它主要以树状结构组织数据。它通常是在 20 世纪 60 年代开发的,旨在满足大型企业系统有效处理数据日益增长的需求。尽管后来出现了关系型数据库和面向对象数据库等更新的模型,但层级模型在特定场景下仍然具有相关性,尤其是在结构化、高性能数据导航至关重要的情况下。

然而,随着 IBM 的推出,层级数据模型变得流行,IBM 是唯一仍在使用的商业层级数据库,主要用于旧的主机。它以树形数据结构的形式组织记录。它包含 2 个主要概念:

  • 记录
  • 父子关系

记录:它是字段值的集合,提供了任何实体的相关信息。相同类型的记录被分组到记录类型中。

父子关系:在层级数据模型中,父子关系是两个记录类型之间的 1:N 关系。

让我们举个例子

考虑世界的组织结构。在顶层,我们有世界,下面有几个洲。每个洲包含几个国家。每个国家下面有几个邦,邦下面有几个区。一个给定的区属于列表中最靠近它的邦,而邦则属于其上方列表中的国家,依此类推。

Hierarchical Data Model

在上图中,世界充当树状结构根节点,它有许多子节点,如亚洲、欧洲等。这些子节点位于第 1 层,并为亚洲的印度、中国等国家充当父节点。同样,这些子节点位于第 2 层,并为印度、旁遮普邦、哈里亚纳邦等不同邦充当父节点。阿姆利则的子节点有一个在旁遮普邦的父节点,接着是一个在印度的父节点,依此类推。

层级模型的工作原理

层级数据库模型主要通过将数据排列成类似树的结构来工作。该模型主要从一个单一的根节点开始,所有数据都以自顶向下的方式从中分支出来。在这里,数据的每个部分通常存储在一个“节点”中,这些节点通过父子关系相互连接。可以说,当信息按级别组织时,例如公司的员工结构或计算机上的文件夹,这种方法效果很好。

  • 数据存储

我们知道,在层级模型中,所有相关信息通常保存在称为记录节点的单元中。所有这些节点都链接在一起以显示关系。每个子节点连接到一个父节点,形成一对多关系。最顶层的节点称为根节点,它没有父节点。它作为数据库的入口点。在这种设置中,一个主项可以在其下方有多个相关项,但这些项中的每一个只能链接回一个主项。这种简单、有组织的结构使得跟踪所有可用信息并有效管理它们变得更容易。“

例如:在一个公司数据库中,CEO 可能是根节点,经理是子节点,员工是它们的子节点。

  • 数据的有效检索

由于其结构化设计,层级模型中的数据检索被认为是直接的。该过程始终从根节点开始,向下穿过分支以到达所需数据。由于每个子节点直接与其父节点链接,数据库会遵循预定义的路径。这使得数据访问快速且可预测,尤其是在用户知道所需信息在层级结构中的位置时。无需扫描不相关的数据,从而节省了时间和处理能力。

尽管如此,这种模型在数据元素之间的关系不经常改变的情况下效果最好。虽然它可能不如现代关系模型灵活,但对于需要一致结构和快速访问分层信息的应用程序来说,它仍然是一个可靠且高效的选择。

分层模型

  • 层级模型主要以树形格式组织数据,其中每个记录都是一个节点。节点通常以“父子关系”链接,顶层有一个根节点,其他从属节点在其下方分支。这种结构反映了清晰的一对多关系,其中每个子节点都有且仅有一个父节点。
  • 层级数据库中的预定义路径通常允许快速且可预测的数据访问。由于结构是严格且定义明确的,因此从一个节点到另一个节点的遍历相当直接,并且针对性能进行了优化,尤其是在读密集型环境中。
  • 数据通常通过父子关联连接,确保子记录直接依赖于其父记录。这种严格的关系促进了“数据完整性”以及在选定数据集内高效地清晰理解依赖关系。
  • 层级模型最初由 IBM 在 20 世纪 60 年代开发,它在从平面文件系统向更结构化的数据库解决方案过渡方面发挥了重要作用。它为数据库设计和数据未来的创新奠定了基础。
  • 虽然在特定用例中效率很高,但该模型的刚性是一个缺点。因此,对层级数据库进行结构性更改可能既复杂又耗时,如果需要新的关系,通常需要进行全面重新设计。
  • 尽管年代久远,层级模型在数据本质上是分层的现代应用程序中仍然具有相关性。常见示例包括XML 文档处理、文件系统和组织结构图。它能够有效地管理嵌套数据,使其适用于所有这些场景。
  • 该模型自然地保留了数据顺序并通过其严格的关系强制执行完整性。这使其成为性能和固定数据层级都非常重要的应用程序的理想选择。

让我们举一个例子,一个包含 3 种记录类型的数据库:书籍 (Books)、店主 (Shopkeeper) 和订单 (Book_Order)。

书籍表

BID标题作者出版商价格
B1CAnshumanLPB175
B2C++YashwantBPB200
B3UNIXRobertTata250
B4JAVAHerbtPHI195

店主表

SID名称Ph_No城市
S1Ram9874689014LPB
S2Mohan9674689014BPB
S3Ravi9774689015Tata
S4穆斯坎9574689017PHI

Book_Order 表

BIDSIdQty
B1S175
B2S220
B3S325
B4S495

我们假设一个特定的店主可以订购许多书籍。此外,每本书在 BOOK 表中都有唯一的 BID,每个店主在 shopkeepers 表中都有唯一的 SID。现在考虑以下层级图,它代表了批发商数据库的一部分。该图代表了树状结构。

Hierarchical Data Model

在上图中,每棵树都以书籍记录作为父节点,店主记录作为其子节点。对于特定书籍的每个订单,都有一个店主记录。店主记录的出现与书籍记录的出现之间存在链接,代表关联的书籍订单。关系或链接描绘了特定书籍的订购数量,这在 Book_Order 表中显示。现在从这些树状图中可以看出,书籍 B1 由店主 S1 和 S2 订购。书籍 B2 由店主 S1、S2 和 S3 订购,书籍 B3 由店主 S1 订购。没有人订购书籍 B4。

层级数据模型上的操作

以下是层级数据模型上各种操作的列表

插入操作:用于将新记录插入数据库。

例如:如果我们想插入一个未被任何店主订购的新记录,例如 B5,那么插入将没有任何困难,因为父节点可以存在而没有子节点。但是,如果我们想插入一个店主记录,例如 S4,他没有订购任何书籍,那么这就会产生问题,因为子节点在没有父节点的情况下无法插入。

Hierarchical Data Model

删除操作:用于从数据库中删除记录。

  • 考虑一个带有许多子节点的父节点。如果用户想要删除父记录,它将删除所有子节点,因为任何记录的删除都会自动删除所有依赖的记录。例如:如果我们想删除书籍记录 B2,它有三个订单 S1、S2 和 S3,那么在删除 B2 时,S1、S2 和 S3 记录也将被删除。现在,关于记录 S1 和 S2 的信息也存在于其他书籍记录(如 b1)中。但订单 S3 的信息在任何书籍记录中都不存在。因此,在删除书籍记录 B2 时,记录 S3 将被永久删除,这会导致 S3 店主信息的丢失,这是不期望的。
  • 考虑另一种情况,即从 Book_Order 记录类型中删除记录,其中我们想删除店主 S3 为书籍 B2 所下的订单。删除此记录将导致店主 S3 的删除,因为他没有为任何其他书籍下订单,因此 S3 的信息丢失,这是不期望的。

更新操作:用于更新数据库中的记录。

  • 考虑需要更新父记录的情况。例如:如果我们想将书籍 B4 的价格从 195 更改为 300。那么这将很容易执行,因为在层级模型中父记录总是只有一个出现。
  • 现在假设我们想修改子节点 S1 的电话号码,从“9874689014”更改为“9874689015”。由于店主 S1 有多个出现,因此我们必须修改与店主 S1 对应的每个出现。如果我们不这样做,就会导致数据库不一致。

检索操作:用于在数据库中搜索和获取记录。

示例 1:查找所有为特定书籍 b2 下单的店主。

查询

在上述查询中,首先我们将从 Book_Order 记录类型中搜索 Book 记录 B2。然后它将搜索该特定书籍的所有订单。最后打印或显示检索到的数据。

示例 2:查找被特定店主 S1 订购的所有书籍。

查询

在上述查询中,我们首先必须在 Book_Order 记录类型中为每本书搜索 S1。如果找到店主,则显示相应的 BID,否则 do 循环将继续,直到所有部分都被搜索为订单 S1。

层级数据模型的优点

Hierarchical Data Model

以下是层级数据模型的各种优点的列表

  • 数据完整性:层级模型中不同记录之间的父/子关系由关系或链接表示。
  • 易于处理事务:使用此模型可以非常轻松地处理大量事务。
  • 数据安全:每个子段只能与父级相关联,并且在此模型中,子级只能由其父级访问。
  • 效率:该模型涉及父子之间的一对多关系。

层级数据模型的缺点

Hierarchical Data Model

以下是层级数据模型的各种缺点的列表

  • 复杂性:物理上建立链接数据库非常难以扩展或修改。
  • 数据库管理问题:数据结构所需更改会导致访问数据库的应用程序发生重大修改。
  • 查询功能缺乏:缺乏声明性查询功能和导航指针以访问所需信息使得查询复杂化。
  • 适用性限制:此模型的主要问题在于它们不够灵活,无法建立现实世界中发生的所有关系。
  • 数据操作问题:在执行插入、删除等各种复杂操作时,会产生许多问题。
  • 无标准:该模型在数据库设计和建模方面没有任何特定或精确的标准。

层级模型的应用

Hierarchical Data Model

与层级模型相关的各种应用如下

  • 内容管理系统 (CMS):许多内容管理系统通常使用层级数据库来组织页面、文章和媒体文件。这使得查找和管理内容更加容易,尤其是在将其分类到类别和子类别时。
  • 组织结构:各种公司通常使用层级数据库来反映其内部结构。这使得处理员工记录、部门信息和其他以清晰的指挥链组织的ructor 资源更加容易。
  • 文件系统:尽管如此,操作系统通常以树状结构组织文件和文件夹。这种设置使用户能够通过从主文件夹到较小文件夹的简单路径来浏览文件夹和定位文件。

关于层级数据模型的选择题

1. 在以下数据结构列表中,层级数据模型使用哪种结构?

  1. Array
  2. Tree
  3. Graph
  4. 链表
 

答案:b

解释:层级数据模型使用树形数据结构。


2. 下列哪一个是基于记录的表?

  1. 实体关系模型
  2. 物理数据模型
  3. 面向对象模型
  4. 层次数据模型
 

答案:d

解释:层级模型是基于记录的模型之一。


3. 在 ______________ 数据库中,父记录可以有多个子记录,但子记录只有一个父记录。

  1. 实体关系模型
  2. 关系模型
  3. 面向对象模型
  4. 层次数据模型
 

答案:d

解释:层级模型包含 1:N 型关系。


4. 层级数据模型是否以表格形式组织数据?

  1. 是的
  2. 不能
 

答案:b

解释:它以树形形式组织记录。