第三章 层次数据库
支持层次模型的数据库系统为层次数据库系统。这一章我们通
过介绍一个典型的层次数据库系统 IMS来介绍层次方法的基本特征。
3.1 IMS 概 述
一,IMS的发展历程
二,IMS的系统结构
IMS的系统结构如图 3-1。 P63
1,IMS是宿主语言系统。某种主语言加上 DL/1语句组成了 IMS的应用程序。
2、用户应用程序所使用的数据的逻辑结构描述称为程序说明块 PSB
( Program Specification Block),它是一组通信块 PCB(Program Communication
Block)的集合。
3,IMS中对数据逻辑结构、物理存储组织和工作环境的描述叫做数据库描
述 DBD( Data Base Description)
4,IMS控制程序即数据库管理系统 DBMS,它常驻内存部分约 220K,若带上
远程通信 (DB/DC)还要再加 256K.
3.2 IMS 的数据模式
3.2.0 概 述
IMS 中数据不可分割的最小单位是字段 (Field),若干字段组成片
段 (Segment).片段是 IMS中应用程序对数据库访问的基本单位,
IMS的基本数据结构是由若干相关联的片段组成的一个层次结
构,或称为一棵树,一个 IMS的整体数据模型是若干棵树的集合,
由树的定义可知,一棵树有且仅有一个根片段,除根以外的片段
有且仅有一个双亲片段,片段之间上下的关系称为双亲和子女,它表
示实体之间一对多的联系,
D# DN L
GRT
1系 D
E# PN S教授 P 2 助教 A E# AN S
研究生 G G# GN GR 3
4
图 3-2 GRT数据库模型
3.2.1 物理数据库
一、基本概念
1、物理数据库记录型 PDBR(Physical Data Base Record Type).
2、一个数据库记录。
3、一个物理数据库。
4,IMS中的一个数据库。
5,IMS中对一个 PDBR型的层数等的限制 。
二,IMS的术语和一般系统中这些名词含义的区别
1,IMS中描述一个实体的是片段,在 DBTG中是记录。在 IMS中
一个数据库记录是一棵树。
2,IMS中的物理数据库,“物理”二字的含义和通常的概念不同。
3.2.2 IMS的数据定义 —— 数据库描述 DBD
IMS中每一个物理数据库 PDB及向存储结构的映象用数据库描
述 DBD来定义。因此,DBD的集合相当于模式加上一部分内部映象
定义。
一,DBD语句
1,DBD
2,DATASET
3,SEGM
4,LCHILD
5,FIELD
6,XDFLD
7,DBDGEN
8,FINISH
二,DBD实例描述(以图 3-2的 GRT数据库为例)
1,DBD NAME=GRT,ACCESS=HDAM
2,DATASET DD1=GRTHDAM,DEVICE=3330,BLOCK=1024
3,SEGM NAME=D,BYTES=29,FREQ=20,PTR=T
4,FIELD NAME=(D#,SEQ,U),BYTES=3,START=1,TYPE=C
5,FIELD NAME=DN,BYTES=25,START=4,TYPE=C
6,FIELD NAME=L,BYTES=1,START=29,TYPE=C
7,SEGM NAME=P,BYTES=44,FREQ=30,PTR=T,PARNET=D
8,FIELD AME=(E#,SEQ,U),BYTES=4,START=1,TYPE=C
9,FIELD NAME=PN,BYTES=20,START=5,TYPE=C
10,FIELD NAME=S,BYTES=20,START=5,TYPE=C
11,SEGM NAME=G,BYTES=25,FREQ=40,PTR=T,PARNET=P
12,FIELD NAME=(G#,SEQ,U),BYTES=4,START=1,TYPE=C
13,FIELD NAME=GN,BYTES=20,START=5,TYPE=C
14,FIELD NAME=GR,BYTES=1,START=25,TYPE=C
15,SEGM NAME=A,BYTES=44,FREQ=30,PTR=T,PARNET=D
16,FIELD NAME=(E#,SEQ,U),BYTES=4,START=1,TYPE=C
17,FIELD NAME=AN,BYTES=20,START=5,TYPE=C
18,FIELD NAME=S,BYTES=20,START=25,TYPE=C
19,DBDGEN
20,FINISH
21,END
三,DBD 生成的过程
DBD生成
作业控制语句
DBD
生成程序
DOS/VS
源语句库
SSL
DBD
CIL
图 3-4 DBD生成的过程
3.2.3 层 次 序 列
层次序列 (Hierarchical Sequence)的概念是 IMS中一个重要的
概念。
1、片段的层次路径
2、片段值的层次序码
3、层次序列
3.3 IMS的外模式 —— 程序说明块 PSB
一、子结构的概念
D
P
G
A
A
B C E
D FPDBR1
PDBR2图 3-5 应用程序的数据视图
二、程序说明块 PSB
(一)物理数据库和 PSB的关系
PDB1
PCB11 PSB—A--------应用程序 A
PCB12
PCB1i
PCB21
PCB22
PCB2j
PCBn1
PCBn2
PCBnk
PCB2
PCBn
DB
PSB-B --------应用程序 B
PSB-C --------应用程序 C
…..


…..


图 3-6 IMS中数据库,物理数据库和 PSB的关系
三,PSB的控制语句
1,PCB:
2,SENSEG:
3,SENFLD:
4,VIRFLD:
5,PSBGEN:
四、实例描述
1,PCB TYPE=DB,DBDNAME=GRT,KEYLENGTH=11
2,SENSEG NAME=D,PROCOPT=G
3,SENFLD NAME=P,PARENT=D,PROCOPT=G
4,VIRFLD NAME=G,PARENT=P,PROCOPT=G
5,PSBGEN LANGUAGE=COBOL,PSBNAME=DPG
6,END
五、定义和建立一个 IMS数据库的步骤
1,DBD描述和生成 ——定义模式和模式到存储模式的映射。
2,PSB描述和生成 ——定义外模式。
3、建立 ACB——建立应用程序运行的控制信息。
4、利用 DBDGEN以后,系统输出信息中建议的参数定义
VSAM数据集。
5、加载物理数据库
3.4 IMS 的数据操纵
3.4.1 概 述
IMS的数据子语言为 DL/1.它是宿主型的数据操纵语言,所用的
宿主语言有 COBOL,PL/1,汇编语言等,
一、应用程序使用 DL/1的接口方式
1、高级编程接口( HLPI)
2,CALL调用
二,DL/1语言对数据库的存取类型
1、直接存取
2、顺序存取
3.4.2 DL/1 语 句
一、与存取片段相关的因素
1、当前位置
2、命令参数
二,DL/1 命令介绍
(一 ),GET UNIQUE( GU)
1、格式,GU [限定条件 ]
2、功能
3、举例
例 1.1 GU
例 1.2 GU D
例 1.3 GU D(D# =‘D05’)
P(S=‘DB’)
(二 ),GET NEXT(GN)
1、格式:
2、功能:
3、举例
例 2.1 GU D(D#=‘D05’)
P(S=‘DS’)
G
next GN G
GOTO next
例 2.2 GU D(D# =‘D05’)
next GN D(D# =‘D05’)
P(S=‘DS’)
G
GOTO next
(三 ),GET NEXT IN PARENT(GNP)
1、格式:
2、功能:
3、举例
例 3.1 GU D(D# =‘D05’)
P(PN =‘WP’)
G
next GNP G
GOTO next
(四 ),INSERT(ISRT)
1、格式:
2、功能:
3、举例
例 4.1 ISRT D(D# =‘D05’)
P(E# =‘E117’)
G
(五 ),REPLACE(REPL)
1、格式,REPL
2、功能:
3、举例
例 5.1 把 D05系,E117教授的专长改为信息系统分析。
GU D(D# =‘D05’)
P(E# =‘E117’)
用主语言在工作区中把片段 P的 S字段值由‘ DB’改为‘ ISA’
REPL
(六 ),DELETE( DLET)
1、格式,DLET
2、功能:
3、举例
例 6.1 GU D(D# =‘D05’)
P(E# =‘E117’)
DLET
例 6.2 GU D(D# =‘D05’)
DLET
(七 ),LOAD
LOAD命令用于把片段加载到一个空数据库中。
(八 ),CHECKPOINT
1、作用:
2、举例:
例 8.1 CHECKPOINT ID (‘CHKP0007’)
(九 ),SCHEDULE
1、作用:
2、格式, SCHEDULE PSB(PSB名 )
(十 ),TERMINATE
1、作用:
2、格式, TERMINATE PSB (PSB名 )
3.4.3 应用程序设计
一、批处理应用程序设计的运行环境
DOS/VS
IMS主控模块
应用程序
( HLPI 接口)
存取
方法
DL/1
存取模块
DL/1
日志模块
数据库缓冲区
数据库
日志
ABC
图 3-10 批处理应用程序的运行环境
二、应用程序结构
应用程序的结构如图 3-11所示。
DIB ( IMS的返回信息)
I/O工作区 (进出 DB的片段 )
程序入口语句
………
DL/1 语句
检索
插入
修改
删除
一般处理语句
………..
终止语句
控制模块 存取模块 IMS






图 3-11 应用程序结构
三,高级编程接口 HLPI
该不分介绍的是 COBOL语言的 HLPI。
1,HLPI 命令的格式:
EXEC DL1 命令名 任选项和参数 END-EXEC
主要的任选项有:
SEGMENT (片段名)
2、举例
EXEC DL1 GET UNIQUE
SEGMENT ( D) WHERE ( D# =D05)
SEGMENT ( P) INTO ( PIO) WHERE ( S=DB)
END-EXEC
INTO (变量名)
FROM(变量名)
3.5 IMS 的数据库组织和存取方法
3.5.1 概 述
一、层次模型的存储结构
1、层次模型构架
数据库的存储结构不同于一般数据的存储结构,它反映数据之
间的联系。在层次数据库中,数据之间具有层次联系。
A
B
C
A1
B1 B4 B6
C3 C5 C7 C14 C2 C9 C4 C6 C8
(a ) ( b)
图 3-12
2、实现层次数据库的存储结构的方法
(1),邻接法,按自顶向下、自左向右的顺序(即层次序列的顺序 )
排列,
A1 B1 C3 C5 C7 C14 B4 C2 C9 B6 C4 C6 C8 A2 ……
图 3-13
(2),链接法
①,子女 -兄弟指引元法
A1 · ·
B1 · · B4 · · B6 · *
A2 · ·
C3 · C5 · C7 · C14 * C2 · C9 * C4 · C6 · C8 *
图 3-14
②,层次序列法
A1
C14
C7
C5
C3
C9
C2
C8
C6
C4
B6B4
B1
图 3-15
二,IMS数据库存储结构
1,IMS提供的数据库存储组织
(1),层次顺序 HS(Hierarchical Sequential)
①,层次顺序存取方法 HSAM
(Hierarchical Sequential Access Method)
②,层次索引顺序存取方法 HISAM
(Hierarchical Indexed Sequential Access Method)
(2),层次直接 HD(Hierarchical Direct)
①,层次直接存取方法 HDAM
(Hierarchical Direct Access Method)
②,层次索引直接存取方法 HISAM
(Hierarchical Indexed Direct Access Method)
2、各种存储组织与数据库的接口
IMS Control Program
HSAM HISAM HDAM HIDAM
SAM
ISAM
与 OSAM
或 VSAM
OSAM

VSAM
HISAM
与 OSAM
或 VSAM
HSAM
DB
HISAMDB HDAMDB HIDAMDB
图 3-16
片段码
删 除
标 志
兄 弟 子 女
用 户 数 据向







3,IMS中一个片段在存储组织中的结构
(1),存储记录
(2),系统数据
(3),用户数据
Prefix
图 3-17
3.5.2 HSAM(层次顺序存取方法 )
D01 ┅ ┅ ┅
· · · D04 · · ·
P G G G P GE103 G08 G11 G31 E117 G05D05…
G P A A A
G17 E134 E204 E213 E237 ……
图 3-18
存储记录
用二进制
0填充
课 间 休 息
3.5.3 层次索引顺序存取 HISAM
HISAM数据库对根片段用索引的方法组织,从属片段用邻
接的方法,同时也要用指引元加以补充。
● G08 G11 G31
● E117 G05 G17
● E134 E204 …

● ● ●
● D05 E103
● D09… …

KSDS ESDS索引


图 3-19
Key-Sequential Data Set Entry- Sequential Data Set
3.5.4 层次直接存取方法 HDAM
DDAM数据库对根片段用杂凑 (hash)方法组织,一个数据库记
录的所有片段用子女 -兄弟指引元或者层次序列指引元链接。
HDAM用 VSAM支持时是用 ESDS数据库来存储的。 ESDS数据
库分为根片段寻址区和益处区两部分(图 3-20)。
1、碰撞链的概念
2、插入一个新片段
3、删除一个片段
图 3-20给出了用 HDAM组织图 3-3数据库记录的情况。
3.5.2 层次索引直接存取方法 HIDAM
HIDAM是利用索引的层次直接组织,一个 HIDAM组织的数据库
可分为索引数据库 (Index DB) 和数据数据库
两不分 (Data DB).
D03 D08
D01 D02 …
D05 …
D01 …
D05 E103 G08 G11
G31 E117 G05 G17
E134 E204 E213 E237

索引数据库 (KSDS) 数据数据库 (ESDS)
图 3-21
3.6 逻辑数据库
3.6.1 逻辑数据库的基本概念
一,逻辑数据库概念的引入
CNAME CPRICE CDESC
商品名 价格 规格
图 3-22
COMODITY
SNAME SMGE SDD
CNAME DATE STATUS CPRICE CDESE
SHOP
(商店)
CHECKING
图 3-23
CHAME CPRICE CDESE
SNAME SMGR SADD
DATE STATUS Checking
Shop
Comodity PDP
Comodity
逻辑双亲
物理双亲
逻辑指引元
图 3-24
二、逻辑数据库的定义
三、关于 LDB概念的几点说明
四、由 PDB构造 LDB时,必须遵循的原则
3.6.2 单向逻辑关系和双向逻辑关系
一、基本概念
1、单向逻辑关系
2、双向逻辑关系
二、偶对概念的引入
1、实偶对
2、虚偶对
三、使用 LDB的优点
1、提供了减少冗余度的一种手段。
2、可以处理多对多的实体联系
3、可将一个复杂的网状结构表示成树结构
4、使用户可以用不同的方式看待数据。
3.6.3 逻辑数据库的描述
一, 描述逻辑数据库的语句
1,DBD NAME=<LDB NAME>
ACCESS = LOGICAL
2,DATASET = LOGICAL
3,SEGM NAME = <片段名 >
PARENT=<双亲片段名 >
① SOURCE =(<源片段名 >,<PDB名 >)
② SOURCE =((<源片段名 >,<PDB名 >)
(<源片段名 >,<PDB名 >))
4,DBDGEN
5,FINISH
6,END
第三章结束