第三章 层次与网状数据库系统...

45
第第第 第第第第第第第第第第第第第第第第第第 第第第第第第第第第第第 第 第 统统 第第第第第第第第第第第第第第 第第第第第第第第 第第第第第第第第第 第第第第第第第第 第第第第第 统统一 第第第第第 第第第第第 第第第第第 第第第第 第第 第第第第第第第第第第第第第 第第 第第第第第第第第第 第第第第第第C

Upload: jerom

Post on 13-Jan-2016

121 views

Category:

Documents


0 download

DESCRIPTION

C. 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系 统产品中占主导地位。这两类数据库系统被称为第一 代数据库系统,是数据库系统发展史上的一个重要里 程碑。本章简单介绍这两类数据库系统。 第一节 层次数据库系统 第二节 网状数据库系统. C1. 第一节 层次数据库系统 层次数据库系统是基于层次数据模型的数据库系统。 本节首先学习层次数据模型,学习这种数据模型的 三个组成部分,即数据结构、数据操作和数据约束。 然后以 IMS 层次数据库系统为例,学习层次数据库系 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

第三章 层次与网状数据库系统

层次与网状数据库系统是最早出现的数据库系统,在七十年代和八十年代初非常流行,在当时的数据库系统产品中占主导地位。这两类数据库系统被称为第一代数据库系统,是数据库系统发展史上的一个重要里程碑。本章简单介绍这两类数据库系统。

第一节 层次数据库系统 第二节 网状数据库系统

C

Page 2: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

第一节 层次数据库系统

层次数据库系统是基于层次数据模型的数据库系统。本节首先学习层次数据模型,学习这种数据模型的三个组成部分,即数据结构、数据操作和数据约束。然后以 IMS 层次数据库系统为例,学习层次数据库系统的数据定义、数据操纵、存储结构等内容。 1. 层次数据模型的数据结构 2. 层次数据模型的数据操作和完整性约束 3. IMS 概述 4. IMS 数据定义 5. IMS 数据操纵 6. IMS 存储结构

C1

Page 3: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

1. 层次数据模型的数据结构和 M:N 联系 层次数据模型的主要数据结构概念是记录和父子联系。 记录: 即一组数据域的集合。 记录型:即结构相同的记录集合。 父子联系型:即两记录型 P 、 S 的一对多联系,记为 (P,S) , P 称为父记录型, S 称为子记录型, 对 P 的每个记录, S 有多个记录与之对应。 父子联系型实例:由父记录型一个记录及子记录型的所有 相关记录组成。 层次模式:即一组记录型及其父子联系型构成的一棵有向树。 层次数据库模式:即一组层次模式的集合。 层次数据库实例:层次数据库模式的所有记录型和父子联系 型的实例集合,可以用一组层次模式的森 林来表示。

C11

接下页

Page 4: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

DEPARTMENT

dnamedunmbermgrnamemgrstartdate

EMPLOYEE name ssn bdate address

PROJECT plocationpname pnumber

每个部门有多个雇员,每个雇员仅属一个部门

每个部门负责多个项目,每个项目仅属一个部门

(department,employee) 父子联系实例Department 研究部 管理部employee 张平 , 王虎 李闯 , 李微 , 高锋

(department,project) 父子联系实例Department 研究部 管理部project 北京 , 天津 大连 , 沈阳 , 长春

1:N

1:N

接下页

C11a

Page 5: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

由于父子联系型的特点是父记录的唯一性,所以层次数据模型只能直接表示两个记录型之间的 1:N 联系。但在应用领域中大量存在着 M:N( 多对多 ) 联系,而 M:N 联系并没有父记录的唯一性。如何用父子联系型描述 M:N 联系?下边介绍两个方法:

子记录冗余法 : 虚拟父子联系法

接下页

C11b

Page 6: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

子重复

project#1#2#3

employee

employee

employee

employee#1#2#3

project

project

project

描述 M:N 联系的记录冗余法 :对子记录型的记录实例重复存储,用多个父子联系型表示两个记录型 之间的 M:N 联系

(project,employee)

