ImageVerifierCode 换一换
格式:DOCX , 页数:55 ,大小:214.17KB ,
资源ID:1274632      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1274632.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第15章DB2扩展.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第15章DB2扩展.docx

1、第15章 DB2扩展第15章 DB2扩展运行于大型机上的数据库通常有两种,分别为DB2和IMS。其中DB2较IMS更为常用。由于COBOL程序主要用于处理大量的商务数据,因此必然会涉及到数据库的应用。同时,DB2本身也可作为一块独立的行业领域。15.1 基本概念DB2作为一种独立的数据库,与Oracle数据库是属于一个概念范畴的。DB2不仅可用于大型机,也可用于其他一些操作系统平台,如Unix、Windows等等。DB2本身的知识十分庞大,此处主要对其在大型机上的应用进行简要的讲解。15.1.1 关系数据库的概念首先需要明确的是,DB2数据库在结构和原理上是属于关系数据库的。因此,在学习DB2

2、之前,有必要先了解一下关系数据库的概念。关系数据库也称关系型数据库,是数据库结构原理发展阶段的第三个模型。关系型数据库的前一个模型为层次型数据库。IMS数据库便属于层次型数据库。下面首先给出一个层次型数据库的基本结构,以便通过对比了解关系型数据库的特点。层次型数据库结构如图15.1所示。图15.1 层次型数据库结构由此可见,层次型数据库的结构是通过层级之间的指针建立数据的关系。层次型数据库的结构实际上与数据结构中的树比较类似。层次型数据库在数据的管理与查找上并不是很方便。同时,在层次型数据库中也会存在比较多的数据冗余。而关系型数据库则相对于层次型数据库在各方面都有了很大的改善。在关系型数据库中

3、主要是以表(Table)为单位组织数据的。需要注意的是,此处所说的表是数据库上的概念,同前面讲解的COBOL中的表是不同的。关系型数据库中表的结构如图15.2所示。图15.2 关系型数据库中的表可以看到,关系型数据库中的表实际上是由不同的行和列所组成的。关于表中的行和列分别具有以下属性。 关系数据库表中的行:对应一条完整的数据记录。各条数据记录都包含有相同数目的属性,每一属性对应该行中的一个单元格。 关系数据库表中的列:对应各条数据记录中相同类型的属性。每一列中所包含的各个数据项分别描述不同行中数据记录的相关属性。在关系数据库的表中,还有一个很重要的概念,就是主关键字(Primary Key)

4、的概念。主关键字实际上是每条记录中的一个属性,有时也称作主键或主码。主关键字是人为指定的,记录中的任何属性都可以作为主关键字。不过,通常是将比较有明显特征的属性作为主关键字的。例如,对于以上示例中的表,通常是将学院编号作为主关键字。关系数据库中包含有多张表,每张表之间通过其中的属性数据项建立直接或间接的联系。例如,对应以上数据库中的表,图15.3为其中的另一张表。图15.3 关系数据库中的另一张表对于这张表,通常将课程编号作为主关键字。同时,注意到在该表中也存在学院编号这一属性。由于学院编号为前一张表中的主关键字,因此学院编号属性在此处属于外来关键字(Foreign Key)。通过该外来关键字

5、,可以在以上两张表之间建立起联系。建立在表的基础上,在关系数据库中还存在视图(View)和索引(Index)的概念。视图相当于一张虚拟的表。通常将多表连接查询的结果作为视图,以方便数据查询。而索引则是直接建立在表上的,相当于一个目录,也是主要用于方便数据查询的。对数据库的处理过程是以事务为单位进行的。事务是指作为单个逻辑工作单元执行的一系列操作。这些逻辑工作单元需要具有以下4个属性,并统称为ACID特性。 原子性(Atomicity):事务中的所有操作要么全做,要么全不做。 一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态,变为另一个一致性状态。 隔离性(Isol

6、ation):一个事务的执行不能被其他事务干扰。 持续性(Durability):一个事务一旦提交,其对数据库中数据的改变就应该是永久的。最后,对于关系数据库,还应该大致了解一下关于范式的概念。通常情况下在关系数据库中共有5种范式,目前最高可达到6种。不过一般情况下,数据库只需满足第三范式就足够了。下面对前3种范式分别介绍如下。 第一范式(1NF):指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。例如,对于以上第一张表而言,是不能把学院编号和学院名称归并为一列的。 第二范式(2NF):满足第二范式的数据划分首先必须满足第一范式。此外,第二范式同时要求实体的属性完全依赖于主关键

