全国计算机四级考试复习资料分析_第1页
全国计算机四级考试复习资料分析_第2页
全国计算机四级考试复习资料分析_第3页
全国计算机四级考试复习资料分析_第4页
全国计算机四级考试复习资料分析_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全国计算机四级考试复习资料数据库(六)一、数据模型数据模型的三要素1)数据结构 数据结构是所研究的对象类型( Object Type)的集合。这些对象和对象类型是数据库的组成成分。一般可分为两类 : 一类是与数据类型、内容和其它性质有关的对象 ; 一类是与数据之间的联系有关的对象。前者如网状模型中的数据项和记录,关系模型中的域、属性和关系等。后者如网状模型中的关系模型( set type )。在数据库领域中,通常按照数据结构的类型来命名数据模型,进而对数据库管理系统进行分类。如层次结构、网状结构和关系结构的数据模型分别称作为层次模型、网状模型和关系模型。相应地,数据库分别称作为层次数据库、网状

2、数据库和关系数据库。2)数据操作 数据操作是指对各种对象类型的实例(或值)所允许执行的操作的集合,包括操作及有关的操作规则。在数据库中,主要的操作有检索和更新(包括插入、删除、修改)两大类。数据模型定义了这些操作的定义、语法(即使用这些操作时所用的语言) 。数据结构是对系统静态特性的描述,而数据操作是对系统动态特性的描述。两者既有联系,又有区别。3)数据的约束条件 数据的约束条件是完整性规则的集合。完整性规则是指在给定的数据模型中,数据及其联系所具有的制约条件和依存条件,用以限制符合数据模型的数据库的状态以及状态的变化,确保数据的正确性、有效性和一致性。概念模型数据模型是数据库系统的核心和基础

3、。每个 DBMS软件都是基于某种数据模型的。为了把现实世界中的具体事物或事物之间的联系表示成DBMS所支持的数据模型, 人们首先必须将现实世界的事物及其之间的联系进行抽象,转换为信息世界的概念模型; 然后将信息世界的概念模型转换为机器世界的数据模型。也就是说,首先把现实世界中的客观对象抽象成一种信息结构。这种信息结构并不依赖于具体的计算机系统和DBMS。然后,再把概念模型转换为某一计算机系统上某一DBMS所支持的数据模型。因此,概念模型是从现实世界到机器世界的一个中间层次。现实世界的事物反映到人的大脑之中,然后人们开始认识这些事物,经过选择、命名、分类和组织等抽象工作之后形成概念模型,并进入到

4、信息世界。?用户( user ) 关心的是现实世界中的事物、事物的属性及其相互关系。例如,用户可能关心他的顾客及其属性,如顾客地址、银行帐号等等。用户也关心自己的定货帐目,如谁订的货、订的什么和订多少等等。?系统分析员( analyst ) 同样也关心现实世界,但是系统分析员需要分析用户的信息需求。作为需求分析的结果,分析员必须以文档的形式对需求进行结构化的描述; 这个文档就是信息模型。?实体( Entity) 实体是构成数据库的基本元素。实体是指一个存在的东西以区别这个东西所具有的属性和这个东西与其它东西的联系。实体可以是人,也可以是物; 可以是实际对象,也可以是概念; 可以是事物本身,也可

5、以是指事物之间的联系。?属性( Attribute) 一个实体可以由若干个属性来刻画。属性是相对实体而言的,是实体所具有的特性。?关键字( Key) 能唯一地标识实体的属性的集合称为关键字(或码)。?域( Domain) 属性的取值范围称作域。?实体型( Entity Type) 一类实体所具有的共同特征或属性的集合称为实体型。一般用实体名及其属性来抽象地刻画一类实体的实体型。?实体集( EntitySet ) 同型实体的集合叫实体集。例如,学生就是一个实体集。实体集的名即是实体型。对于学生和(学号,姓名,年龄,系,年级)均是实体型,而学生是对实体型(学号,姓名,年龄,系,年级)所起的名称,两

6、者是指同一客观对象。但本科生和研究生可以为相同实体型,而实体集不同。?联系(Relationship) 现实世界的事物之间是有联系的。一般存在两类联系: 一是实体内部的组成实体的属性之间的联系,二是实体之间的联系。在考虑实体内部的联系时,是把属性看作为实体。一般来说,两个实体之间的联系可分为三种:(1)一对一( 11)联系若对于实体集A 中的每一个实体,实体集B 中至多有唯一的一个实体与之联系,反之亦然,则称实体集A 与实体集 B 具有一对一联系,记作11。(2)一对多(1n) 联系 若对于实体集A 中的每个实体, 实体集 B 中有 n 个实体(n0) 与之联系 ; 反之,对于实体集 B 中的