形式父 形式父形式子 形式子

(employee,project)

F

G

ab ab

Employee 的记录可重复地作为不同的 project 记录的子记录出现

project 的记录可重复地作为不同的 employee 记录的子记录出现

父子父子父子父子

父子父子

C11c

接下页

Page 7: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

Project A Project B Project C Project D

ep1 ep2 ep3 ep4 ep5 ep6 ep7 ep8 ep9 ep10 ep11 ep12

Employee A Employee B Employee C Employee D Employee E Employee F

虚拟 ( 指针 ) 记录型

project employee

epointer

employee project

epointer

父 子父 子虚子 虚父 虚子 虚父

描述 M:N 联系的虚拟父子联系法 构造虚拟记录型,用父子联系型和虚拟父子联系型表示两个记录型之间的 M:N 联系

C11d

Page 8: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

2. 层次数据库的数据操作和完整性约束C12

层次数据模型的完整性约束 1 非根记录须有父记录 2 若有多个同型父 , 则子须重复存储 3 若有多个异型父 , 则实父须唯一层次数据库系统可能还有它自己的完整性约束 ,用户可通过编程实现其它的完整性约束

层次数据库的数据操作: 树定位 : 定位到某树首记录 树间移动 : 移位到别树首记录 树内记录移动 : 按层次路经在记录间移位 层次记录移动 : 按层次顺序在记录间移位 对记录的插入删除修改 :

Page 9: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

IMS 概述 Information Management System IMS 是最早的大型数据库管理系统,其数据库模式是多个物理数据库记录型 (PDBR) 的集合。每个 PDBR 对应层次数据模型的一个层次模式,用一个 DBD 定义。各个用户所需数据的逻辑结构称为外模式,每个外模式是一组逻辑数据库记录型(LDBR) 的集合。 LDBR 是应用程序所需的局部逻辑结构。用户按照外模式操纵数据。

数据的三级抽象模式

数据操纵语言 DL/1 宿主语言 :汇编 ,COBOL,PL/1

层次数据 记录型 记录 数据域 键 层次模式 外模式模型术语IMS术语 片段型 片段 域 顺序域 物理数据库 逻辑数据库 记录型 记录型

现代提法 IMS

C13

外模式概念模式内模式

外模式数据库模式存储数据库

是一组用 PCB 定义的逻辑数据库记录型 LDBR

是一组用 DBD 定义的物理数据库记录型 PDBR

存储在外存的物理数据库集合

Page 10: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C14 IMS 的数据定义

IMS 的数据定义包括数据库模式定义和外模式定义。

IMS 的数据库模式是物理数据库记录型的集合。每个物理数据库记录型对应于层次数据模型中的一个层次模式,由一个 DBD 定义。物理数据库记录型到存储数据库的映射包含在这个物理数据库记录型的 DBD 定义中。

IMS 的外模式是逻辑数据库记录型的集合。每个逻辑数据库记录型由一个 PCB 定义。一个逻辑数据库记录型到IMS 数据库模式的映射包含在这个逻辑数据库记录型的PCB 定义中。用户是按照外模式操纵数据的。

下边分别介绍数据库模式定义和外模式定义:

1 数据库模式定义 2 外模式定义

Page 11: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C141

数据库模式定义

IMS 的数据库模式是一组物理数据库记录型 (PDBR 型 ) ,每个 PDBR 型是由若干相关联的片段型组成的一棵层次树结构。它的一个根片段值及其后裔片段值构成了该 PDBR 型的一个值,即数据库记录或实例。每个 PDBR 型通过一个 DBD语句群定义其逻辑结构及其存储结构映像, IMS 数据库模式的定义是一组 DBD 定义的排列。在 DBD 定义过程中各片段型出现的次序决定了数据库各片段值的存储次序,从而会影响到某些 DL/1语句的执行结果。要求这种次序与片段型在 PDBR 型树的层次顺序 ( 自顶向下 , 自左向右 )保持一致。

(1)教学数据库的 PDBR 型及其一个实例 . (2)PDBR 型的 DBD 定义 , (3)PDBD 型各片段型的型码和片段的层次顺序值 .

