第二章 网 状 数 据 库
2.1 DBTG 系统概述
DBTG系统是典型的三级模式结构 (图 2-1) P29
1、模式 DDL描述数据库的整体数据结构和完整性约束条件等。
2、子模式 DDL描述用户所涉及的数据结构和完整性约束条件
等。
3、数据存储描述语言 DSDL定义数据库的存储模式。
4、数据操纵语言( DML)定义对模式和子模式所描述的网状
数据库中数据在记录级的操作集合。
2.2 DBTG 的数据模型
2.2.1 DBTG 的数据结构
DBTG 模型的数据结构是由数据项、记录、系等对象组成的网
状结构,其中:
* 数据项 (Data Item)是命名的最小数据单位。
* 记录 (Record)是数据项的有序集合,表示描述的实体。
* 系 (Set)表示记录之间一对多的联系。系是 DBTG中一个十分重
要的概念。
一、系的定义
二、系型和系值
1、基本概念
系型是唯一的首记录型和若干个相关联的属记录型的集合,
表示首记录型和属记录型之间一对多的联系。系值是系型的一个实
例。
由于系是表示记录型之间一对多的联系,因此 ( 1)一个首记
录值属于(决定)这个系的一个系值。( 2)一个属记录值最多属
于这个系的一个系值。
专业系
系主任
领导
系代码 名称 电话
职工号 姓名 职称
专业系
专业系
学生
学习
1
1
1
m
专业系
学 生
系代码 名称 电话
学号 姓名 年龄 性别
学习
图 2-3 ( a )
领导
系主任
学 生
课 程
选 课
学生 学号 姓名 年龄 性别 课程号 名称
学号 课程号 得分
学生成绩单 课程成绩单 (C-SC)(S-SC)
学生选课 (SC)
课程 (C)
(S)m
n
图 2-3 (b) 实体间多对多的联系用 DBTG系型表示图
2、以学生 —— 课程为例说明系的概念
( 1)、学生、课程和学生选课三个记录型之间形成两个
系,从而得到了学生 —— 课程在 DBTG中的数据结构如图 2-3( b),
对于该模型中各记录和系的语义可解释为:见 P30
( 2)、系值的情况
设有 4位学生,3门课程。学生选课情况如表 2-1。
表 2— 1
S1 S2 S3 S4
C1 A A B A
C2 A B A
C3 B B
3、注意事项
在 DBTG模型中,允许,见 P31
( 1)一个记录型可以作为几个系的属记录型。如图 2-3( b)。
( 2)一个记录型可以作为几个系的首记录型。如图 2-5。
( 3)一个记录型可以既是某一个系的属记录型,又是另一个系的首记录型。
如图 2-6。
( 4)一个记录型可以是一个系的首记录型,又是同一系的属首记录型。如图
2-7。
( 5)两个记录型之间允许有多个系,如图 2-8
三、奇异系
1、概念
专业系
教研室
教 员
D
G
T
set1
set2
set3
( a ) ( b )
专业系
教研室
教 员
系 统
set1
set2
set3
set4
图 2-9
2、几点说明
( 1)奇异系以系统本身作为首记录,实际上首记录是虚拟的,
没有首记录,所以奇异系也叫无首系。
( 2)每个奇异系只有一个系值,即所有的属记录组成一个系值。
2.2.2 DBTG 的数据操作
一、操作类型
1、检索
2、更新
二、网状数据库数据的存取机制
1、入口点的存取方法
2、导航的存取方法
3、用 DBK直接存取记录的方法
4、关于 DBK的几点说明 见 P34
2.2.3 DBTG 的数据完整性
在模式 DDL中提供了定义 DBTG数据库完整性的若干概念和语
句,主要有,
1、支持记录码的概念。
2、保证一个系中首记录和属记录之间是一对多的联系。
3、可以支持首记录和属记录之间某些约束条件。
2.3 模式 DDL
用模式 DDL写出的一个数据库定义的全部语句称为一个模式。
DBTG模式主要包括:数据逻辑结构、安全性与完整性规则、
存储安排和存取路径四个方面的内容。
DBTG 模式的基本结构是:
一、模式条目
模式条目用来定义模式的名字。
一般格式:
SCHEMA NAME IS 模式名
二、域条目
1、基本概念
2、域条目的格式:
AREA NAME IS 域名
3、注意事项
三、记录条目
1、记录条目的作用
2、一般描述形式
RECORD NAME IS 记录名
WITHIN 域名
KEY 码名 DUPLICATES ARE[NOT] ALLOWED
数据项名 1; TYPE IS CHARACTER 整数 1
数据项名 2; TYPE IS CHARACTER 整数 2
……
数据项名 n; TYPE IS CHARACTER 整数 n
模式中至少定义一个记录。每个记录的定义占一个条目。
四、系条目 p36
1、系序
(1)基本概念
(2)系序分类
(3)属记录类型的组织方式
2、属籍类别
(1)加入类别
●自动的 (Automatic)
●手工的 (Manual)
(2)移出类别
●固定的 (Fixed)
●必须的 (Mandatory)
● 随意的 (optional)
INSERTION
RETENTION
AUTOMATIC MANUAL
FIXED
CONNECT ×
DISCONNECT ×
RECONNECT ×
CONNECT √
DISCONNECT ×
RECONNECT ×
MANDATORY
CONNECT ×
DISCONNECT ×
RECONNECT √
CONNECT √
DISCONNECT ×
RECONNECT √
OPTIONAL
CONNECT √
DISCONNECT √
RECONNECT √
CONNECT √
DISCONNECT √
RECONNECT √
表 2-3
专业系
专业 社团
学生
图 2-10
属籍类别是用来描述首记
录和属记录之间相互联系的约
束条件的。这些约束条件是现
实世界语义要求的反映。如图
2-10。
3、系值选择( Set selection)
系值选择实质上就是选择属记录的存取路径。
在 DBTG中,系值选择用系条目 SET SELECTION子句来定义,
主要有:
( 1)、通过系的当前值来选择系值。子句格式为
SET SELECTION IS THRU CURRENT OF SET.
(2)、通过首记录值选择系值。首记录是用码来标识的。子句
格式为:
SET SELECTION IS THRU OWNEW IDENTIFIED BY
KEY 数据项名 IN 记录名,
4、关于系条目的一般示例
SET NAME IS 系名 ;
OWNER IS 记录名 1;
ORDER IS SORTED BY DEFINED KEYS.
MEMBER IS 记录名 2;
INSERTION IS MANUAL.
RETENTION IS MANDATORY;
KEY IS ASCENDING 数据项名 IN 记录名 2;
SET SELECTION IS THRU CURRENT OF SET.
五,DBTG模式举例
以学生 —— 课程数据库为例给出它的模式。
1,SCHEMA NAME IS STUDENTS-AND-COURSES,
2,AREA NAME IS A-1.
3,AREA NAME IS A-2.
4,RECORD NAME IS S;
5,WITHIN A-1.
6,KEY SNO DUPLICATES ARE NOT ALLOWED.
7,SNO; TYPE IS CHARACTER 5.
8,SNAME; TYPE IS CHARACTER 15.
9,AGE; TYPE IS FIXED DECIMAL 2.
10,SEX; TYPE IS CHARACTER 1.
11,RECORD NAME IS C;
12,WITHIN A-1.
13,KEY CNO DUPLICATES ARE NOT ALLOWED.
14,SNAME; T YPE IS CHARACTER 4.
15,CNAME; TYPE IS CHARACTER 20.
16,RECORD NAME IS C;
17,WITHIN A-2.
18,SNO; TYPE IS CHARACTER 5.
19,CNO; TYPE IS CHARACTER 4.
20,G; TYPE IS CHARACTER 1.
21,SET NAME IS S-SC;
22,OWNER IS S;
23,ORDER IS SORTED BY DEFINED KEYS.
24,MEMBER IS SC;
25,INSERTION IS AUTOMATIC;
26,RETENTION IS FIXED;
27,KEY IS ASCENDING CNO IN SC;
28,SET SELECTION IS THRU OWNER IDENTIFIED BY KEY SNO IN S.
22,SET NAME IS C-SC;
22,OWNER IS C;
23,ORDER IS SORTED BY DEFINED KEYS.
24,MEMBER IS SC;
25,INSERTION IS AUTOMATIC;
26,RETENTION IS FIXED;
27,KEY IS ASCENDING SNO IN SC;
28,SET SELECTION IS THRU OWNER IDENTIFIED BY KEY CNO IN C.
2.4 子模式 DDL
一、子模式的重要性
二、子模式与模式的区别
三,DBTG 子模式的基本结构
子模式的三部分:
1、标题部( TITLE DIVISION)
★作用
★格式,SUBSCHEMA 子模式名 WITHIN 模式名,
2、映象部( MAPPING DIVISION)
3、结构部( STRUCTURE DIVISION)
★范围节 (REALM SECTION)
★系节 (REALM SECTION)
★ 记录节 (REALM SECTION)
三、一个子模式的实例
1,TITLE DIVISION.
2,SUBSCHEMA STUDENTS WITHIN STUDENTS-AND-COURSES.
3,MAPPING DIVISION.
4,ALLAS SECTION.
5,AD SET STUDENT-COURSE IS S-SC.
6,STRUCTURE DIVISION.
7,REALM SECTION.
8,RD A-1 CONTAINS S RECORD.
9,RD A-2 CONTAINS SC RECORD.
10,RECORD SECTION.
11,01 S.
12,02 SNO; PICTURE IS X(5).
13,02 SNAME; PICTURE IS X(15).
14,01 SC.
15,02 SNO; PICTURE IS X(5).
17,02 CN0; PICTURE IS X(4).
18,02 G; PICTURE IS A(1).
19,SET SECTION.
20,SD STUDENT-COURSE.
2.5 数据操纵语言 DML
2.5.1 程序运行环境
一、用户工作区 UWA
二,当前状态指示表
◆记录的当前值
◆系的当前值
◆域的当前值
◆运行单位的当前值
三、数据库状态反馈信息
● ERROR-STATUS,● ERROR- RECORD, ● ERROR-SET:
● ERROR- AREA, ● ERROR- NAME,● AREA-NAME:
2.5.2 DML 语 句
一,READY 和 FINISH
1、打开子模式中说明的域,格式为:
READY 域名 USAGE MODE IS EXCLUSIVEPROTECTED RETRIVEAL
UPDATE
◆ 说明,
(1).并发控制方式有三种
(2).对域中的数据记录操作方式有两种,
2、关闭已打开的域,撤销对给定域的控制。
格式为:
FINISH 域名,
二,FIND
1,FIND 语句的作用
2,FIND 语句格式
(1).格式 1,
FIND ANY 记录名,
OR FIND ANY 记录名 USING 数据项名 IN 记录名,
OR FIND DUPLICATE 记录名 USING 数据项名 IN 记录名,
(2),格式 2,FIND OWNER WITHIN 系名,
(3), 格式 3:
FIRST
LAST
FIND NEXT 记录名 WITHIN 系名,
PRIOR
整数
标识符
(4),格式 4
FIND DUPLICATE WITHIN 系名 USING数据项名 IN 记录名,
(5).格式 5.
FIND 记录名 WITHIN 系名 [CURRENT][USING数据项名 IN 记录名 ],
(6),格式 6.
FIND 数据库码,
第一种形式为,
FIND CURRENT [记录名 ] [WITHIN ]域名系名
第二种形式为,
FIND WITHIN 数据库码数组名FIRST LAST
3、举例
例 1、在学生 —— 课程数据库中,假设已找到 S4,现要找他选
的某一门课程名字,如果还要对 S4这个记录进行某些处理,就必须
使 S4成为运行单位的当前值。
整个过程的语句如下,
MOVE ‘S4’ TO SNO IN S.
FIND ANY S,/* 格式 1 */
FIND NEXT SC WITHIN S-SC,/* 格式 3 */
FIND OWNER WITHIN C-SC,/* 格式 2 */
FIND CURRENT S,/* 格式 6 */
GET S.
……
例 2,求选学 C2课程的 S4学生的成绩,
语句如下,
MOVE ‘S4’ TO SNO IN S.
FIND ANY S.
IF S-SC EMPTY GO TO NONE-COURSE.
MOVE ‘C2’ TO CNO IN SC.
FIND SC WITHIN S-SC CURRENT USING CNO IN SC,
例 3,假定已找到一个 SC记录
为,现在要找其它学 C2而且为 A的学
生。
S2 C2 A
题意分析:这样的记录,则应在以 C2为首的当前系值中按照成
绩为 A的条件存取属记录。其语句为:
MOVE ‘NO’ TO EOF,
PERFORM AB UNTIL EOF=‘YES’.
AB,GET SC
……
FIND DUPLICATE WITHIN C-SC USING G IN SC.
三,GET 语句
1、功能
2、格式 GET [记录名 ]
OR GET 数据项名 [ IN 记录名 ].
四,STORE 语句
1、功能
2、格式 STORE [记录名 ]
3、举例,MOVE ‘S4’ TO SNO IN S.
MOVE ‘李勇’ TO SNAME IN S.
MOVE ‘18’ TO AGE IN S.
MOVE ‘M’ TO SEX IN S.
STORE.
五, MODIFY 语句
1、功能
2、格式 MODIFY [记录名 ].
OR MODIFY 数据项名 1[数据项名 2…] IN 记录名,
3、几点说明
4、举例,把 S4选修 C2的成绩改为 B.
MOVE ‘S4’ TO SNO IN S.
[FIND ANY S.]
MOVE ‘C2’ TO CNO IN SC.
FIND SC WITHIN S-SC USING CNO IN SC.
GET SC.
MOVE ‘B’ TO G IN SC.
MODIFY SC.
六,ERASE 语句
1、功能
2、格式
ERASE [记录名 ][ALL].
七,CONNECT 语句
1、功能
2、格式
CONNECT [记录名 ] TO ALL系名 1[,系名 2]…..
3、说明
八,RECONNECT 语句
1、功能
2、格式
RECONNECT [记录名 ] WITHIN 系名,
3、说明
九,DISCONNECT 语句
1、功能
2、格式
DISCONNECT [记录名 ] FROM
3、说明
ALL
系名 1[,系名 2]….
2.5.3 程序实例
扩充后的 COBOL程序仍分四部分:标识部,环境部,
数据部,过程部。
1、标识部
2、环境部
3、数据部
4、过程部
5、程序实例 P53-56
2.6 DBTG 的存储结构
DBTG 网状模型中,数据库结构是系的集合, 研究 DBTG的
存储结构归结为系的实现方法,最常用的方法是链的方法,