7、每一个实体,实体集A 中至多只有一个实体与之联系,则称实体集A 与实体集 B 有一对多联系,记为 1n。相应地有多对一( n1)联系多对一联系,从本质上说,是一对多联系的逆转。其定义同一对多联系类似,不再赘述。(3)多对多( mn)联系 若对于实体集 A 中的每一个实体,实体集B 中有 n 个实体( n0)与之联系 ;反之,对于实体集 B 中的每一个实体,实体集A 中也有 m个实体( m0)与之对应,则称实体集A 与实体集 B 具有多对多联系,记作 mn。实质上,多对多联系是任意一种联系。另外,同一实体集内的各个实体间也可以有各种联系。 概念模型的表示方法最常用的是实体一联系方法(Entity

8、-RelationshipApproach ),简称 E-R 方法。该方法是由 P.P.S.Chen在 1976 年提出的。 E-R 方法用 E-R 图来描述某一组织的概念模型。在这里仅介绍E-R 图的要点。在E-R 图中 :1)长方形框表示实体集,框内写上实体型的名称。2)用椭圆框表示实体的属性,并用有向边把实体框及其属性框连接起来。3)用菱形框表示实体间的联系,框内写上联系名,用无向边把菱形框及其有关的实体框连接起来,在旁边标明联系的种类。如果联系也具有属性,则把属性框和菱形框也用无向边连接上。3. 三种主要的数据模型实际 DBMS所支持的数据模型主要有三种?层次模型( Hierarchi

9、cal Model):?网状模型( Network Model )?关系模型(RelationalModel)其中,关系模型是当前DBMS所支持的数据模型的主流。90 年代运行的DBMS几乎都是基于关系模型的。层次模型和网状模型统称为非关系模型。非关系模型的结构可以和图论中的图相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用。但是最近,层次模型在研究面向对象的 DBMS中已得到重视。在关系模型中,数据在用户的观点中(或在用户视图中)的逻辑结构是一张二维表( Table )。?关系( Relation),对应于平常讲的一张表。?元组( Tuple ),表中的一行。?属性( Att

10、ribute),表中的一列称为一个属性,给每一列起一个名,称为属性名。这一列或这个属性所有可能取的值的集合称为这个属性的值域(Domain),值域中的一个元素叫做这个属性的值。?主关键字( Primary Key Attribute或 Primary Key ),是指能唯一标识一个元组的一个或一组属性。?分量( Attribute value),是指元组中的一个属性值。?关系模式( Relational Schema),是对关系的描述,一般用关系名(属性名1,属性名2,属性名n)来表示。同层次模型和网状模型相比较,关系模型具有下列特点:1)概念单一 在关系模型中,无论是实体还是实体之间的联系都

11、用关系来表示。在关系模型中,在用户的观点中,数据的逻辑结构就是表,也只有这唯一的概念。在非关系模型中,用户要区分记录型与记录型之间的联系两个概念 ; 当环境复杂时,数据结构异常复杂,难以掌握。而关系模型,由于概念单一,可以变复杂为直观、简单,易学易用。2)规范化 所谓关系规范化是指在关系模型中,每一个关系都要满足一定的条件要求。这些条件被称为规范条件。对于关系,一个最基本的规范条件是,要求关系中的每一个属性(或分量)均是不可分的数据项; 也就是说不允许表中有表,表是不可嵌套的。3)在关系模型中,用户对数据的操作的输入和输出都是表,也就是说,用户通过操作旧表而得到一张新表。总之,关系模型概念简单

12、,结构清晰,用户易学易用,有严格的以数学为基础的关系理论作指导,便于 DBMS的实现。基于关系的 DBMS简化了应用程序员的工作,便于数据库应用系统的设计和维护。故此,关系模型自诞生以后就得到了迅速的发展,成为应用最为广泛的、唯一的数据模型。二、数据库系统的结构1. 数据库系统的三级模式结构数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式(external schema),或子模式subschema)或用户模式( user schema ),是指数据库用户所看到的数据结构,是用户看到的数据视图。模式( schema)或逻辑模式( logic schema),是数据库中对全体数据的

13、逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式(internalschema),或存储模式(storageschema),或物理模式(physicalschema),是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。模式描述的是数据的全局的逻辑结构,决定了 DBMS的功能。 外模式涉及的仅是局部的逻辑结构,是模式的子集,是对模式的调用。数据库系统的三级模式是对数据进行三个层次抽象的工具。通过三级模式, 把对数据的具体组织留给DBMS来完成,使得用户能在高层次上处理数据的逻辑结构,而不必关心数据的物理结构。为了实现这三个层次这间的

14、联系,DBMS在沟通三级模式中提供了两个映象:外模式 - 模式映象模式 - 内模式映象1)模式 模式规定了数据库中全部数据的一个逻辑表示或描述形式。模式既不同于内模式,也不同于外模式。它比内模式抽象,不涉及数据的物理结构和存储介质。它与具体的应用程序或高级语言无关。2)外模式 外模式是个别用户的数据视图,即与某一应用有关的数据的逻辑表示。3)内模式 内模式是全部数据库的内部表示或底层描述,是用来定义数据的物理结构和存取方式的。4)二级映象 对于同一个模式, 可以有任意多个外模式。外模式 - 模式的映象定义了某个外模式和模式之间的对应关系。 这些映象的定义通常包含在各自的外模式中。当模式改变时,

15、 外模式 - 模式的映象要做相应的改变,以保证外模式的不变性。这是数据库管理员(DBA)的责任。模式 - 内模式的映象定义了数据逻辑结构和存储结构之间的对应关系。例如,字段的内部表示等。当数据库的存储结构改变时,模式- 内模式的映象也须做相应的修改,以使得模式保持不变性。这仍是DBA的责任。正是由于上述二级映象的功能及其自动实现, 使得数据库系统中的数据具有较高的逻辑独立性和物理独立性,从而大大地方便了用户的使用。(5)概念模式与模式 ANSI 研究组于 1975 年 2 月提出一个临时报告。1978 年提出一个最终报告,称之为ANSI/SPARC 报告,简称为 SPARC报告。 SPARC报