Page 12: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

Department:d#,title,other

Course:c#,title,format

TeacherA:name,office Student:s#,name,age,grade

DepartmentD3 space D6 computerD8 machine

CourseC20 db 80C17 os 80C12 ds 90

TeacherBZhou 32qinghuaWang35bingjingLin 40 wuhanLai 28 hunan

TeacherBWang25nanjingLi 53wuhan

CourseC17physics160 C13math 240

TeacherA: Wang 418

Student78640Zhang21 5578616Chen 21 7078612Li 20 8078605Wang 22 90

TeacherA:Lin415

Student78634lin21 7078616Chen 21 6078605Wang 22 95

教学数据库PDBR树的实例

3任课老师

5 在冊教员2开设课程

4 学生

1 系

1

2

3

4

5

4

3

5

2

TeacherB:name,age,university

C1411

教学数据库的PDBR型

Page 13: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

(1)DBD name=ts,access=HDAM /* 定义物理数据库总体逻辑结构的名称和存取方式(2) Dataset name=tsf,device=3330,block=1024 /* 定义文件名称存储设备物理块大小(3) Segm name=dept,bytes=35,freq=30 /*片段型的名称长度片段值的最大数目(4) Field name=(d#,seq,u),bytes=3, start=1, type=char /* 域名长度起始位置数据类型(5) Field name=title, bytes=22,start=4, type=char(6) Field name=other, bytes=10,start=26,type=char(7) Segm name=course , bytes=30,freq=90,parent=dept(8) Field name=(c#,seq,u),bytes=3, start=1, type=char(9) Field name=title byes=22, start=4, type=char(10) Field name=format, bytes=5, start=26, type=integer(11) Segm name=teacherA, bytes=18,freq=20,parent=course(12) Field name=(name,seq,u), bytes=8, start=1, type=char(13) Field name=office, bytes=10,start=9, type=char(14) Segm name=student, bytes=21,freq=500,parent=course(15) Field name=(s#,seq,u), bytes=6, start=1, type=char(16) Field name=name, bytes=10,start=7, type=char(17) Field name=age, bytes=2, start=17, type=integer(18) Field name=grade, bytes=3, start=19, type=integer(19) Segm name=teacherB, bytes=40,freq=100,parent=dept(20) Field name=(name,seq,u), bytes=8, start=1, type=char(21) Field name=age, bytes=2, start=9, type=integer(22) Field name=university, bytes=30, start=11, type=char(23)DBDGEN(24)FINISH(25)END

C1412

Page 14: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

teacherA型码 =3

depart型码 =1

course型码 =2

student型码 =4

teacherB型码 =5

访问树的前序遍历法: 访问根 ; 前序遍历左子树 ; 前序遍历右子树 ;

教学数据库 PDBR各片段型的型码层次顺序的概念 片段型的型码的概念 : 按前序遍历法扫描 PDBR 树的片段型规定一个型码片段的顺序码定义为 : 片段型的型码 , 后跟该片段 的顺序域 (即键 )值层次顺序值定义如下: 根片段型每个片段的层次 顺序值定义为其顺序码 非根片段型每个片段的层 次顺序值以其父片段层 次顺序值为前缀 ,加上自 身的顺序码构成

(D6,COMPUTER…) 层次顺序值是 1D6,(C17,OS,80) 层次顺序值是 1D62C17,(78640, zhang, 21,55) 层次顺序值是 1D62C12478640.

C1413

Page 15: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C142外模式定义

外模式是各个用户所需数据的局部逻辑结构,是应用程序的数据视图,一般地只涉及数据库的一部分,故需在 PDBR 型的基础上分别定义。一个数据库模式有若干外模式,允许多个应用程序共享一个外模式 , 但每个程序只能启动一个外模式。一个外模式是一组逻辑数据库记录型 (LDBR 型 ) 的集合,记为 PSB 。一个 LDBR 型是某个 PDBR 型的子树,由一个 PCB定义。

外模式的定义遵循如下规则: ‘若外模式包含某个片断型,则必须包含其父片断型。’下边说明一个逻辑数据库记录型是如何定义的。

(1)教学数据库的一个 LDBR 型 (2)LDBR 型的 PCB 定义

Page 16: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

D# Title other

C# title format

S# name age grade

Department

Course

Student

教学数据库的一个 LDBR 型C1421

Department:d#,title,other

Course:c#,title,format

TeacherA:name,office Student:s#,name,age,grade3任课老师

5 在冊教员2开设课程

4 学生

1 系

TeacherB:name,age,university

该 LDBR 型是下边的 PDBR 型的子树:

Page 17: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

用 PCB定义一个逻辑数据库记录型 LDBR(1)PCB type=DB,DBDname=TS,KEYLENGH=10(2)SENSEG name=dept,PROCopt=G(3)SENSEG name=course,parent=dept,procopt=all(4)SENSEG name=student,parent=course,procopt=r

一个外模式 PSB 的定义格式 :PCB../*PCB 定义第一个 LSBR*/ --------------------------------------PCB../*PCB 定义第二个 LSBR*/ --------------------------------------PCB../*PCB 定义第三个 LSBR*/ ---------------------------------------psbgen lang=pl/1,psbname=useraend (宿主语言及 psb名 )