7、字。例如,若将第二张表中的课程学分作为主关键字,则该表将不满足第二范式。因为存在着相同学分的课程,课程名称等属性并非根据课程学分而定的。 第三范式(3NF):满足第三范式的数据划分首先也必须满足第二范式。此外,第三范式同时要求实体中的属性不依赖于其他非主属性。例如,在第二张表中,是不能将第一张表中的非主属性如院系主任等包含进来的。可以看到,范式的划分主要是根据不同的数据依赖而来的,并且层级越高的范式要求越严格。在数据库设计中,遵照范式进行的目的主要是为了减少或避免以下现象的发生。 数据冗余 插入异常 更新异常 删除异常15.1.2 DB2简介DB2是大型机上主要应用的一种关系数据库。学习DB2

8、,首先应该了解DB2中主要包含有哪些系列的产品。其中每一个DB2产品对应于一个不同的系统平台。这些产品分别如下。 OS/390与z/OS平台下的DB2。 VSE与VM平台下的DB2。 iservers下的DB2。 Windows平台下的DB2。 Unix平台下的DB2。其中以上前两种产品都属于运行于大型机上的产品。大型机的型号可以为S/390或者z Series。这两种产品实际上是DB2应用得最多的产品,尤其是第一种。对DB2数据库进行访问的模式通常为客户机/服务器模式,即通常所说的C/S模式。其中服务器主要包括SQL应用程序接口(API),以及数据库引擎(Database Engine)。关

9、于SQL,为数据库中最基本的一项操作语言,将在后面的章节中对其进行详细的讲解。图15.4反映了对DB2进行访问的客户机/服务器模式。图15.4 DB2的C/S模式图上图中的DRDA(Distributed Relational Database Architecture)是指分布式关系数据库体系结构。而DB2正是属于分布式关系数据库的。对于应用于大型机中的DB2,首先需要了解其物理环境。图15.5为DB2在大型机中的物理环境,为DB2学习中最常见到的一个图。图15.5 DB2在大型机中的物理环境此外,DB2作为数据库,还应了解一下关于数据库管理系统的基本概念。数据库管理系统即DBMS(Data

10、base Management System)。不同数据库的DBMS功能是不同。关于DB2的DBMS,主要有以下几项功能。 对关系数据库中表的基本管理(Tables) 提供优化功能(Optimizer) 提供锁的管理功能(Lock Manager) 可进行日志记录(Logging) 提供持续操作(Continuous Operation) 提供安全性(Security) 提供数据的完整性(Integrity) 提供数据的可恢复性(Recovery)从事关于DB2不同方面的工作,将会用到DB2不同方面的内容。例如,对于数据库管理员DBA和应用程序开发人员所主要接触到的DB2的内容就不同。对于开发

11、人员而言,主要需要关注DB2以下这几方面的内容。 DB2 SQL性能分析(SQL Performance Analyzer) DB2 表的编辑(Table Editor) DB2 绑定管理(Bind Manager) DB2 路径检查(Path Checker) DB2实用程序(Utilities) DB2 请求监控(Query Monitor) DB2管理工具(Administration Tool) DB2 Web请求工具(Web Query Tool)最后,利用DB2数据库进行开发时,通常需要遵循一定的步骤进行。遵循这些步骤,主要是为了规范化开发流程,同时也可减少一定的项目预算风险。这些