16、告中指出,数据库管理系统应具有三级模式的结构,即概念模式、外模式和内模式。其中外模式和内模多与上面所讲的大致相当。但SPARC报告中的概念模式是指一个组织或部门所对应的现实世界的真实模型,即概念模型。概念模式仅描述实体及其属性和联系,不涉及机器世界的概念。概念模型是信息世界范畴内的信息的结构,而模式是机器世界范畴内的概念模型的逻辑表示。概念模型独立于具体的计算机系统,甚至是和计算机无关的,是一个组织或部门的模型。常用的描述概念模式的方法是E-R 方法。模式是依赖于具体的计算机及其DBMS的。模式通过三种具体模型 : 层次模型、网状模型和关系模型来加以实现。概念模式必须转换成具体的数据模型,然后

17、才能在相应的 DBMS 上实现。概念模型和模式都是描述信息或数据的整体结构的, 然而它们是在不同的抽象层次上加以描述的。概念模型离机器更远,形式化程度低。从远离机器的观点看,概念模型更抽象些,但更接近现实世界。而模式描述使用的是形式化的语言 - 模式 DDL,而概念模型描述使用的是 E-R 图和一些自然语言。使用数据库的计算机系统结构广义地讲,实际上使用数据库的计算机系统由下列几个部分组成的:1)硬件部分 包括主机、外部存储设备、网络设备和电源等。2)软件部分 包括操作系统、 DBMS、编译系统和应用开发工具软件等。(3)人员 包括数据库管理员( Data Base Administrator

18、-DBA),系统分析员( Syst em Analyst)、应用程序员( Application Programmer)和用户( User )。3. 数据库管理系统数据库管理系统 DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过 DBMS。另外, DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。 DBMS的主要功能包括以下几个主要方面:( 1 )数据库的定义功能DBMS 通过提供数据描述语言(也称数据定义语言)(

19、Data Descrip tiveLanguage DDL)来对外模式、 模式和内模式加以描述。然后模式翻译程序把用DDL写的各种模式的定义源码翻译成相应的内部表示,形成相应的目标形式,分别叫目标外模式、目标模式、目标内模式,这些目标模式是对数据库的描述,而不是数据本身。(目标)模式只刻画了数据库的形式或框架,而不包括数据库的内容。这些目标模式被保存在数据字典(或系统目标)之中,作为DBMS存取和管理数据的基本依据。例如, DBMS根据这些模式定义,进行物理结构和逻辑结构的映象,进行逻辑结构和用户视图的映象,以导出用户要检索的数据的存取方式。(2)数据操纵功能 DBMS 提供数据操纵语言( D

20、ata Manipulation Language DML)实现对数据库中数据的一些基本操作,如: 检索、插入、修改、删除和排序等等。DML 有两类 : 一类是嵌入主语言的,如嵌入到 C 或 COBOL等高级语言中。这类 DML语言本身不能单独使用,故此称为宿主型的DML或嵌入式 DML。另一类是非嵌入式语言(包括交互式命令语言和结构化语言),它的语法简单,可以独立使用,由单独的解释或编译系统来执行,所以一般称为自主型或自含型的DML。命令语言是行结构语言,单条执行。结构化语言是命令语言的扩充或发展,增加了程序结构描述或过程控制功能,如循环、分支等功能。命令语言一般逐条解释执行。 结构化语言可

21、以解释执行,也可以编译执行。现在 DBMS一般均提供命令语言的交互式环境和结构环境两种运行方式,供用户选择。DBMS控制和执行DML语句(或 DML程序),完成对数据库的操作。对于自主型的结构化的DML, DBMS通常采用解释执行的方法,但也有编译执行的方法,而且编译执行的越来越多。另外,很多系统同时设有解释和编译两种功能,由用户选其一。对于嵌入型或缩主型DML,DBMS一种提供两种方法 :预编译方法。修改和扩充主语言编译程序(亦称增强编译方法)。预编译方法是,由DBMS提供一个预处理程序,对源程序进行语法扫描,识别出DML语句,并把这些语句转换成主语言中的特殊调用语句。主语言必须和DML有调

22、用接口。这样在连接形成目标时和主语言语句一起形成可执行的目标。3)数据库运行管理 数据库运行期间的动态管理是 DBMS的核心部分,包括并发控制、存取控制(或安全性检查、完整性约束条件的检查) 、数据库内部的维护(如索引、数据字典的自动维护等)、缓冲区大小的设置等等。 所有的数据库操作都是在这个控制部分的统一管理下, 协同工作, 以确保事务处理的正常运行,保证数据库的正确性、安全性和有效性。4)数据库的建立和维护功能 数据库的建立和维护包括初始数据的装入、数据库的转储或后备功能、数据库恢复功能、数据库的重组织功能和性能分析等功能,这些功能一般都由各自对应的实用功能子程序来完成。 DBMS随软件产