定义程序与数据库接口 :1 类型2使用的物理数据库模式3全链键最大长度

定义外模式的片段型 :名称 - 父名 -允许操作g读 i 插 r更新 d 删除 a 上述全部 k禁止存取

C1422

Page 18: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

新 控 制

DL/1命令

C15

GU 检索 某片段 GN 顺序检索 下一片段 GNP 在当前父片段内检索 下一片段 GHU 同 GU, 为删改作准备 GHN 同 GN, 为删改作准备 GHNP 同 GUP, 为删改作准备 ISRT 插入片段 REPL 修改片段内容 DELT 删除某片段及其后裔 LOAD 初始加载一个片段 CHKP 建立检查 点 SCHD 调度 PSB TERM 释放 PSB

IMS 的数据操纵语言是 DL/1 。用户使用某种高级语言 ( 称为宿主语言 ) 编程,通过嵌入 DL/1语句实现对数据库的存取。

宿主语言DL/1

用户内存数据库

Page 19: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

IMS 的存储结构 IMS提供四种存储结构: 以下各存储结构的示例均以教学数据库 PDBR 为模型。1.HSAM : 层次顺序访问方法,片段按层次顺序作物理邻接存储。2.HISAM :层次索引 顺序访问方法, 非根片段按层次顺序值升序邻接存储, 根片段用顺序域索引 的方法组织并指向下属区域。3.HDAM : 层次直接访问方法,片段的存储采用离散分布方式, 根片段用顺序域 HASH方法组织,从根片段出发用指针 按层次顺序值的顺序把物理上分散的从属片段链接起来。4.HIDAM :层次索引 直接访问方法,类似于 HDAM ,不同的是, 根片段采用顺序域索引技术 组织,而不是 HASH方法。 故是 HDAM 和 HISAM 两种方法的混合。

C16

根片段 从片段HSAM 顺序邻接 顺序邻接HISAM 索引 法 顺序邻接HDAM HASH法 链表HIDAM 索引 法 链表

存储结构比

较[例子 ] 教学数据库的 PDBR型

Page 20: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

1d6

1d3

1d8

2c12

2c13

2c20

2c17

2c17 5li

78634

78640

5lai 5zhou

5wang

5lin 5wang

786167861278605

78616786053lin

HSAM : 层次顺序访问方法。 片段按层次顺序在硬盘作物理邻接存储。 以前边介绍的教学数据库 PDBR为例:

3wang

space

computer

machine

DS90 418 Wang 22 Li 20 Chen 21 Zhang21

C16a

Page 21: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

1d61d8 1d3

HISAM :层次索引 顺序访问方法。 非根片段按层次顺序值的升序邻接存储, 根片段用顺序域索引 的方法组织并指向下属区域。 以前边介绍的教学数据库 PDBR为例:

2c12

2c13

2c20

2c17

2c17 5li