属 1 属 4
属 2 属 3
图 2-15
这种方法对系的每一个系值
从首记录开始按系序用指引元依
次链接各属记录形成一条链,链
有单向链、双向链、环状链、非
环状链等多种类型。
此外系的实现方法中还有向
首链,即每个属记录都有指向首
记录的指引元。
图 2-15是一个双向链、环状
链、还有向首链的系值存储结构
示意图。
小 结
1,DBTG 系统是一个支持网状数据结构的系统方案。 它用记
录的概念描述实体,用系的概念描述实体之间一对多的联系。 系是
DBTG中一个重要的概念。在 DBTG中,系既是实体之间逻辑联系
的表示,又是存取数据库数据时可遵循的存取路径。因此,用存取
路径来表示记录之间的联系是 DBTG系统的基本特征 。
2,DBTG系统可以描述复杂的数据结构,同时由于存取路径明
确,因此存取数据的效率比较高。
3,DBTG系统提供了子模式 DDL、模式 DDL,DSDL和 MDL四
种语言。前三种语言是由 DBA用以定义子模式、模式和存储模式用
的。用户只需了解与自己有关的子模式。子模式是用户的视图,
DML是用户用以存取数据库数据的工具。
4,DBTG系统所涉及的概念是很完备的,许多实际系统中所
支持的概念通常是 DBTG的子集或者变化形式,因此学习 DBTG对
于掌握各种实际的网状数据库系统无疑是十分有益的。
课 间 休