23、品和版本不同而有所差异。通常大型机上的DBMS功能最全,小型机上的DBMS功能稍弱点,微机上的DBMS更弱些。但是,目前,由于硬件性能和价格的改进,微机上的DBMS功能越来越全。三、关系数据库的标准语言SQL1.SQL 概述 SQL的英语名称是结构查询语言(Structured Query Language)实际上它的功能包括查询(Query )、操纵( Manipulation)、定义( Definition)和控制( Control)四个方面,是一个综合的、通用的、功能极强的关系数据库语言。SQL支持数据库的三级模式结构。2.SQL 的数据定义功能SQL的数据定义功能包括三部分:定义基本表

24、,定义视图和定义索引。它们是:CREATETABLECREATEVIEW CREATEINDEX DROPTABLEDROPVIEWDROPINDEXSQL的数据定义功能可用于定义和修改模式(如基本表),定义外模式(如视图)和内模式(如索引)。基本表的定义与删除定义基本表的语句格式为 :CREATE TABLE表名 (列名 1 类型 NOT NULL,列名 2 类型 NOT NULL)其他参数 ;其中,任选项“其它参数”是与物理存储有关的参数。根据具体系统的不同而不同。删除基本表的语句为:DROPTABLE表名 ; 删除索引的语句为 :DROPINDEX索引名 ; 删除索引的同时把有关索引的描

25、述也从数据字典中删去。但表的内涵仍存在且其数据外延内容不变。把一个基本表的定义连同表上所有的记录、索引以及由此基本表导出的所有视图全部都删除,并释放相应的存储空间。索引的建立与删除对一个基本表,可以根据应用环境的需要建立若干索引,以提供多种存取方式。通常,索引的建立和删除由 DBA或表的主人(即建立表的人)负责。用户不必也不能在存取数据时选择索引。存取路径的选择由系统自动进行。索引的描述存放在数据字典中。建立索引的语句格式为:CREATE UNIQUE INDEX 索引名 ON基本表名(列名次序 ,列名次序 )其他参数 ; 这里的任选项其他参数是与物理存储有关的参数。索引可以建在一列或几列上。

26、圆括号内是索引列的顺序说明表。其中的任选项次序,指定了索引值排序的次序。可取 ASC(升序)或 DESC(降序)。缺省值为升序。 UNIQUE表示每一索引值只对应唯一的数据记录。 5.SQL 的数据操纵功能SQL的数据操纵功能包括SELECT,INSERT,DELETE和 UPDATE四个语句,即检索和更新(包括增、删、改)两部分工能。检索就是查询。SQL更新语句SQL的更新语句包括修改,删除和插入三类语句。修改( UPDATE)(亦称为更新)修改语句的一般格式为:UPDATE表名SET字段 =表达式,字段=表达式WHERE谓词 ;修改指定表中满足谓词(或条件) 的元组,把这些元组按SET子句

27、中的表达式修改相应属性或字段上的值。删除( DELETE)删除语句一般格式为:DELETE FROM表名WHERE谓词 ;从指定表中删除满足谓词的那些记录。没有 WHERE子句时表示删去此表中的全部记录,但此表的定义仍在数据字典中,只是一个空表。 DELETE只对表外延操作,不对内涵操作。插入( INSERT)插入语句的一般格式为:INSERT INTO表名(字段名,字段名)valueS (常量,常量);或INSERTINTO 表名(字段名,字段名)子查询 ;第一种格式把一个新记录插入指定的表中。第二种格式把子查询的结果插入表中。若表中有些字段在插入语句中没有出现,则这些字段上的值取空值 NU

28、LL。当然在表定义中说明了 NOT NULL的字段在插入时不能取 NULL。若插入语句中没有指出字段名,则新记录必须在每个字段上均有值。视图视图是从一个或几个基本表(或视图)导出的表。某一用户可以定义若干视图。因此对某一用户而言,按ANSI/SPARC报告的观点,他的外模式是由若干基本表和若干视图组成的。视图和基本表不同,视图是一个虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)。视图一经定义就可以和基本表一样被查询、被删除(DROP),也可以用来定义新的视图,但更新(增、删、改)操作将有一定限制。视图可以理解成一个数据库,只有内涵保存在数据库字典中,而

29、无外延存储 ; 其外延是在使用时动态地生成的或计算出来的。1)视图的定义与删除SQL建立视图的语句格式为 :CREATE VIEW视图名(字段名,字段名) AS 子查询WITH CHECK OPTION谓词 ;视图可以删除,语句格式为 : DROP VIEW视图名 ;视图的定义就从数据字典中删除。由此视图导出的其它视图也将自动被删除。若导出此视图的基本表删除了,则此视图也将自动删除。(2)视图的查询语句视图定义后,用户可以如同基本表那样对视图查询。(3)视图的更新语句对视图的更新最终要转换成对基本表的更新(这里的更新,指 INSERT,UPDATE和 DELETE三类操作)。在关系数据库中,并

30、非所有的视图都是可更新的,也就是说,有些视图的更新不能唯一地有意义地转换成对基本表的更新。4)视图的优点视图的概念具有很多优点,主要有:1)视图对于数据库的重构造提供了一定程度的逻辑独立性;2)简化了用户观点 ;3)视图机制使不同的用户能以不同的方式看待同一数据;4)视图机制对机密数据提供了自动的安全保护功能。7.SQL 的数据控制功能SQL数据控制功能是指控制用户对数据的存取权力。某个用户对某类数据具有何种操作权力是由DBA决定的。这是个政策问题而不是技术问题。数据库管理系统的功能是保证这些决定的执行。为此它必须能:1)把授权的决定告知系统,这是由SQL的 GRANT和 REVOKE语句来完