78634

78640

5lai 5zhou

5wang

5lin 5wang

786167861278605

78616786053lin

3wang

索引 表

根片段

C16b

Page 22: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

1d61d3 1d8

2c12

2c202c17

478634478640

3wang

5lai3lin

5zhou

5lin

5wang478616

478612

478605

478616

478605

2c13

2c17

5li

5wang

HDAM :层次直接访问方法。 片段的存储采用离散分布方式, 根片段用顺序域 HASH方法组织,从根片段出发用指针 按层次顺序值的顺序把物理上分散的从属片段链接起来。 以前边介绍的教学数据库 PDBR为例:

根片段 HASH 结构

链表

C16c

Page 23: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

1d61d3 1d8

2c12

2c202c17

478634478640

3wang

5lai3lin

5zhou

5lin

5wang478616

478612

478605

478616

478605

2c13

2c17

5li

5wang

HIDAM : 层次索引 直接访问方法,类似于 HDAM ,不同的是, 根片段采用顺序域索引技术 组织,而不是 HASH方法。 以前边介绍的教学数据库 PDBR为例:

链表

索引 表

C16d

Page 24: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

Department:d#,title,other

Course:c#,title,format

TeacherA:name,office Student:s#,name,age,grade

DepartmentD3 space D6 computerD8 machine

CourseC20 db 80C17 os 80C12 ds 90

TeacherBZhou 32qinghuaWang35bingjingLin 40 wuhanLai 28 hunan

TeacherBWang25nanjingLi 53wuhan

CourseC17physics160 C13math 240

TeacherA: Wang 418

Student78640Zhang21 5578616Chen 21 7078612Li 20 8078605Wang 22 90

TeacherA:Lin415

Student78634lin21 7078616Chen 21 6078605Wang 22 95

教学数据库PDBR树的实例

教学数据库的PDBR型

3任课老师

5 在冊教员2开设课程

4 学生

1 系

1

2

3

4

5

4

3

5

2

TeacherB:name,age,university

C16e

Page 25: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C2 第二节 网状数据库系统

网状数据库系统是基于网状数据模型的数据库系统。本节首先学习网状数据模型,学习这种数据模型的三个组成部分,即数据结构、数据操作和数据约束。然后以 DBTG网状数据库系统为例,学习网状数据库系统的数据定义、数据操纵、存储结构等内容。

1. 数据结构 2. 数据操作 3. 完整性约束 4. 三个特殊系型 5. M:N 联系的表示 6. DBTG系统概述 7. DBTG 模式定义语言 8. DBTG 子模式定义语言 9. DBTG 数据操纵语言

Page 26: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

网状数据模型比层次模型更具普遍性 ,取消了层次模型树型结构的限制 ,允许结点无父多父 ,允许两结点间的多种联系 .记录 : 即一组数据值的集合记录型 : 即具有相同结构的记录的集合 由命名的类型数据项 (属性 )组成 记录是记录型的实例,由键属性唯一标识 属性可以是简单数据项,也可以是向量和重复组 向量是相同类型数据值的集合 重复组是不同类型数据值集合 由实数据项导出的数据项称为虚数据项

学号 姓名 成绩 (语 , 数 ,英 ) 学号 姓名 学历 (校 , 学位 , 年 )

C21

向量:由多个同类型的数据项组成 .

重复组:由多个不同类型的数据项组成

接下页

数据结构

Page 27: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

系型:两记录型 R,S(分别称为系主和成员 )之间的一对多联系。系型实例:由系主记录型一个记录 与成员记录型的相关子记录 (有序 )组成。网状数据库模式:是记录型和系型的集合。网状数据库实例:记录和系型实例的集合。网状模式图: 是以记录型为点,系型为边的有向图, 允许结点无父或多父

用指针将系主记录和所有成员记录按序连起来,下边是系型的两个实例:

计算机 ..

数学 ..

张平 .. 李华 ..

陈大 .. 赵二 .. 张三 ..

department student系型

C21a

Page 28: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