12、步骤依次如下。(1)建立测试环境(2)建立SQL原型(3)绑定Packages和Plans(4)编写SQL语句(5)确认目标变化(6)查询目标属性(7)应用性能分析(8)编辑表中数据(9)载入实际数据注意:此处是指整个利用DB2进行开发的流程,而并非指单纯地在COBOL程序中如何访问DB2。关于如何在COBOL的源代码中访问DB2,将在后面的章节中详细讲解。15.1.3 DB2的组织结构及创建步骤通过前面的讲解可以知道,DB2数据库对数据的组织与管理是以表为基本单位的。而在DB2系统中,表是存放在表空间(Table Space)之中的。一块表空间可以有一个到多个表。表空间则存放在数据库(dat

13、abase)之中。一个数据库也可以有一个到多个表空间。需要注意的是,此处所说的数据库是一个数据空间上的概念。图15.6为此结构特征。图15.6 DB2的数据组织结构同时,DB2在硬件平台上还将涉及到存储组(Storage Group)和卷(Volume)。结合前面所讲解的视图和索引的概念,DB2及其硬件平台上中各单元的关系,如图15.7所示。图15.7 DB2及硬件平台上各单元的关系关于上图所示的存储组,实际上属于一组直接访问存储设备(DASD)上的卷。这些DASD卷用于分配DB2中的表空间及索引空间。在DB2中,所有数据库服务进程的集合被称作一个Instance。一个Instance中有多个

14、数据库,以及一个数据库管理配置文件(DBM CONFIG FILE)。关于Instance,通常主要有一下几种操作。 db2icrt:建立一个instance(并不激活)。 db2ilist:将多个instance进行列表。 db2idrop:删除一个instance。 db2start:启动一个instance(进行激活)。同系统的IPL(Initial Program Loading)类似,DB2数据库的创建也是需要经历一定的步骤的。这些步骤依次如下。(1)创建数据库存储空间。(2)建立数据字典(catalog)及数据库恢复日志(recovery log)。(3)建立数据库配置文件(con

15、figuration file),并配置相应的默认值。(4)绑定(bind)数据库实用程序(utilities)到数据库中。(5)定义3个特殊的表空间:SYSCATSPACE、TEMPSPACE、USERSPACE。需要注意的是,对于这3个表空间,用户只能管理其中的USERSPACE。(6)将数据库编目在本地数据字典与系统数据字典上,以用于用户查询。其中本地数据字典在DB2所设的硬盘上。(7)分配代码集(code set)、区域信息(territory)、以及比较对照顺序(collating sequence)。其中区域信息如当地的日期、时间等等。(8)建立SYSCAT、SYSFVN、SYSI

16、BM、SYSSTAT、以及scheme。(9)建立优先级(privilege)。关于上面提到的scheme,主要需要了解scheme name的概念。关于scheme name,实际上是指实体名称中的高位标志字段(high-level qualifier)。该字段主要用于标志整个名称。当建立一个用户名时,必然会产生一个同名的scheme。例如,以下将scheme设置为了“PAYROLL”。SET CURRENT SCHEME = PAYROLL则在此设置的基础上,以下第一条SQL语句在实际执行中将相当于第二条SQL语句。SELECT * FROM EMPLOYEESELECT * FROM P

17、AYROLL.EMPLOYEE最后,在大型机中实际运行含有DB2的程序,并查看运行结果,主要是通过SPUFI产品进行的。SPUFI(SQL Processor Using File Input)即使用到文件输出的SQL处理器。使用SPUFI处理DB2程序的流程如图15.8所示。图15.8 SPUFI在DB2中的应用15.2 DB2的基本应用DB2在COBOL中的应用与普通的COBOL编码是不同的。涉及到DB2的代码,实际上是以COBOL为宿主语言,并嵌入到COBOL代码中编写的。同时,在编码之后,将其编译连接为可执行程序,也是需要经历特定的过程的。以下分别对这两方面的内容进行讲解。15.2.1

18、 DB2在COBOL中的编码由于DB2作为关系数据库,因此对其操作仍然主要是通过SQL语句进行的。SQL(Structured Query Language)即结构化查询语言的意思,任何关系数据库通常都会用到。关于SQL语句,将在后面的章节中详细讲解。此处只考虑在COBOL中是如何利用SQL语句访问和操作DB2数据库的。在COBOL中调用SQL语句的格式如下。EXEC SQLSQL statementsEND-EXEC.可以看到,在COBOL中调用SQL语句主要是通过EXEC SQL和END-EXEC对其进行指定的。这两个命令之间便为通常意义的SQL语句。此处的SQL语句实际上可以看作是以CO