31、成的。2)把授权的结果存入数据字典。3)当用户提出操作请求时,根据授权情况进行检查,以决定是执行操作请求还是拒绝之。授权语句的一般格式为 :GRANT权力,权力 ON对象类型对象名 TO 用户,用户,WITH GRANT OPTION;对不同类型的操作对象可有不同的操作权力。(1)对基本表、视图及其字段的操作权力有查询、插入、更新、删除以及它们的总和ALL PRIVILEGE。(2)对基本表的操作权力还有修改(ALTER)和建立索引(INDEX)。(3)对数据库的操作权力有建立表(CREATETAB)。某用户有了此权力就可以使用Create table建立基本表。称他为表的主人,拥有对此表的一

32、切操作权力。(4)对表空间的权力有使用(USE)数据库空间存储基本表的权力。(5)系统权力有建立新数据库(CREATEDBA)的权力。 GRANT语句中的任选项WITH GRANT OPTION的作用是使获得某种权力的用户可以把权力再授予别的用户。嵌入式 SQL把 SQL嵌入主语言使用时必须解决三个问题:(1)区分 SQL语句与主语言语句。这是通过在所有的SQL语句前加前缀 EXEC SQL来解决的。 SQL语句结束标志随主语言不同而不同,如PL/1 用分号( ; ),COBOL用 EMD-EXEC来表示。 SQL语句首先由预编译程序加以处理,转换为主语言编译程序能够识别的形式,然后交主语言编

33、译程序进一步处理。(2)数据库工作单元和程序工作单元之间的通信。SQL语句中可以使用主语言的程序变量(简称主变量),这些变量名前加冒号 (: )作标志,以区别地字段名, 程序中使用的任何表 (基本表或视图) 都要用 EXECSQLDECLARE语句加以说明。一则使程序更加清晰,二则使预编译程序能作某些语法检查。SQL语句执行后,系统要反馈给应用程序若干信息,这些信息送到SQL的通信区 SQL CA。SQL CA用语句 EXEC SQL INCLUDE加以定义。在 SQL CA中有一个状态指示字段SQL CODE。当 SQL CODE为零时,表示SQL语句执行成功,否则返回一个错误代码(负值)或

34、警告信息(正值)。程序员应该在每个SQL语句之后测试 SQL CODE的值,以便处理各种情况。(3)一个 SQL语句原则上可产生或处理一组记录,而主语言一次只能处理一个记录,为此必须协调两种处理方式。 这是用游标 (Cursor )来解决的。下面首先讨论不需要游标的DML语句,然后讨论使用游标的DML语句。不用游标的 DML语句不需要游标的 DML语句有 : 查询结果为单记录的 SELECT语句 UPDATE(除了 CURRENT形式的 UPDATE)语句DELETE(除了 CURRENT形式的 DELETE)语句 INSERT语句1)查询结果为单记录的 SELECT语句这类语句的一般格式是

35、: (主语言为 PL/1)EXECSQLSELECT目标列 INTO 主变量空值标志 FROM基本表(或视图) WHERE条件表达式 ;SELECT语句从数据库中找到符合条件的记录,把结果放到主变量中。2)UPDATE语句3)DELETE语句4)INSERT语句使用游标的 DML语句一般情况下SELECT语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集合操作转换为单记录处理。与游标有关的语句有四个:1)定义游标。游标是与某一查询结果相联系的符号名。用 DECLARE语句定义。这是一个说明语句。与游标相对应的 SELECT语句这时并不执行。2)打开( OPEN)游标。打

36、开游标语句使游标处于活动状态。与游标相应的查询语句被执行。游标指向查询结果集中的第一个记录之前。3)推进( FETCH)游标。把游标向前推进一个记录, 并把游标指向的当前记录中的字段值取出, 放到 INTO 子句后相应的主变量中。 FETCH语句常常用于循环,以借助主语言功能逐一处理结果集中的数据。4)关闭( CLOSE)游标。关闭游标,使它不再和原来的查询结果相联系。关闭了的游标可以再次被打开,与新的查询结果集相联系。使用CURRENT形式的 UPDATE和删除语句应注意:1)若游标定义中的 SELECT语句带有 UNION或 ORDER BY子句,或者这个 SELECT语句相当于定义了一个

37、不可更新的视图,则不能用这两个更新语句。(2)若使用CURRENT形式的 UPDATE语句,则游标定义中要包括FOR UPDATE子句,指出更新的字段(SET子句中使用的字段) 。因此,游标定义语句的一般格式为 :EXECSQLDECLARE游标名 CURSORFOR子查询 UNION 子查询 FOR UPDATE OF字段名,字段名 |ORDER-BY- 子句 ; 11.SQL 的事务处理功能1)事务处理的概述所谓事务( Transaction )是指一系列动作的组合,这些动作被当作一个整体来处理。这些动作或者相继都被执行, 或者什么也不做。 在数据库中, 一个动作是指一个 SQL语句。事务