网状数据库系统数据操作:1 由属性值确定记录位置2从系主记录移到第一成员记录3从成员记录移到下一成员记录4 从成员记录移到系主记录5 建立新纪录 6删除记录7修改记录 8 把记录连接到系实例9 把记录从系实例撤出10记录从系实例转至另一实例

系主记录型 成员记录型

C22

计算机 ..

数学 ..

张平 .. 李华 ..

陈大 .. 赵二 .. 张三 ..

department student系型

Page 29: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

完整性约束 (在定义系的时候确定 , 一般是可以选择约 )1. 成员约束 : 成员记录型每个记录至多属于系型的一个实例 例:陈大既然是数学系的学生 ,就不能是计算机系的学生2. 插入约束 : 成员记录型插入新记录时 , 可使用两种方式连接到系实例 : (1)自动连接 : 由系统连接 (automatic) (2) 人工连接 : 用户指定连到某系实例 (manual)3. 成员存在约束国 (1)存在方式可自由选择 (optional) (2) 必须关联某个系实例 , 但可转系实例 (mandatory) (3) 必须固定在一个系实例 (fixed)4.新成员记录序约束 (1)按原排序属性 (如学生证号 )定序 (2)由系统定序 (3)按插入时间定序 (最前 , 最后 ) (4) 安排在当前成员记录 (最近被访问过 )的前或后

C23

Page 30: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

三个特殊的系型 系统系型: 该系型没有系主记录型,可认为它具有一个虚拟系主记录型 system( 仅含一个记录‘ system’) 。 系统系型的用途是: 1) 用户通过系统系型的记录进入数据库; 2) 同一个记录型可定义多个系统系型,对应不同的序约束, 实现以多种顺序存取该记录型的记录。 多成员系型:该系型具有多个成员记录型。 例如,雇员分类为办事员、技术员和管理者。于是部门 -雇员 系型任意一个实例的成员记录可以是三个成员记录型的记录。递归系型 : 在这种系型中 , 系主记录型与成员记录型重合。 例如,在雇员关系上定义递归系型 supervison,建立部门主任 与其所有下属之间的联系。

C24

Page 31: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

W

一对多

一对多

雇员 E

项目 P

雇员与项目的多对多联系

W1(E2,P1,30)W2(E2,P2,10)W3(E1,P2,40)W4(E3,P2,20)W5(E3,P4,10)W6(E3,P3,10)W7(E4,P3,40)

E1E2E3E4

P1P2P3P4

C25

M:N 联系的表示两个记录型之间的多对多联系可以用两个系型和一个附加的记录型表示。例如一个项目由某几个雇员负责,而一个雇员可参与几个项目,于是在雇员表与项目表之间存在一个 M:N 联系。为了表示这个 M:N 联系,引进表 W(e,p,h) 记载雇员 e 在项目 p 的工作时数 h ,形成两个 1:N 联系型 E_W 和 P_W 。 W(e,p,h) 称为连接记录型,它和系型 E_W 、 P_W 构成了雇员表与项目表之间的 M:N 联系。

Page 32: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

数据库管理系统D

BM

S

子模式 子模式

应用程序用主语言 (COBOL 等 )处理内存数据和 IO 操作用 DML访问数据库

程序工作区

模式

存储模式 数据库

应用程序用主语言 (COBOL 等 )处理内存数据和 IO 操作用 DML访问数据库

程序工作区

DDL 定义子模式及子模式到模式的映射

DDL 定义模式及模式到存储模式的映射

C26 DBTG系统概述DBTG 系统是美国 CODASYL 的 DBTG提出的网状系统方案,是许多实际的网状数据库系统的设计基础,其结构是子模式、模式和存储模式的三级模式结构。

Page 33: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