19、BOL为宿主语言,并嵌入到COBOL源码中编写的。同时,还应了解一下SQLCA的基本概念。SQLCA(SQL Communication Area)即SQL通信区域的意思。SQLCA主要用于实现COBOL应用程序和DB2数据库之间的交互。当COBOL程序中需要访问或操作DB2数据库时,需要在工作存储节中将SQLCA包含进来。并且,还应将数据记录也相应地包含进来。相关代码如下。DATA DIVISION.WORKING-STORAGE SECTION.EXEC SQL INCLUDE SQLCA END-EXEC.EXEC SQL INCLUDE TESTRCD END-EXEC.执行SQL语句

20、后,将会得到一个称作SQLCODE的返回码。SQLCODE实际上存放于SQLCA之中。当SQLCODE为0或者100时,表示该条SQL语句执行成功。当SQLCODE为负数时,则表示该条SQL语句在执行时出现错误。实际上,COBOL程序中关于DB2方面的代码几乎都是涵盖在EXEC SQL和END-EXEC之中的。以下为一段应用到DB2的完整的COBOL程序代码。此处仅需通过该段代码对DB2在COBOL中的应用有一个大致的印象。相应代码如下。IDENTIFICATION DIVISION.PROGRAM-ID. PGMDB99.AUTHOR. XXX.* ENVIRONMENT DIVISION.

21、* DATA DIVISION. WORKING-STORAGE SECTION.EXEC SQL INCLUDE SQLCA END-EXEC.EXEC SQL INCLUDE EMP99RCD END-EXEC. 01 ERROR-MESSAGE.03 SQL-CODE PIC X(10).03 ERR-LEN PIC S9(4) USAGE COMP VALUE IS +560.03 E-MESS1 PIC X(80).03 E-MESS2 PIC X(80).03 E-MESS3 PIC X(80).03 E-MESS4 PIC X(80).03 E-MESS5 PIC X(80).0

22、3 E-MESS6 PIC X(80).03 E-MESS7 PIC X(80).03 E-MESS8 PIC X(80) VALUE IS FIX AND RETRY.03 REC-LEN PIC S9(8) USAGE COMP VALUE IS +80. 01 WRKFLDS.03 RECKEY PIC X(6) VALUE IS 000000.03 DBERR-SW PIC X(1) VALUE IS N.03 K PIC S9(4) COMP.03 OUTPUT-MSG PIC X(80).* PROCEDURE DIVISION.EXEC SQL DECLARE EMP CURSO

23、R FOR SELECT * FROM TSOUD99.EMPLOYEEEND-EXEC.EXEC SQL OPEN EMP END-EXEC.MOVE SQLCODE TO SQL-CODEIF SQLCODE 100 MOVE LOW-VALUES TO DCLEMPLOYEE EXEC SQL FETCH EMP INTO :DCLEMPLOYEE END-EXEC MOVE SQLCODE TO SQL-CODE IF SQLCODE = 100 DISPLAY I2: SQL-CODE DISPLAY END OF DATA GO TO CLOSING ELSE DISPLAY K

24、= DCLEMPLOYEE END-IFEND-PERFORM.* END OF LOOP * CLOSING.EXEC SQL CLOSE EMP END-EXEC.IF SQLCODE 0 GO TO DBERR-RETURNEND-IF.DISPLAY PROGRAM ENDED NORMALLY!.STOP RUN. DBERR-RETURN.MOVE SQLCODE TO SQL-CODE.DISPLAY SQL-CODE.DISPLAY PROGRAM ABEND!.CALL DSNTIAR USING SQLCA ERROR-MESSAGE REC-LEN.DISPLAY ERR

25、OR-MESSAGE.GO BACK.以上程序实际上首先定义了一个DB2中的游标(CURSOR)。该游标的名称为EMP。程序通过该游标将输入数据集TSOUD99.EMPLOYEE中的数据记录选择并输出到显示屏上。数据的输入及输出都需要借助SPUFI产品进行。此外还需注意的是,在嵌入到EXEC SQL与END-EXEC之间的DB2相关变量是不能有中划线的。不过这些变量却可以包含下划线。这点同COBOL正好相反。COBOL中的变量可以包含中划线,但却不可以有下划线。15.2.2 含DB2的COBOL编译过程涉及到DB2的COBOL程序的编译过程相对单纯的COBOL程序要复杂一些。图15.9反映了其