38、是一组 SQL语句组成的一个逻辑单位。要么这些 SQL语句全部被按顺序正确执行,要么在某 SQL语句执行失败时,按照用户要求,取消已执行的 SQL语句对数据库中数据的修改。或者要么事务中 SQL语句都被正确执行,完成该事务对数据库中数据的所有操作 ; 或者要么相当于一条 SQL语句也未执行,数据库数据未做任何改动。2)SQL语言的事务处理语句 SQL语言有 3 条语句用于事务处理,它们是 :1)Commit 语句,对于正确执行了的事务进行提交,进行提交即对数据库中数据的修改永久化。同时还释放事务和封锁,标志该事务结束。2)Save point 语句,定义事务中的一个回滚保留点,它是事务恢复时的

39、一个标记点。3)rollback 语句,无论事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全部修改,要么取消至某个指定回滚点后对数据库的全部修改。释放自保留点之后的全部表或行的封锁 (没有保留点,相当于回滚到事务开始处,终止该事务) 。事务的恢复(回滚)是根据事务执行前保存下的当时数据库状态来实现的。 一遇到 rollback 语句,就将数据库中数据恢复到原来的状态,相当于撤消事务中已执行了的 SQL语句。四、数据库的存储结构数据库的存储结构不同于一般文件系统的存储结构。数据库数据的特点是各种记录型之间彼此有联系,数据是结构化的。数据的存储结构不仅涉及每种记录型的记录如何

40、存储,而且要使数据的存储反映各种记录型之间的联系。 在 DB多级模式中引入内模式(存储模式) 的主要目的是使模式的数据结构的描述同它的存储表示的描述分开,以致 DBA为了协调数据库性能而对数据库数据的存储方法进行修改时,可不必修改模式,以提高数据库的物理独立性。在各个数据库管理系统中,对内模式的定义功能各不相同。在关系数据库管理系统中有些 DDL语句可影响数据库的存储结构。在 DBMS中各级模式的存储结构是恒定的或唯一的,而数据库内容(或其记录)的存储方式是不唯一的。数据库存储结构设计的好坏直接影响系统的性能。在存储结构中主要是涉及存储记录的设计。存储记录与概念记录之间具有对应关系,如果存储记

41、录与概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论。概念记录是指在逻辑结构中的记录。 但当一个概念记录对应多个不同类型的存储记录时,存在如何设计存储记录的问题。对于这样的概念记录,其存储记录可以有以下几种设计:顺序组织将存储记录设计成与概念记录一一对应,按 SNO大小(或按记录到来)的顺序将记录组成一个顺序组织的文件。这样组织的优点是结构简单,缺点是会浪费存储空间。顺序带链的组织顺序带链组织允许记录中带有指针(Pointer ),这样可以大大节省存储空间。带次关键字索引的顺序组织为了适应对多项内容的检索,可以建立索引文件,上述组织可改为带次关键字索引的顺序

42、组织。多表组织在次关键字索引中,由于一个次关键字值对应于多个记录值,它们的个数是不固定的,所以对应的指针数目是可变的。这种可变性给管理带来困难,为了解决这个困难,引入了多表组织。多表组织的实现思想比较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等。完全倒排组织 在一个记录型中, 对主关键字以外的数据项都建立索引, 这样的组织称之为完全倒排组织。6.Hash 定址组织 对于每一个存储记录值存放在数据库的什么地方, 可通过对该记录的主关键字值的杂凑函数计算得出。这种组织为 Hash 定址组织。杂凑函数种类很多,如质数除余法、基数转

43、换法、平方取中法、折叠法、位移法及各位数字分析法等等。关键是如何选择一个杂凑函数,尽可能避免发生碰撞。对于不同的主关键字值通过计算而得到同一个地址的映象,称之为碰撞。联系的存储在关系数据库中,通过外来关键字( Foreign Key)来表示概念记录之间的联系。例如,为了表达学生和学校的联系,可以在学生记录中增加外来关键字“学校号”来表示联系。五、关系数据库1. 表格表格(或简称表)表示了用户的特定类型(Type)的一些实体。表头由一些属性名(Attribute Name)组成,每个属性名对应于一列。在表上属性名必须唯一,不允许重名。表体是由一些行或元组(tuple)、或记录( record )

44、组成。一个元组对应于传统的文件结构中的一个记录,一个记录含有若干个域(field)用以存储属性值(Attributevalue )。一个元组对应于一个“用户”实体的出现(occurrence )。表体中每一行和某一列的交叉点(相当于记录中的域)上保存一个属性值。这个属性值叫做这一行(或这个实体出现)的相应属性值。表体中每一列可以保存的值对应于某种属性类型(Type of Attribute),也就是说,这一列的属性值只能取这个属性类型的值。某个属性所能取的所有值的集合叫做这个属性的值域(Domain ofAttribute )。类型和值域的对应关系是一对多的。一个类型有一个值域,但一个值域可以

45、作为多个类型,基名称不同,但实质上值域一样。实际上,类型是对值域的命名。能唯一标识一个元组的属性称之为关键属性( Primary Key Attribute)或简称为主关键字( Primary Key )。主关键字有时是由多个属性组成的,此时的主关键字叫做组合关键字(Concatenatedprimary Key)。有的时候,表中必须由一些组合的主关键字才能唯一地标识一个元组,也就是说,不存在能作关键字的一个属性。这时为了方便,往往引入一个附加的属性并称之为外来关键字(Foreigh Key)来作主关键字。 外来关键字为以后检索和查询带来了方便,但也增加了信息冗余。表名、表头和表体表名、表头和

