层次数据模型有哪些优点缺点?

2024年8月19日09:22:10层次数据模型有哪些优点缺点?已关闭评论

20世纪60年代以前,人们采用文件系统进行数据管理,这种方式以分散、互相独立的数据文件为基础,不可避免地存在数据冗余、数据不一致、处理效率低等问题。这些问题在较大规模的系统中尤为突出。

美国在20世纪六七十年代开展了名为“阿波罗计划”的研究。当时“阿波罗”飞船由约200万个零部件组成,分散在世界各地制造。为了掌握计划进度及协调工程进展,“阿波罗计划”的总承包商北美Rockwell公司(现Rockwell International Corporation)曾在文件管理系统的基础上开发了一个计算机零部件管理系统。这个系统共用了18盘磁带,虽然可以工作,但效率极低,哪怕是一个小小的修改,都会带来“牵一发而动全身”的后果,维护起来十分困难。这18盘磁带的数据中有60%是冗余的。数据冗余引起的问题促使Rockwell公司开发出一种被称为GUAM(通用更新访问方法,Generalized Update Access Method)的软件,该软件构建的原理是,许多较小的零件将聚集组建成更大部件,持续下去,直到所有部件形成最终的装置。20世纪60年代中期,IBM公司与Rockwell公司联合,用更现代的磁盘存储器(允许使用复杂的指针系统)取代计算机磁带,从而扩充了GUAM的能力。

Rockwell公司与IBM公司共同努力的结果就是形成了IMS(信息管理系统,Information Management System),为“阿波罗”飞船在1969年顺利登月奠定了良好基础。由于IBM公司的开发实力和市场影响,IMS在20世纪70年代和80年代早期成为世界领先的大型机层次数据库系统。

IMS是采用层次数据模型的数据库的典型代表。层次数据模型(Hierarchical Data Model)又称为层次模型,它用一棵倒立的“有向树”的数据结构来表示各类实体以及实体间的联系。这棵“有向树”由根节点和若干棵子树构成。每个节点有零个或多个子节点。树有且仅有一个节点没有父节点,这个节点称为 根节点 ;根以外的其他节点有且只有一个父节点。除了根节点外,每个子节点可以分为多个不相交的子树;没有子节点的节点称为 叶节点 

(1)层次模型支持的数据操作

层次模型支持的数据操作主要有查询、插入、删除和更新。插入、删除和更新操作要满足层次模型的完整性约束条件,具体如下:

1)进行插入操作时,如果没有相应的父节点值就不能插入它的子节点值。例如,在例2.14的层次数据库中,在新调入一名学生,但尚未将他分配到某个班时,就不能将该学生插入数据库中。

2)进行删除操作时,如果删除父节点值,则相应的子节点值也被同时删除。例如,在例2.14的层次数据库中,如果删除了21软件工程3班,则该班所有学生的数据会全部丢失。

3)进行更新操作时,应更新所有相应记录,以保证数据的一致性。

(2)层次模型的优点

层次模型适用于表示现实世界中有“上下辈”分层级的事物以及事物间具有1: 联系的情况,如制造流程、行政层次、家族关系、银行的客户账户系统等。层次模型具有以下优点:

1)层次模型的数据结构比较简单、清晰。基于层次结构的数据库,各层之间的联系在逻辑上(或概念上)简单并且设计也简单。

2)层次数据库查询效率高。层次模型中记录之间的联系用有向边表示,这种联系在DBMS中常常用指针来实现,因此这种联系也就是记录之间的存取路径。当要存取某个节点的记录值时,DBMS沿着这一条路径就可以很快找到该记录值,因此层次数据库的性能优于关系数据库,不低于网状数据库。

3)层次模型提供了良好的完整性支持。给定父/子联系,在父记录和它的子记录之间存在链接。由于子记录是自动引用它的父记录的,所以这种模式保证了数据完整性。

4)层次数据库实现了数据共享。因为所有数据都保存在公共数据库里,所以数据共享成为现实。

5)层次模型具有数据安全保障。层次模型是第一个由DBMS提供和强制数据安全的数据库模型。

(3)层次模型的缺陷

层次模型存在以下缺陷:

1)表示的局限性:现实世界中很多联系是多对多联系,不适合用层次模型表示。

2)实现复杂:虽然层次数据库概念简单、容易设计而且没有数据依赖性问题,但实现起来特别复杂。由于使用导航式结构,数据库设计者必须具备一定的关于物理数据存储特性的知识。数据库结构的任何变化都要求所有访问数据库的应用程序随之改变。因此,数据库设计的实现变得非常复杂。

3)缺乏结构独立性:结构独立性是指数据库结构的改变不会影响DBMS访问数据的能力。层次数据库被称为导航式系统,这是因为其数据访问要求使用前序遍历导航到合适的记录。所以,应用程序应该掌握从数据库访问数据的相关访问路径。物理结构的修改或变化会导致应用程序出现问题,这就要求必须随之修改应用程序。在层次数据库系统中,结构依赖使得数据独立性是非常有限的,数据库和应用程序的维护也变得非常困难。

4)应用程序编写复杂:编写应用程序非常费时和复杂。由于导航式结构,查询子节点必须通过父节点,应用程序编程人员和终端用户必须准确地掌握数据库中数据的物理描述以及访问数据的控制代码,这要求具有复杂指针系统的知识,普通用户往往不具备这些知识。此外,对数据插入和删除操作的限制比较多,因此应用程序的编写复杂、耗时。

5)缺乏标准:在层次模型里,没有精确的标准概念集,也没有明确指定模型执行的特定标准。

  • A+
所属分类:SQL
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。