DBTG 模式定义语言DBTG 数据库模式与前边的网状数据库模式一致,是记录型和系型的集合。数据库划分为一个以上的命名域(area) ,允许一个域含多个记录,也允许一个记录跨多个域,但一个数据项只能在一个域中。 DBTG允许一个记录型(1) 同时作为几个系的成员记录型;(2) 同时作为几个系的系主记录型;(3) 作为系 A 的成员记录型,兼作系 B 的系主记录型;(4) 作为某系的系主记录型,兼作该系的成员记录型;此外, DBTG允许两个记录型之间有多个系,并对数据库的每条记录指定一个用于唯一标识的数据库码,这也是用户访问记录的逻辑地址。DBTG 的数据库模式由下述四部分组成: (1) 模式说明部分 (2) 域定义部分 (3) 记录型定义部分 (4) 系型定义部分

C27

Page 34: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C27a

模式说明语句的功能是定义数据库模式的名字,其语法格式是 SCHEMA NAME IS < 模式名 >在下边的例子中,第一句就是模式说明语句,表明所定义的数据库模式取名为 company.

schema name is company area name is a1 area name is a2 record name is employee location mode is calc hash_emp using ssn within a1

Page 35: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

域定义语句的功能是定义域的名字,其语法格式是 AREA NAME IS < 域名 >在下边的例子中,第 2 、 3句就是域定义语句,表明所定义的两个域分别取名为 a1 和 a2. schema name is company area name is a1 area name is a2 record name is employee location mode is calc hash_emp using ssn within a1 一个库模式至少有一个域,域名必须唯一。

C27b

Page 36: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C27c记录型定义语句的功能是定义模式中的记录型及其中的数据项,其语法格式是(1) RECORD NAME IS < 记录型名 > 用于定义记录型的名字。(2) LOCATION MODE IS X 用于定义记录的存储方式,下边是句子的三种用法: location mode is direct 采用按数据库码直接存取数据记录的方式 location mode is calc <hash函数过程名 > using < 数据项名 > 采用 hash文件存取数据库方式 location mode is via < 系名 > set 记录与指定系名的系主记录靠近存放。(3)WITH IN < 域名 > 当记录存储采用 via 方式时, 使用这句指出系主记录型所在的域。(4)DATA ITEM IS < 数据项名 > TYPE IS < 类型 > 定义数据项的名字、长度和类型例子

Page 37: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

记录型定义的两个例子

record name is projectlocation mode is calc hash_prjt using namewithin a2data item is name type is character 15data item is number type is integer 8data item is locations type is character 15

record name is supervisorlocation mode is direct within a1data item is supevisr_ssn type is character 9

记录型的名为 project在 name建立 hash文件记录型所在的域是 a2数据项 name 的类型是 c15数据项 numb 的类型是 i8数据项 loca 的类型是 c15

C27c1

记录型的名为 supervisor按数据库码直接存取记录记录型所在的域是 a1数据项 supevisr_ssn 的类型是 c9, 长度为 9 的字符型

Page 38: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C27d系定义语句的功能是定义系的特征。其语法格式是(1) SET NAME IS < 记录型名 > 用于定义系的名字。(2) MODE IS X 定义系主记录和各成员记录组织方式: mode is chain 链表方式。 mode is pointer_array 系主指向各成员的指针阵列方式。

(5)MEMBER IS < 记录型名 > X Y 用于定义成员记录型 X 是存在方式的选择,取值含义是: mandatory 成员记录总在某系实例中 . optional 成员记录可脱离系实例, 也可随时进出系实例。 fixed 成员记录必须固定存在于 某个系实例 Y 是成员约束的选择,取值含义是: automatic 新成员自动连到某系实例 . manual 用户可用连接命令将成员 记录连接到某系实例 .

X值 新成员的插入位置First 最前边Last 最后边Next 当前成员的后边Prior 当前成员的前边

(3)ORDER IS X 定义系序,即新成员在系实例插入位置

(4)OWNER IS < 记录型名 > 用于定义系主记录型(6)SET OCCURRENCE SELECTION IS THRU X若 X 是 current of set 则选当前实例 ;若 X 是 owner using< 数据项名表 > 则用 hash 方法选择系实例 .

Page 39: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

employee 1name ssn birthdate address sex salary deptname

works_on 4essn pnumber hours

dependent 6empssn name sex birthdate relationship

department 2name number location mgrstart

project 3name number location

Supervisor 5 supervisor_ssn

6:e_workson

9:dependents_of