46、表体在关系模型中具有不同的作用或功能,因而也具有完全不同的性质。表头是一个属性的集合,它规定了表的结构。表体是一个特殊的集体,称作为关系( relation )。“关系模型”中的“关系”一词就是指表体中的这个数学关系。在关系数据库中,表名对应于数据库名(或关系名) ,表头对应于数据描述(或结构描述) ,表体对应于数据库。表体是数据库的内容及数据库操作的对象。另外,有两个概念必须加以强调 : 型( type )和值或出现( occurence )。表头定义了实体(或元组)的型,也就是说规定了实体(或元组)的值域。而表体则给出了实体(或元组)的出现。出现是型中的一个值。关系的数学定义关系模型是建立

47、在集合论(Set Theory )的基础之上的。现在,开始用集合论的术语来严格地定义数学上的关系,即给出关系的数学定义。定义1 域( Domain)是值( value )的集合。关系模型关系模型由三部分组成 : 数据结构(即关系) 、关系操作、关系的完整性。下面将对这三个部分进行分别的讨论。(1)单一的数据结构关系在关系模型中, 无论是实体还是实体之间的联系均由单一的类型结构关系来表示。在前面,已给出了关系和域的数学定义,介绍了n 元关系、元组和属性等概念。下面介绍关键字、 关系模式和关系数据库等一些基本概念。关键字关系中的某一组属性,若其值可以唯一地标识一个元组,则称该属性组为一个候选关键字

48、(Candidate Key)。若一个关系有多个候选关键字,则可以任选其中一个作为主关键字( PrimaryKey)。主关键字中的诸属性被称为主属性。关系模式关系的描述称为关系模式。它包括 : 关系名、组成关系的诸属性名、属性到域的映象、属性间的数据依赖关系等等。所以,关系模式由关系名、诸属性名和属性到域的映象三个部分组成,关系模式通常简记为R(A1 ,A2,A n ),其中 R 是关系名, A 1 , A 2, A n为诸属性名。属性到域的映象一般通过指定属性的类型和长度来说明。某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合。关系的外延内容有时简称为关系。但关系模式和关系的内

49、容有时也统称为关系。读者可以从上下文中区别其确切的含义。形象地说,关系模式是关于表名和表头的描述,而关系的内容是表体。关系数据库在关系数据库中,要分清型和值两个基本概念。关系数据库的型是指数据库的结构描述,它包括关系数据库名、若干属性的定义,以及这些属性上的若干关系关系模式。亦称为数据库的内涵(Intension),数据库的值亦称为数据库的外延。在关系数据库中,内涵是比较稳定的,它规定了外延的取值范围。而外延却是随时间变化的。这和在一般的形式逻辑中外延和内涵一一对应有所区别。此处外延是指任意一个满足内涵的集合,而不一定恒指满足内涵的最大的一个集合。关系模式(即内涵)是稳定的; 而关系的内容,即

50、外延,却是随时间动态的变化而变化的。数据库的结构(即模式)是稳定的; 而数据库中的数据内容却在不断地更新。(2)关系操作 关系模型规定了关系操作的功能和特点,但不对 DBMS语言的语法做出具体的规定。关系数据库语言的主要特点(或优点)是其高度的非过程化(Non-procedureae )或者说明性( declarative)。关系数据库语言的语句是透明的。 用户只须知道语句做什么,而不须知道怎么做的。Codd在其早期的文章中,引入了 8 种基本的操作 : 并(Union )交(Intersection)差( Difference)笛卡尔乘积 ( Cartesian Product )限制( R

51、estrictions )投影( Projection)连接( Join )除( Division)这些操作都是对关系的内容或表体实施操作的, 得到的结果仍为关系。 注意,这些操作只是基本的操作, 而不是不再可分的原始 ( Primitive)操作,例如, Join ,Intersection和 Division可以由其它五种操作合成。但是,把它们三个也作为基本操作使用起来很方便。另外,Codd 并没说上述8 种操作就是关系数据库只能有的8 种操作。实际上,上述8 种操作仅仅是作为最小的DML操作的基础部分, 并且也还未考虑到 DDL的需求。 SQL支持的操作多于上述8 种 DML操作,而且

52、SQL还支持 DDL操作。关系操作的特点是集合操作,即操作的对象和结果都是集合。这种操作方式也称为一次一集合(set-at-a-time)方式。而非关系模型的数据库的操作方式则为一次一记录( record-at-a-time)方式。关系操作可以用两种方式来表示:代数方式,即关系代数逻辑方式,即关系演算而关系演算又进一步分为元组关系演算和域关系演算。已经证明,这些表示方式在功能上是相互等价的。一般选其一即可。(3)关系模型的三类完整性关系模型的三类完整性是 :实体完整性( Entity Integrity)参照完整性( Referential Integrity)用户定义的完整性( User D

53、efined Integrity)其中,实体完整性和参照完整性是任何关系模型都必须满足的完整性约束条件,应该由关系数据库DBMS自动支持。而用户定义的完整性的支持是由DBMS提供完整性定义设施(或机制) ,可以随 DBMS商品软件不同而有所变化。实体完整性是指: 若属性 A 是基本关系 R的主关键字的属性(即主属性) ,则属性 A 不能取空值( NULL)。在关系数据库中有各种关系,如基本关系(常称为基本表) 、查询表、视图表等等。基本表是指实际存在的表,它是实际存储数据的逻辑表示。查询表是指和查询结果相对应的表。 而视图表是由基本表或视图表导出的表,是虚表,不对应实际存储的数据。实体完整性是

