层次数据库系统(数据库)
时间:2022-12-13 12:30:01 | 来源:信息时代
时间:2022-12-13 12:30:01 来源:信息时代
层次数据库系统 : 用层次数据模型来描述数据库的数据库系统,被称为第一代数据库系统。IBM公司在20世纪60年代末研制的IMS是层次数据库系统的典型代表。
在层次数据模型中,人们用记录型来描述现实世界中的实体型,每个记录型可包含若干字段,字段描述实体的属性。如图1所示,研究生教学数据库中的DEPARTMENT记录型描述了实体“系”,它包括系编号(DEPTNO)、系名(DEPTNAME)和系的位置(LOCATION)等三个字段; PROFESSOR记录型描述了实体“教授”,它包括教授编号、教授名和教授的专业特长等三个字段: ASSITANT记录型描述了实体“助教”,它包括助教编号、助教名和助教的专业特长等三个字段; GRADUATE记录型描述了 “研究生”实体。
层次关系是层次数据模型中最基本的数据关系,它代表两个记录型之间一对多的联系,也叫做双亲子女关系。人们用指针来表示几个记录型之间的联系。层次数据模型中有且仅有一个记录型无双亲,称为根结点,其他记录型有且仅有一个双亲,且任何子女记录型都依赖其双亲记录型的存在而存在,所以层次数据模型是树状的。例如在图1中,研究生教学数据库中的DEPARTMENT是根结点,它有两个子女结点PROFESSOR和ASSITANT;PROFESSOR是DEPATMENT的子女结点,也是GRADUATE的双亲结点。
图1 研究生教学层次数据库的型
层次数据模型的建模规则如下:
(1)树的结点表示实体记录类型。
(2)双亲结点和子女结点必须是不同的实体记录类型,它们之间是一对一或一对多的联系。
由于采用层次模型来组织数据及其联系,因而在层次数据库系统中能够很自然地表示两个记录型之间的一对多联系。如果要表示一个非层次结构的M:N联系,则必须将其分解为若干个层次结构。
在数据处理中,型和值是两个不同的概念。上面描述的模型是数据的型,型描述的是数据库的框架(又称为数据库模式),可以往型中装入许多具体的数据内容,装入的具体内容即值。如图2所示,给出了往研究生教学数据库的层次模型中装入了一些具体值后的结果。按层次数据库的框架装入值后就得到了一个具体的可以访问的层次数据库。
图2 研究生教学层次数据库的值
在对数据库进行操作时,为了满足层次模型的完整性约束条件,层次数据库系统规定: 除根结点外的每个结点都必须通过它的双亲结点来存取。在图2中,如果要得到某个研究生选课的情况,则要通过它的双亲结点PROFESSOR 以及根结点DEPARTMENT来存取,例如: 研究生YH选修了计算机科学系教授WP的数据结构课程DS,成绩是B。层次数据库系统还规定用户对数据的存取必须按照一次一个记录的方式,对数据的每一种操作都要和所处理的记录的值相关联,并要确定相应的存取路径,这些操作包括查询、添加、删除和修改等。
层次数据库的模式(数据库的框架)分为数据库外模式、数据库模式和数据库存储模式三个级别,它们分别对应于视图级抽象、概念级抽象和物理级抽象。用户根据数据库外模式来操纵数据库中的数据,一个数据库外模式就是一组逻辑数据库记录型的集合,即程序说明块(program specification block,PSB),每个逻辑数据库记录型由一个程序通信块(program communication block,PCB)定义,逻辑数据库记录型到数据库模式的映射包含在这个逻辑数据库记录型的PCB定义中。数据库模式是物理数据库记录型的集合,每个物理数据库记录型对应于层次数据模型中的一个层次模式,它由一个DBD(物理数据库描述)定义,物理数据库记录型到存储数据库的映射包含在该物理数据库记录型的DBD定义中。一个物理数据库记录型的所有实例的有序集合构成了一个物理数据库,存储数据库由所有存储在外存储器上的物理数据库的集合组成。
为了提高数据库的查询效率,层次数据库系统提供了多种存储结构,每种存储结构有着自己对应的存取方法。常用的层次数据库存储结构可以分为层次顺序(hierarchical sequential,HS)和层次直接(hierarchical direct,HD)两类。根据是否采用索引技术,存取方法进一步细分为层次顺序存取方法(hierarchical sequential access method,HSAM)、层次索引顺序存取方法(hierarchical indexed sequential access method,HISAM)、层次直接存取方法(hierarchical direct access method,HDAM)以及层次索引直接存取方法(hierarchical indexed direct access method,HIDAM)四种,这里所说的存取方法包含了存储结构。
层次数据库语言包括数据定义语言和数据操纵语言。数据定义语言用于定义层次数据库的逻辑数据结构和物理数据结构,层次数据库的数据定义语言由层次数据库模式数据定义语言和外模式数据定义语言组成,分别用于定义和修改层次数据库的外模式和数据库模式。数据操纵语言是层次数据库系统用来对数据库中的数据进行存储、检索和修改的语言。层次数据库数据操纵语言是过程式语言,要求用户熟悉层次数据库的结构。用户需要用宿主语言编写应用程序来调用数据操纵语句,实现对数据库的访问。
层次数据库的应用程序由宿主语言和相应的数据操纵语言编写而成。用户使用宿主语言编写应用程序的非数据操作部分,在需要访问数据库时嵌入用数据操纵语言编写的语句来实现和数据库的数据交互。在运行应用程序时,要为准备存取的每个数据库记录型专门设立一个I/O区。作为应用程序和数据库之间传递数据的工作区,当数据库数据被取入内存后,用宿主语言编写的语句将对其进行各种运算和处理,并在必要的时候调用数据操纵语句将处理结果写回数据库。
由于采用了层次数据模型,层次数据库系统具有数据模型简单、性能高和完整性支持好等优点。不足之处是: 不能够直接表示出非层次型的复杂联系,只能通过引入冗余数据(易产生不一致性)或创建另外的数据组织(例如引入虚拟结点)来达到目的;对插入和删除操作的限制比较多; 对数据的存取有较严格的限制,只允许按层次顺序或层次路径存取,有可能导致数据独立性较差。所以,自20世纪70年代中期以来,层次数据库系统的发展方向是努力克服这些缺点,改进存取界面,支持多种存取方式,提供更丰富的查询手段。
IBM公司著名的层次数据库系统IMS,产生于20世纪60年代末,曾被用来管理美国航空航天局的阿波罗计划中产生的各种庞杂数据,并被应用于银行、军事等领域的一些关键系统中,现在已经发展到了IMS V9。IMS V9提供了群集、N路数据共享以及消息队列共享等新的特性。此外,其他的层次数据库系统还有SYSTEM 2000、ASI/INQ、BIS、CDMS、COGENT、DMS170、HOPS、MARS、INFOS等; 在国内,中科院数学所周龙骧领导的小组在1976~1980年设计并开发了我国第一个层次型数据库系统SKGX,并在国产100系列机上产品化,取得了较大的成功。