5:p_workson 3:controls

1:all_dept

system

2:works_for4:manages

7:supervisees

Company 网状数据库模式实例

8:a_supervisor

C27e

该实例的模式定义 C27e.doc

Page 40: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

子模式定义语言C28

子模式是模式的逻辑子集,用于满足应用程序的数据需要。在一个模式上可定义多个子模式,子模式之间可以有重迭,一个子模式可以为多个应用程序共享,但每个应用程序只能使用一个子模式。 DBTG 的子模式及子模式到模式的映象用子模式定义语言描述。子模式定义语言是面向宿主语言。下边以面向 COBOL语言的子模式定义语言为例。子模式定义由两部分组成:

1. 子模式首部 2. 子模式结构定义部分 3 子模式结构定义例子

Page 41: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

1. 子模式首部

子模式首部用于说明子模式依赖的模式的名称, 并定义子模式的名称。

格式是 SUB_SCHEMA IDENTIFICATION DIVISION SUB_SCHEMA NAME IS < 子模式名 > OF SCHEMA < 模式名 >

例如, SUB_SCHEMA IDENTIFICATION DIVISION SUB_SCHEMA NAME IS ded OF SCHEMA company说明的子模式的名称是 ded ,它依赖的模式的名称是 company.

C28a

Page 42: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

C28b

段 功能 语句格式换名段 定义子模式中域名、 rename section 系型名、记录型名、 数据项名与模式中相 应名的对应关系。域段 语句 (A)把模式指定的 area section copy < 域名组 > 域复制到子模式; (A) 语句 (B)把模式所有的 area section copy all areas 域复制到子模式。 (B)记录型段 定义子模式所使用到 record section < 记录型名 > 的模式中的记录型。 < 数据项名 >系型段 语句 (A)把模式指定的 copy < 系名组 > (A) 系型作为子模式系型; 语句 (B)把模式所有的 copy all sets (B) 系型作为子模式系型。

2. 子模式结构定义部分 : 描述子模式数据结构,包含四段 :

Page 43: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

子模式 DED的定义sub_schema identification divisionsub_schema name is DED of schema COMPANYarea section copy a1,a2 && 域复制record section &&映射到模式的记录型 copy employee record copy department record copy depandent recordset section &&映射到模式的系型 copy works_for,manages,dependent_of

Employee 1name ssn birthdate address sex salary deptname

Dependent 6empssn name sex birthdate relationship

Department 2name number location mgrstart

9:dependents_of 2:works_for

4:manages

C28c 网状数据库模式 Company 的子模式 DED

Page 44: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

五 .DBTG的数据操纵语言1. 程序运行环境 下边介绍的是与 COBOL语言对应的 DML. 每个运行中的应用程序的运行单位 (run-unit)是指程序及数据的动态执行过程。多个用户执行一个程序对应着多个运行单位。每个运行单位有一个用户工作区 (UWA),存放当前状态、记录样板格式和系统通信单元。

C29a

运行单位当前值记录型 R1

Rk

系型 S1

Sm

域 A1

An

记录型 数据项R1 I1 I2 I3

R1

R1

AREA NAMERECORD NAMEERROR STATUSERROR SETERROR RECORDERROR AREAERROR COUNTERROR TYPE

当前状态

记录样板格式建立用户程序的IO区,按子模式结构分配缓冲区 系统通信单元

运行状态反馈信息

当前记录的数据库

Page 45: 第三章 层次与网状数据库系统 层次与网状数据库系统是最早出现的数据库系统,在 七十年代和八十年代初非常流行,在当时的数据库系

2. 数据操纵语言C29b

命令 操作对象 主要功能find 记录 查找指定记录使之成为当前记录get 记录或数据项 读当前记录或数据项到 UWA样板空间store 记录 输入记录modify 记录或数据项 修改当前记录或数据项 erase 记录 删除当前记录connect 系 把当前记录作为成员插入当前系实例reconnect 系 改变当前记录的成员关系disconnect 系 把当前记录从当前系实例删除ready 域 打开域,说明并发控制 方式finish 域 关闭域