54、针对基本关系的。空值是指“不知道”或者“无意义的”或“不属于定义域”值。空值以“NULL”表示。对于实体完整性作如下说明:(1)一个基本关系通常对应于现实世界中的一个实体集。例如学生关系对应于学生实体集。基本关系不是由其它关系生成的关系。基本关系是本原(Primitive),是定义复杂关系的出发点。2)现实世界中的实体是可区分的,即实体具有某种唯一性的标识。3)在关系模型中由主关键字作为满足唯一性的标识。(4)主关键字中属性不能取空值。因为若主关键字中某属性取空值,则意味着某个实体不可标识; 而这和(2)相矛盾。参照完整性是指: 若基本关系 R 中含有另一个基本关系 S 的主关键字 K S所对

55、应的属性组 F(F 称为 R 的外部关键字( external keys),则在关系 R 中的每个元组中的F 上的值必须满足 :或者取空值(即 F 中的每个属性的值均为空值);或等于 S 中某个元组的主关键字的值。基本关系R 和 S 不一定是不同的关系。外部关键字也称为外来关键字。例如,某数据库中有职工关系EMP(职工号,姓名,部门号)和部门关系DEPT(部门号,部门名称)为两个基本关系。 关系 EMP的主关键字为“职工号”, DEPT的主关键字为“部门号”在EMP中,“部门号”是 EMP的外部关键字。故此,在EMP中的每个元组中“部门号”的值只有两种可能性:取空值。这说明这个职工尚未分到某个

56、部门;或取非空值。 这时“部门号”的值必须是DEPT中某个元组中的“部门号”的值。这说明一个职工不可能被分配到一个不存在的部门。也就是说, 被参照的关系 DEPT中一定存在一个元组,该元组的关键字的值等于 EMP中某元组的外部关键字的值。实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的一般性原则。用户定义的完整性针对某一具体的数据库的约束条件。条件是由现实世界中的应用环境决定的。它涉及到某一具体的应用中的数据所必须满足的语义要求。 关型模型的 DBMS应提供定义和检验这类完整性条件的机制,以使用统一的方法来自动地处理它们而不要求应用程序员来承担这一功能。5. 关系数据库语言概述关系

57、数据库语言分三类 : 数据描述语言DDL,数据操纵语言 DML和数据控制语言DCL。其中, DDL负责数据库的描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构。DML 负责数据库的操作,提供一种处理数据库操作的机制。DCL 负责控制数据库的完整性和安全性,提供一种检验完整性和保证安全的机制。 DML是用户经常使用的语言,包括了DBMS的主要功能。 DML包括数据查询和数据的增、删、改等功能。其中查询的表达方式是DML的主要部分。关系数据库的DML按照查询方式可以分为两大类 :(1)用对关系的集合代数运算来表示查询的方式,称为关系代数(Relational Algebra)。(2

58、)用谓词演算来表达查询的方式,称为关系演算(Relational Calculus )。关系演算又可按谓词变元的基本对象是元组变量( tuple variable)还是域变量(domain variable )分为元组关系演算和域关系演算两种。关系代数和两种关系演算均是抽象的查询语言,这些抽象的查询语言和实际的DBMS软件产品中实现的具体的查询语言并不完全一样。但它们是 DBMS中查询语言的理论基础。 关系代数、 元组关系演算和域关系演算这三种语言在表达能力上是彼此相互等价的,它们均可以作为评价实际DBMS软件产品中查询语言能力的标准。实际 DBMS软件产品的查询语言,除了提供关系代数(或一种

59、关系演算)之外,还提供了许多附加的功能,如库函数、算术运算等功能。SQL是介于关系代数,和关系演算之间的一种语言。SQL不仅具有丰富的查询功能,而且还具有数据库定义和数据库控制功能。SQL 是集 DDL、 DML、DCL 为一体的标准的关系数据库语言。 SQL充分体现了关系数据库语言的优点。关系代数关系代数中的运算可以分为两类 :(1)传统的集合运算,如并、交、差、笛卡尔乘积等。这类运算是从关系的“水平方向(即按行)”来进行的。(2)专门的关系运算,如选择、投影、连接、除。这类运算不仅涉及到行而且也涉及到列。关系演算关系演算是以数理逻辑中的谓词演算为基础的。用谓词演算作为关系数据库的语言并提出

60、关系演算的是 。Codd 首先定义了关系演算语言 ALPHA。但 ALPHA并没有在计算机上实现。但关系数据库管理系统 INGRES所用的 QUEL语言是参考 ALPHA研制的,与 ALPHA十分类似。六、关系数据库的规范化理论函数依赖定义 1 设 R( U)是属性集U 上的关系模式。 X, Y 是 U 的子集。若对于R( U)的任意一个可能的关系r ,r中不可能存在两个元组在X 上的属性值相等,而在Y 上的属性值不等,则称X函数确定Y或Y 函数依赖于 X,记作XY。函数依赖和别的数据依赖一样是语义范畴的概念。只能根据语义来确定一个函数依赖。例如姓名年龄这个函数依赖只有在没有同名人的条件下成立

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论