26、编译及连接的大体过程。图15.9 涉及DB2的COBOL程序编译过程实际上,在应用程序中主要是通过SQL语句访问和操作DB2数据库的。因此,此处所说的涉及到DB2的COBOL程序通常也可以看作是含有SQL语句的COBOL程序。由图15.9可知,对此类程序在编译前,首先要进行一个预编译。预编译所起的作用是将程序的源代码分为以下两部分,并对其分别进行不同的处理。 SQL语句部分:使用DBRM对其进一步处理。 COBOL代码部分:使用COBOL编译器对其进一步处理。关于DBRM(Database Request Module),也就是数据库请求模块的意思。DBRM实现的功能主要有以下两条。 绑定Pa

27、ckage 绑定Plan此处所说Package即SQL语句处理之后所生成的结果,并存放在DB2之中。实际上,Package同COBOL代码在编译连接后,生成的加载模块(Load Module)是比较类似的。Package的集合在DB2中被称作collection。而与Package相应的Plan正是反映了DB2搜索collection的顺序。上图所示的DB2 Catalog在前面的DB2物理环境(图15.5)中也曾出现过。DB2 Catalog实际上也就是DB2的数据字典。所谓数据字典,也就是一张系统表,用来存放数据库所用的有关信息。对于用户而言,这张表是只读的。DB2 Directory的功

28、能与DB2 Catalog在某种意义上比较类似。不过DB2 Directory的执行性能要比DB2 Catalog更加好。DB2 Directory是以VSAM文件的形式组织存放数据的。在DB2 Directory中共包含5个结构(Structure),分别如下。 SYSUTILX:用于存放实用程序(Utilities)。 SYSLGRNX:存放活动的(active)及归档的(archive)日志。 SPT01:存放Plan。 SCT02:存放Package。 DBD01:存放描述数据库的相关信息。此外,当DB2 Catalog和DB2 Directory中的数据不一致时,需要使用REPAIR

29、 DBD语句进行同步。当将二者进行同步时,将以DB2 Directory中的数据为准。上图中的DCLGEN(Declarations Generator)即声明生成程序。DCLGEN在DB2中的应用主要有以下两条。 产生通过SQL语句声明的表; 产生通过COBOL代码声明的对应于表或视图的主变量。上图中的DSNHLI则是COBOL程序与SQL语句的接口。DSNHLI中含有相关参数,并在COBOL代码的连接编辑(Link Editor)步骤中参与进来。15.3 常用SQL语句前面多次提到,在COBOL应用程序中对DB2数据库进行操作最主要是通过SQL语句进行的。SQL语句通常可以分为3种类型,分

30、别为DML、DDL以及DCL。下面分别对这3种类型的SQL语句予以讲解。15.3.1 DML类别的SQL语句DML(Data Manipulation Language)即数据操作语言的意思。DML类别的SQL语句通常主要有以下几种。 SELECT语句 INSERT语句 UPDATE语句 DELETE语句DML类别的SQL语句实际上是作为应用程序开发人员用得最多的一类SQL语句。下面分别对以上这4种语句进行讲解。1SELECT语句SELECT语句主要用于数据的查询。SELECT语句是以上4种DML类别的SQL语句中用得最多的一条。同时,SELECT语句也是在整个SQL语句里用得最多的一条。下面首先给出DB2中的一张表,并设表名为Q.COURSE,如图15.10所示。图15.10 Q.COURSE表基于以上表中数据,使用SELECT语句对其最基本的操作便是全选表中所有的数据。实现全选的语句如下。SELECT *FROM Q.COURSE在实际应用中,更多的情况是只选择表中的部分数据,如特定数据记录中的特定属性。例如,以下SELECT语句将选择由Simon任课的所有课程的名称。SELECT NAMEFROM Q.COURSEWHERE INSTRUCTOR = Simon以上语句执行后,将选择出以下数据。JCLJES2由此可见,使用SELECT语句进行数据查询选择时

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2