gta5封装资料杂凑演算gta5云存档发生错误误

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
不断的有更快速的演算法出现;关联法则就是试著在交易的商业资料库中,粹取出...演算法运用至图一及图二的例子中,可得如图五所示之演算流程.0图五:导入最...
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
以最小完美杂凑演算法增进资料挖掘的效能
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口当前位置: >>
全国计算机四级考试复习资料---数据库
全国计算机四级考试复习资料――――――― 数据库(六) 数据库(一、数据模型 1.数据模型的三要素 数据模型的三要素(1)数据结构 数据结构是所研究的对象类型(Object Type)的集合。这些对象和对象类型是数据库的组 成成分。一般可分为两类:一类是与数据类型、内容和其它性质有关的对象;一类是与数据之间的联系有关的 对象。前者如网状模型中的数据项和记录,关系模型中的域、属性和关系等。后者如网状模型中的关系模 型(set type)。在数据库领域中,通常按照数据结构的类型来命名数据模型,进而对数据库管理系统进行 分类。如层次结构、网状结构和关系结构的数据模型分别称作为层次模型、网状模型和关系模型。相应地, 数据库分别称作为层次数据库、网状数据库和关系数据库。 (2)数据操作 数据操作是指对各种对象类型的实例(或值)所允许执行的操作的集合,包括操作及有关 的操作规则。在数据库中,主要的操作有检索和更新(包括插入、删除、修改)两大类。数据模型定义了 这些操作的定义、语法(即使用这些操作时所用的语言)。数据结构是对系统静态特性的描述,而数据操 作是对系统动态特性的描述。两者既有联系,又有区别。 (3)数据的约束条件 数据的约束条件是完整性规则的集合。完整性规则是指在给定的数据模型中,数据 及其联系所具有的制约条件和依存条件,用以限制符合数据模型的数据库的状态以及状态的变化,确保数 据的正确性、有效性和一致性。2.概念模型 概念模型数据模型是数据库系统的核心和基础。每个 DBMS 软件都是基于某种数据模型的。为了把现实世界中的具 体事物或事物之间的联系表示成 DBMS 所支持的数据模型,人们首先必须将现实世界的事物及其之间的联 系进行抽象,转换为信息世界的概念模型;然后将信息世界的概念模型转换为机器世界的数据模型。也就是 说,首先把现实世界中的客观对象抽象成一种信息结构。这种信息结构并不依赖于具体的计算机系统和 DBMS。然后,再把概念模型转换为某一计算机系统上某一 DBMS 所支持的数据模型。因此,概念模型是 从现实世界到机器世界的一个中间层次。现实世界的事物反映到人的大脑之中,然后人们开始认识这些事 物,经过选择、命名、分类和组织等抽象工作之后形成概念模型,并进入到信息世界。 用户(user) 关心的是现实世界中的事物、事物的属性及其相互关系。例如,用户可能关心他的顾客及其 属性,如顾客地址、银行帐号等等。用户也关心自己的定货帐目,如谁订的货、订的什么和订多少等等。 系统分析员(analyst) 同样也关心现实世界,但是系统分析员需要分析用户的信息需求。作为需求分析 的结果,分析员必须以文档的形式对需求进行结构化的描述;这个文档就是信息模型。 实体(Entity) 实体是构成数据库的基本元素。实体是指一个存在的东西以区别这个东西所具有的属性和 这个东西与其它东西的联系。 实体可以是人, 也可以是物;可以是实际对象, 也可以是概念;可以是事物本身, 也可以是指事物之间的联系。 属性(Attribute) 一个实体可以由若干个属性来刻画。属性是相对实体而言的,是实体所具有的特性。 关键字(Key) 能唯一地标识实体的属性的集合称为关键字(或码)。 域(Domain) 属性的取值范围称作域。 实体型(Entity Type) 一类实体所具有的共同特征或属性的集合称为实体型。一般用实体名及其属性来抽 象地刻画一类实体的实体型。 实体集(Entity Set) 同型实体的集合叫实体集。例如,学生就是一个实体集。实体集的名即是实体型。 对于学生和(学号,姓名,年龄,系,年级)均是实体型,而学生是对实体型(学号,姓名,年龄,系, 年级)所起的名称,两者是指同一客观对象。但本科生和研究生可以为相同实体型,而实体集不同。 联系(Relationship) 现实世界的事物之间是有联系的。一般存在两类联系:一是实体内部的组成实体的属 性之间的联系,二是实体之间的联系。在考虑实体内部的联系时,是把属性看作为实体。一般来说,两个 实体之间的联系可分为三种: (1)一对一(1∶1)联系 若对于实体集 A 中的每一个实体,实体集 B 中至多有唯一的一个实体与之联系, 反之亦然,则称实体集 A 与实体集 B 具有一对一联系,记作 1∶1。 (2)一对多(1∶n)联系 若对于实体集 A 中的每个实体,实体集 B 中有 n 个实体(n≥0)与之联系;反之, 对于实体集 B 中的每一个实体,实体集 A 中至多只有一个实体与之联系,则称实体集 A 与实体集 B 有一 对多联系,记为 1∶n。相应地有多对一(n∶1)联系 多对一联系,从本质上说,是一对多联系的逆转。 其定义同一对多联系类似,不再赘述。 (3)多对多(m∶n)联系 若对于实体集 A 中的每一个实体,实体集 B 中有 n 个实体(n≥0)与之联系; 反之,对于实体集 B 中的每一个实体,实体集 A 中也有 m 个实体(m≥0)与之对应,则称实体集 A 与实 体集 B 具有多对多联系,记作 m∶n。实质上,多对多联系是任意一种联系。另外,同一实体集内的各个 实体间也可以有各种联系。 概念模型的表示方法最常用的是实体一联系方法 (Entity-Relationship Approach) , 简称 E-R 方法。该方法是由 P.P.S.Chen 在 1976 年提出的。E-R 方法用 E-R 图来描述某一组织的概念模型。 在这里仅介绍 E-R 图的要点。在 E-R 图中: (1)长方形框表示实体集,框内写上实体型的名称。 (2)用椭圆框表示实体的属性,并用有向边把实体框及其属性框连接起来。 (3)用菱形框表示实体间的联系,框内写上联系名,用无向边把菱形框及其有关的实体框连接起来,在旁 边标明联系的种类。如果联系也具有属性,则把属性框和菱形框也用无向边连接上。3.三种主要的数据模型 三种主要的数据模型实际 DBMS 所支持的数据模型主要有三种: 层次模型(Hierarchical Model) 网状模型(Network Model) 关系模型 (Relational Model) 其中, 关系模型是当前 DBMS 所支持的数据模型的主流。 年代运行的 DBMS 90 几乎都是基于关系模型的。层次模型和网状模型统称为非关系模型。非关系模型的结构可以和图论中的图 相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用。但是最近,层次模型在研究面 向对象的 DBMS 中已得到重视。在关系模型中,数据在用户的观点中(或在用户视图中)的逻辑结构是一 张二维表(Table)。 关系(Relation),对应于平常讲的一张表。 元组(Tuple),表中的一行。 属性(Attribute),表中的一列称为一个属性,给每一列起一个名,称为属性名。这一列或这个属性所有 可能取的值的集合称为这个属性的值域(Domain),值域中的一个元素叫做这个属性的值。 主关键字(Primary Key Attribute 或 Primary Key),是指能唯一标识一个元组的一个或一组属性。 分量(Attribute value),是指元组中的一个属性值。 关系模式(Relational Schema),是对关系的描述,一般用关系名(属性名 1,属性名 2,…,属性名 n) 来表示。同层次模型和网状模型相比较,关系模型具有下列特点: (1)概念单一 在关系模型中,无论是实体还是实体之间的联系都用关系来表示。在关系模型中,在用户 的观点中,数据的逻辑结构就是表,也只有这唯一的概念。在非关系模型中,用户要区分记录型与记录型 之间的联系两个概念;当环境复杂时,数据结构异常复杂,难以掌握。而关系模型,由于概念单一,可以变 复杂为直观、简单,易学易用。 (2)规范化 所谓关系规范化是指在关系模型中,每一个关系都要满足一定的条件要求。这些条件被称为 规范条件。对于关系,一个最基本的规范条件是,要求关系中的每一个属性(或分量)均是不可分的数据 项;也就是说不允许表中有表,表是不可嵌套的。 (3)在关系模型中,用户对数据的操作的输入和输出都是表,也就是说,用户通过操作旧表而得到一张新 表。总之,关系模型概念简单,结构清晰,用户易学易用,有严格的以数学为基础的关系理论作指导,便 于 DBMS 的实现。基于关系的 DBMS 简化了应用程序员的工作,便于数据库应用系统的设计和维护。故 此,关系模型自诞生以后就得到了迅速的发展,成为应用最为广泛的、唯一的数据模型。二、数据库系统的结构 1.数据库系统的三级模式结构 数据库系统的三级模式结构数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式(external schema),或子模式 (subschema)或用户模式(user schema),是指数据库用户所看到的数据结构,是用户看到的数据视图。 模式(schema)或逻辑模式(logic schema),是数据库中对全体数据的逻辑结构和特性的描述,是所有用 户所见到的数据视图的总和。外模式是模式的一部分。内模式(internal schema),或存储模式(storage schema),或物理模式(physical schema),是指数据在数据库系统内的存储介质上的表示,即对数据的物 理结构和存取方式的描述。模式描述的是数据的全局的逻辑结构,决定了 DBMS 的功能。外模式涉及的仅 是局部的逻辑结构,是模式的子集,是对模式的调用。数据库系统的三级模式是对数据进行三个层次抽象 的工具。通过三级模式,把对数据的具体组织留给 DBMS 来完成,使得用户能在高层次上处理数据的逻辑 结构,而不必关心数据的物理结构。为了实现这三个层次这间的联系,DBMS 在沟通三级模式中提供了两 个映象:外模式-模式映象模式-内模式映象 (1)模式 模式规定了数据库中全部数据的一个逻辑表示或描述形式。模式既不同于内模式,也不同于外 模式。它比内模式抽象,不涉及数据的物理结构和存储介质。它与具体的应用程序或高级语言无关。 (2)外模式 外模式是个别用户的数据视图,即与某一应用有关的数据的逻辑表示。 (3)内模式 内模式是全部数据库的内部表示或底层描述,是用来定义数据的物理结构和存取方式的。 (4)二级映象 对于同一个模式,可以有任意多个外模式。外模式-模式的映象定义了某个外模式和模式之 间的对应关系。这些映象的定义通常包含在各自的外模式中。当模式改变时,外模式-模式的映象要做相应 的改变,以保证外模式的不变性。这是数据库管理员(DBA)的责任。模式-内模式的映象定义了数据逻辑 结构和存储结构之间的对应关系。例如,字段的内部表示等。当数据库的存储结构改变时,模式-内模式的 映象也须做相应的修改,以使得模式保持不变性。这仍是 DBA 的责任。正是由于上述二级映象的功能及其 自动实现,使得数据库系统中的数据具有较高的逻辑独立性和物理独立性,从而大大地方便了用户的使用。 (5)概念模式与模式 ANSI 研究组于 1975 年 2 月提出一个临时报告。1978 年提出一个最终报告,称之为 ANSI/SPARC 报告,简称为 SPARC 报告。SPARC 报告中指出,数据库管理系统应具有三级模式的结构, 即概念模式、外模式和内模式。其中外模式和内模多与上面所讲的大致相当。但 SPARC 报告中的概念模 式是指一个组织或部门所对应的现实世界的真实模型,即概念模型。概念模式仅描述实体及其属性和联系, 不涉及机器世界的概念。概念模型是信息世界范畴内的信息的结构,而模式是机器世界范畴内的概念模型 的逻辑表示。概念模型独立于具体的计算机系统,甚至是和计算机无关的,是一个组织或部门的模型。常 用的描述概念模式的方法是 E-R 方法。 模式是依赖于具体的计算机及其 DBMS 的。 模式通过三种具体模型: 层次模型、网状模型和关系模型来加以实现。概念模式必须转换成具体的数据模型,然后才能在相应的 DBMS 上实现。概念模型和模式都是描述信息或数据的整体结构的,然而它们是在不同的抽象层次上加以 描述的。概念模型离机器更远,形式化程度低。从远离机器的观点看,概念模型更抽象些,但更接近现实 世界。而模式描述使用的是形式化的语言-模式 DDL,而概念模型描述使用的是 E-R 图和一些自然语言。2.使用数据库的计算机系统结构 使用数据库的计算机系统结构广义地讲,实际上使用数据库的计算机系统由下列几个部分组成的: (1)硬件部分 包括主机、外部存储设备、网络设备和电源等。 (2)软件部分 包括操作系统、DBMS、编译系统和应用开发工具软件等。 (3)人员 包括数据库管理员(Data Base Administrator-DBA),系统分析员(System Analyst)、应用程 序员(Application Programmer)和用户(User)。3.数据库管理系统 数据库管理系统数据库管理系统 DBMS 是数据库系统的核心。DBMS 是负责数据库的建立、使用和维护的软件。DBMS 建 立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行, 最终都必须通过 DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照 DBA 所规定的要求,保证 数据库的完整性和安全性。DBMS 的主要功能包括以下几个主要方面: (1)数据库的定义功能 DBMS 通过提供数据描述语言(也称数据定义语言)(Data Descriptive Language―――DDL)来对外模式、模式和内模式加以描述。然后模式翻译程序把用 DDL 写的各种模式的 定义源码翻译成相应的内部表示,形成相应的目标形式,分别叫目标外模式、目标模式、目标内模式,这 些目标模式是对数据库的描述,而不是数据本身。(目标)模式只刻画了数据库的形式或框架,而不包括 数据库的内容。这些目标模式被保存在数据字典(或系统目标)之中,作为 DBMS 存取和管理数据的基本 依据。例如,DBMS 根据这些模式定义,进行物理结构和逻辑结构的映象,进行逻辑结构和用户视图的映 象,以导出用户要检索的数据的存取方式。 (2)数据操纵功能 DBMS 提供数据操纵语言(Data Manipulation Language―――DML)实现对数据库中 数据的一些基本操作,如:检索、插入、修改、删除和排序等等。DML 有两类:一类是嵌入主语言的,如嵌 入到 C 或 COBOL 等高级语言中。这类 DML 语言本身不能单独使用,故此称为宿主型的 DML 或嵌入式 DML。另一类是非嵌入式语言(包括交互式命令语言和结构化语言),它的语法简单,可以独立使用,由 单独的解释或编译系统来执行, 所以一般称为自主型或自含型的 DML。 命令语言是行结构语言, 单条执行。 结构化语言是命令语言的扩充或发展,增加了程序结构描述或过程控制功能,如循环、分支等功能。命令 语言一般逐条解释执行。结构化语言可以解释执行,也可以编译执行。现在 DBMS 一般均提供命令语言的 交互式环境和结构环境两种运行方式,供用户选择。DBMS 控制和执行 DML 语句(或 DML 程序),完成 对数据库的操作。 对于自主型的结构化的 DML, DBMS 通常采用解释执行的方法, 但也有编译执行的方法, 而且编译执行的越来越多。另外,很多系统同时设有解释和编译两种功能,由用户选其一。对于嵌入型或 缩主型 DML,DBMS 一种提供两种方法: ①预编译方法。 ②修改和扩充主语言编译程序(亦称增强编译方法)。预编译方法是,由 DBMS 提供一个预处理程序,对 源程序进行语法扫描,识别出 DML 语句,并把这些语句转换成主语言中的特殊调用语句。主语言必须和 DML 有调用接口。这样在连接形成目标时和主语言语句一起形成可执行的目标。 (3)数据库运行管理 数据库运行期间的动态管理是 DBMS 的核心部分,包括并发控制、存取控制(或安 全性检查、完整性约束条件的检查)、数据库内部的维护(如索引、数据字典的自动维护等)、缓冲区大 小的设置等等。所有的数据库操作都是在这个控制部分的统一管理下,协同工作,以确保事务处理的正常 运行,保证数据库的正确性、安全性和有效性。 (4)数据库的建立和维护功能 数据库的建立和维护包括初始数据的装入、数据库的转储或后备功能、数 据库恢复功能、数据库的重组织功能和性能分析等功能,这些功能一般都由各自对应的实用功能子程序来 完成。DBMS 随软件产品和版本不同而有所差异。通常大型机上的 DBMS 功能最全,小型机上的 DBMS 功能稍弱点,微机上的 DBMS 更弱些。但是,目前,由于硬件性能和价格的改进,微机上的 DBMS 功能 越来越全。三、关系数据库的标准语言―――SQL 关系数据库的标准语言 SQL 1.SQL 概述 SQL 的英语名称是结构查询语言(Structured Query Language) 的英语名称是结构查询语言( )实际上它的功能包括查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Control) 四个方面,是一个综合的、通用的、功能极强的关系数据库语言。SQL 支持数据库的三级模式结构。2.SQL 的数据定义功能 SQL 的数据定义功能包括三部分 的数据定义功能包括三部分:定义基本表,定义视图和定义索引。它们是:CREATE TABLE CREATE VIEW CREATE INDEX DROP TABLE DROP VIEW DROP INDEX SQL 的数据定义功能可用于定义和修改模式(如基本表),定义外模 式(如视图)和内模式(如索引)。3.基本表的定义与删除 基本表的定义与删除定义基本表的语句格式为: CREATE TABLE 表名 (列名 1 类型[NOT NULL] [,列名 2 类型[NOT NULL]]…) [其他参数]; 其中,任选项“其它参数”是与物理存储有关的参数。根据具体系统的不同而不同。删除基本表的语句 为:DROP TABLE 表名;删除索引的语句为:DROP INDEX 索引名;删除索引的同时把有关索引的描述也从数 据字典中删去。但表的内涵仍存在且其数据外延内容不变。把一个基本表的定义连同表上所有的记录、索 引以及由此基本表导出的所有视图全部都删除,并释放相应的存储空间。4.索引的建立与删除 索引的建立与删除对一个基本表,可以根据应用环境的需要建立若干索引,以提供多种存取方式。通常,索引的建立和删除 由 DBA 或表的主人(即建立表的人)负责。用户不必也不能在存取数据时选择索引。存取路径的选择由系 统自动进行。索引的描述存放在数据字典中。建立索引的语句格式为: CREATE[UNIQUE] INDEX 索引名 ON 基本表名(列名[次序][,列名[次序]]…)[其他参数]; 这里的任选项―――其他参数是与物理存储有关的参数。索引可以建在一列或几列上。圆括号内是索引列 的顺序说明表。其中的任选项―――次序,指定了索引值排序的次序。可取 ASC(升序)或 DESC(降序)。 缺省值为升序。UNIQUE 表示每一索引值只对应唯一的数据记录。5.SQL 的数据操纵功能SQL 的数据操纵功能包括 SELECT,INSERT,DELETE 和 UPDATE 四个语句,即检索和更新(包括增、 删、改)两部分工能。检索就是查询。 SQL 更新语句 SQL 的更新语句 包括修改,删除和插入三类语句。 ①修改(UPDATE)(亦称为更新) 修改语句的一般格式为: UPDATE 表名 SET 字段=表达式[,字段=表达式]… [WHERE 谓词]; 修改指定表中满足谓词 (或条件) 的元组, 把这些元组按 SET 子句中的表达式修改相应属性或字段上的值。 ②删除(DELETE) 删除语句一般格式为: DELETE FROM 表名 [WHERE 谓词]; 从指定表中删除满足谓词的那些记录。没有 WHERE 子句时表示删去此表中的全部记录,但此表的定义仍 在数据字典中,只是一个空表。DELETE 只对表外延操作,不对内涵操作。 ③插入(INSERT)插入语句的一般格式为: INSERT INTO 表名[(字段名[,字段名]…)] valueS(常量[,常量]…); 或 INSERT INTO 表名[(字段名[,字段名]…)] 子查询; 第一种格式把一个新记录插入指定的表中。第二种格式把子查询的结果插入表中。若表中有些字段在插入 语句中没有出现,则这些字段上的值取空值 NULL。当然在表定义中说明了 NOT NULL 的字段在插入时不 能取 NULL。若插入语句中没有指出字段名,则新记录必须在每个字段上均有值。6.视图 视图视图是从一个或几个基本表(或视图)导出的表。某一用户可以定义若干视图。因此对某一用户而言,按 ANSI/SPARC 报告的观点,他的外模式是由若干基本表和若干视图组成的。视图和基本表不同,视图是一 个虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)。 视图一经定义就可以和基本表一样被查询、被删除(DROP),也可以用来定义新的视图,但更新(增、 删、改)操作将有一定限制。视图可以理解成一个数据库,只有内涵保存在数据库字典中,而无外延存储; 其外延是在使用时动态地生成的或计算出来的。 (1)视图的定义与删除 SQL 建立视图的语句格式为: CREATE VIEW 视图名[(字段名[,字段名]…)] AS 子查询 [WITH CHECK OPTION 谓词]; 视图可以删除,语句格式为: DROP VIEW 视图名; 视图的定义就从数据字典中删除。由此视图导出的其它视图也将自动被删除。若导出此视图的基本表删除 了,则此视图也将自动删除。 (2)视图的查询语句 视图定义后,用户可以如同基本表那样对视图查询。 (3)视图的更新语句对视图的更新最终要转换成对基本表的更新(这里的更新,指 INSERT,UPDATE 和 DELETE 三类操作)。在关系数据库中,并非所有的视图都是可更新的,也就是说,有些视图的更新不能 唯一地有意义地转换成对基本表的更新。 (4)视图的优点视图的概念具有很多优点,主要有: (1)视图对于数据库的重构造提供了一定程度的逻辑独立性; (2)简化了用户观点; (3)视图机制使不同的用户能以不同的方式看待同一数据; (4)视图机制对机密数据提供了自动的安全保护功能。7.SQL 的数据控制功能SQL 数据控制功能是指控制用户对数据的存取权力。某个用户对某类数据具有何种操作权力是由 DBA 决 定的。这是个政策问题而不是技术问题。数据库管理系统的功能是保证这些决定的执行。为此它必须能: (1)把授权的决定告知系统,这是由 SQL 的 GRANT 和 REVOKE 语句来完成的。 (2)把授权的结果存入数据字典。 (3)当用户提出操作请求时,根据授权情况进行检查,以决定是执行操作请求还是拒绝之。授权语句的一 般格式为: GRANT 权力[,权力]…[ON 对象类型对象名] TO 用户[,用户]…, [WITH GRANT OPTION]; 对不同类型的操作对象可有不同的操作权力。 (1)对基本表、视图及其字段的操作权力有查询、插入、更新、删除以及它们的总和 ALL PRIVILEGE。 (2)对基本表的操作权力还有修改(ALTER)和建立索引(INDEX)。 (3)对数据库的操作权力有建立表(CREATETAB)。某用户有了此权力就可以使用 Create table 建立基 本表。称他为表的主人,拥有对此表的一切操作权力。 (4)对表空间的权力有使用(USE)数据库空间存储基本表的权力。 (5)系统权力有建立新数据库(CREATEDBA)的权力。GRANT 语句中的任选项 WITH GRANT OPTION 的作用是使获得某种权力的用户可以把权力再授予别的用户。8.嵌入式 SQL 嵌入式把 SQL 嵌入主语言使用时必须解决三个问题: (1)区分 SQL 语句与主语言语句。这是通过在所有的 SQL 语句前加前缀 EXEC SQL 来解决的。SQL 语 句结束标志随主语言不同而不同,如 PL/1 用分号(;),COBOL 用 EMD-EXEC 来表示。SQL 语句首先由 预编译程序加以处理,转换为主语言编译程序能够识别的形式,然后交主语言编译程序进一步处理。 (2) 数据库工作单元和程序工作单元之间的通信。 SQL 语句中可以使用主语言的程序变量 (简称主变量) , 这些变量名前加冒号 (:) 作标志, 以区别地字段名, 程序中使用的任何表 (基本表或视图) 都要用 EXEC SQL DECLARE 语句加以说明。一则使程序更加清晰,二则使预编译程序能作某些语法检查。SQL 语句执行后, 系统要反馈给应用程序若干信息,这些信息送到 SQL 的通信区 SQL CA。SQL CA 用语句 EXEC SQL INCLUDE 加以定义。在 SQL CA 中有一个状态指示字段 SQL CODE。当 SQL CODE 为零时,表示 SQL 语 句执行成功,否则返回一个错误代码(负值)或警告信息(正值)。程序员应该在每个 SQL 语句之后测试 SQL CODE 的值,以便处理各种情况。 (3)一个 SQL 语句原则上可产生或处理一组记录,而主语言一次只能处理一个记录,为此必须协调两种 处理方式。这是用游标(Cursor)来解决的。下面首先讨论不需要游标的 DML 语句,然后讨论使用游标的 DML 语句。9.不用游标的 DML 语句 不用游标的不需要游标的 DML 语句有:查询结果为单记录的 SELECT 语句 UPDATE (除了 CURRENT 形式的 UPDATE) 语句 DELETE(除了 CURRENT 形式的 DELETE)语句 INSERT 语句 (1)查询结果为单记录的 SELECT 语句这类语句的一般格式是:(主语言为 PL/1)EXEC SQL SELECT 目 标列 INTO 主变量[空值标志]FROM 基本表(或视图)[WHERE 条件表达式];SELECT 语句从数据库 中找到符合条件的记录,把结果放到主变量中。 (2)UPDATE 语句 (3)DELETE 语句 (4)INSERT 语句10.使用游标的 DML 语句 使用游标的一般情况下 SELECT 语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集 合操作转换为单记录处理。与游标有关的语句有四个: (1)定义游标。游标是与某一查询结果相联系的符号名。用 DECLARE 语句定义。这是一个说明语句。与 游标相对应的 SELECT 语句这时并不执行。 (2)打开(OPEN)游标。打开游标语句使游标处于活动状态。与游标相应的查询语句被执行。游标指向 查询结果集中的第一个记录之前。 (3)推进(FETCH)游标。把游标向前推进一个记录,并把游标指向的当前记录中的字段值取出,放到 INTO 子句后相应的主变量中。FETCH 语句常常用于循环,以借助主语言功能逐一处理结果集中的数据。 (4)关闭(CLOSE)游标。关闭游标,使它不再和原来的查询结果相联系。关闭了的游标可以再次被打 开,与新的查询结果集相联系。使用 CURRENT 形式的 UPDATE 和删除语句应注意: (1)若游标定义中的 SELECT 语句带有 UNION 或 ORDER BY 子句,或者这个 SELECT 语句相当于定义 了一个不可更新的视图,则不能用这两个更新语句。 (2)若使用 CURRENT 形式的 UPDATE 语句,则游标定义中要包括 FOR UPDATE 子句,指出更新的字 段(SET 子句中使用的字段)。因此,游标定义语句的一般格式为:EXEC SQL DECLARE 游标名 CURSOR FOR 子查询 UNION 子查询…[FOR UPDATE OF 字段名[,字段名]…|ORDER-BY-子句];11.SQL 的事务处理功能(1)事务处理的概述所谓事务(Transaction)是指一系列动作的组合,这些动作被当作一个整体来处理。 这些动作或者相继都被执行,或者什么也不做。在数据库中,一个动作是指一个 SQL 语句。事务是一组 SQL 语句组成的一个逻辑单位。要么这些 SQL 语句全部被按顺序正确执行,要么在某 SQL 语句执行失败 时,按照用户要求,取消已执行的 SQL 语句对数据库中数据的修改。或者要么事务中 SQL 语句都被正确 执行,完成该事务对数据库中数据的所有操作;或者要么相当于一条 SQL 语句也未执行,数据库数据未做 任何改动。 (2)SQL 语言的事务处理语句 SQL 语言有 3 条语句用于事务处理,它们是: (1)Commit 语句,对于正确执行了的事务进行提交,进行提交即对数据库中数据的修改永久化。同时还 释放事务和封锁,标志该事务结束。 (2)Save point 语句,定义事务中的一个回滚保留点,它是事务恢复时的一个标记点。 (3)rollback 语句,无论事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全 部修改,要么取消至某个指定回滚点后对数据库的全部修改。释放自保留点之后的全部表或行的封锁(没 有保留点,相当于回滚到事务开始处,终止该事务)。事务的恢复(回滚)是根据事务执行前保存下的当 时数据库状态来实现的。一遇到 rollback 语句,就将数据库中数据恢复到原来的状态,相当于撤消事务中 已执行了的 SQL 语句。四、数据库的存储结构数据库的存储结构不同于一般文件系统的存储结构。数据库数据的特点是各种记录型之间彼此有联系,数 据是结构化的。数据的存储结构不仅涉及每种记录型的记录如何存储,而且要使数据的存储反映各种记录 型之间的联系。在 DB 多级模式中引入内模式(存储模式)的主要目的是使模式的数据结构的描述同它的 存储表示的描述分开, 以致 DBA 为了协调数据库性能而对数据库数据的存储方法进行修改时, 可不必修改 模式,以提高数据库的物理独立性。在各个数据库管理系统中,对内模式的定义功能各不相同。在关系数 据库管理系统中有些 DDL 语句可影响数据库的存储结构。在 DBMS 中各级模式的存储结构是恒定的或唯 一的,而数据库内容(或其记录)的存储方式是不唯一的。数据库存储结构设计的好坏直接影响系统的性 能。在存储结构中主要是涉及存储记录的设计。存储记录与概念记录之间具有对应关系,如果存储记录与 概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论。概念记 录是指在逻辑结构中的记录。但当一个概念记录对应多个不同类型的存储记录时,存在如何设计存储记录 的问题。对于这样的概念记录,其存储记录可以有以下几种设计:1.顺序组织 顺序组织将存储记录设计成与概念记录一一对应,按 SNO 大小(或按记录到来)的顺序将记录组成一个顺序组织的 文件。这样组织的优点是结构简单,缺点是会浪费存储空间。2.顺序带链的组织 顺序带链的组织顺序带链组织允许记录中带有指针(Pointer),这样可以大大节省存储空间。3.带次关键字索引的顺序组织 带次关键字索引的顺序组织为了适应对多项内容的检索,可以建立索引文件,上述组织可改为带次关键字索引的顺序组织。4.多表组织 多表组织在次关键字索引中,由于一个次关键字值对应于多个记录值,它们的个数是不固定的,所以对应的指针数 目是可变的。这种可变性给管理带来困难,为了解决这个困难,引入了多表组织。多表组织的实现思想比 较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中 的指针指向第二个记录等等。5.完全倒排组织 在一个记录型中,对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组 完全倒排组织织。6.Hash 定址组织 对于每一个存储记录值存放在数据库的什么地方, 可通过对该记录的主关键字值的杂凑 函数计算得出。这种组织为 Hash 定址组织。杂凑函数种类很多,如质数除余法、基数转换法、平方取中法、 折叠法、位移法及各位数字分析法等等。关键是如何选择一个杂凑函数,尽可能避免发生碰撞。对于不同 的主关键字值通过计算而得到同一个地址的映象,称之为碰撞。 7.联系的存储 联系的存储在关系数据库中,通过外来关键字(Foreign Key)来表示概念记录之间的联系。例如,为了表达学生和学 校的联系,可以在学生记录中增加外来关键字“学校号”来表示联系。五、关系数据库 1.表格 表格表格(或简称表)表示了用户的特定类型(Type)的一些实体。表头由一些属性名(Attribute Name)组成, 每个属性名对应于一列。在表上属性名必须唯一,不允许重名。表体是由一些行或元组(tuple)、或记录 (record)组成。一个元组对应于传统的文件结构中的一个记录,一个记录含有若干个域(field)用以存储 属性值(Attribute value)。一个元组对应于一个“用户”实体的出现(occurrence)。表体中每一行和某一列 的交叉点(相当于记录中的域)上保存一个属性值。这个属性值叫做这一行(或这个实体出现)的相应属 性值。表体中每一列可以保存的值对应于某种属性类型(Type of Attribute),也就是说,这一列的属性值 只能取这个属性类型的值。某个属性所能取的所有值的集合叫做这个属性的值域(Domain of Attribute)。 类型和值域的对应关系是一对多的。一个类型有一个值域,但一个值域可以作为多个类型,基名称不同, 但实质上值域一样。实际上,类型是对值域的命名。能唯一标识一个元组的属性称之为关键属性(Primary Key Attribute)或简称为主关键字(Primary Key)。主关键字有时是由多个属性组成的,此时的主关键字 叫做组合关键字(Concatenated primary Key)。有的时候,表中必须由一些组合的主关键字才能唯一地标 识一个元组,也就是说,不存在能作关键字的一个属性。这时为了方便,往往引入一个附加的属性并称之 为外来关键字(Foreigh Key)来作主关键字。外来关键字为以后检索和查询带来了方便,但也增加了信息 冗余。2.表名、表头和表体 表名、 表名表名、表头和表体在关系模型中具有不同的作用或功能,因而也具有完全不同的性质。表头是一个属性的 集合,它规定了表的结构。表体是一个特殊的集体,称作为关系(relation)。“关系模型”中的“关系”一词 就是指表体中的这个数学关系。在关系数据库中,表名对应于数据库名(或关系名),表头对应于数据描 述(或结构描述),表体对应于数据库。表体是数据库的内容及数据库操作的对象。另外,有两个概念必 须加以强调:型(type)和值或出现(occurence)。表头定义了实体(或元组)的型,也就是说规定了实体 (或元组)的值域。而表体则给出了实体(或元组)的出现。出现是型中的一个值。3.关系的数学定义 关系的数学定义关系模型是建立在集合论(Set Theory)的基础之上的。现在,开始用集合论的术语来严格地定义数学上的 关系,即给出关系的数学定义。定义 1 域(Domain)是值(value)的集合。4.关系模型 关系模型关系模型由三部分组成:数据结构(即关系)、关系操作、关系的完整性。下面将对这三个部分进行分别的 讨论。(1)单一的数据结构―――关系 在关系模型中,无论是实体还是实体之间的联系均由单一的类型 结构―关系来表示。在前面,已给出了关系和域的数学定义,介绍了 n 元关系、元组和属性等概念。下面 介绍关键字、关系模式和关系数据库等一些基本概念。关键字 关系中的某一组属性,若其值可以唯一地标 识一个元组,则称该属性组为一个候选关键字(Candidate Key)。若一个关系有多个候选关键字,则可以 任选其中一个作为主关键字(Primary Key)。主关键字中的诸属性被称为主属性。关系模式 关系的描述称 为关系模式。它包括:关系名、组成关系的诸属性名、属性到域的映象、属性间的数据依赖关系等等。所以, 关系模式由关系名、诸属性名和属性到域的映象三个部分组成,关系模式通常简记为 R(A 1 ,A 2 ,…, A n ),其中 R 是关系名,A 1 ,A 2 ,…,A n 为诸属性名。属性到域的映象一般通过指定属性的类型 和长度来说明。某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合。关系的外延内容 有时简称为关系。但关系模式和关系的内容有时也统称为关系。读者可以从上下文中区别其确切的含义。 形象地说,关系模式是关于表名和表头的描述,而关系的内容是表体。关系数据库 在关系数据库中,要分 清型和值两个基本概念。关系数据库的型是指数据库的结构描述,它包括关系数据库名、若干属性的定义, 以及这些属性上的若干关系关系模式。亦称为数据库的内涵(Intension),数据库的值亦称为数据库的外 延。在关系数据库中,内涵是比较稳定的,它规定了外延的取值范围。而外延却是随时间变化的。这和在 一般的形式逻辑中外延和内涵一一对应有所区别。此处外延是指任意一个满足内涵的集合,而不一定恒指 满足内涵的最大的一个集合。关系模式(即内涵)是稳定的;而关系的内容,即外延,却是随时间动态的变 化而变化的。数据库的结构(即模式)是稳定的;而数据库中的数据内容却在不断地更新。 (2)关系操作 关系模型规定了关系操作的功能和特点,但不对 DBMS 语言的语法做出具体的规定。关系 数据库语言的主要特点(或优点)是其高度的非过程化(Non-procedureae)或者说明性(declarative)。关 系数据库语言的语句是透明的。 用户只须知道语句做什么, 而不须知道怎么做的。 Codd 在其早期的文章中, 引入了 8 种基本的操作:并(Union)交(Intersection)差(Difference)笛卡尔乘积(Cartesian Product)限 制(Restrictions)投影(Projection)连接(Join)除(Division)这些操作都是对关系的内容或表体实施操 作的,得到的结果仍为关系。注意,这些操作只是基本的操作,而不是不再可分的原始(Primitive)操作, 例如,Join,Intersection 和 Division 可以由其它五种操作合成。但是,把它们三个也作为基本操作使用起来 很方便。另外,Codd 并没说上述 8 种操作就是关系数据库只能有的 8 种操作。实际上,上述 8 种操作仅仅 是作为最小的 DML 操作的基础部分, 并且也还未考虑到 DDL 的需求。 SQL 支持的操作多于上述 8 种 DML 操作,而且 SQL 还支持 DDL 操作。关系操作的特点是集合操作,即操作的对象和结果都是集合。这种操 作方式也称为一次一集合(set-at-a-time)方式。而非关系模型的数据库的操作方式则为一次一记录 (record-at-a-time)方式。关系操作可以用两种方式来表示: ①代数方式,即关系代数 ②逻辑方式,即关系演算而关系演算又进一步分为元组关系演算和域关系演算。已经证明,这些表示方式 在功能上是相互等价的。一般选其一即可。 (3)关系模型的三类完整性 关系模型的三类完整性是: ①实体完整性(Entity Integrity) ②参照完整性(Referential Integrity) ③用户定义的完整性(User Defined Integrity)其中,实体完整性和参照完整性是任何关系模型都必须满足 的完整性约束条件,应该由关系数据库 DBMS 自动支持。而用户定义的完整性的支持是由 DBMS 提供完 整性定义设施(或机制),可以随 DBMS 商品软件不同而有所变化。实体完整性是指:若属性 A 是基本关 系 R 的主关键字的属性(即主属性),则属性 A 不能取空值(NULL)。在关系数据库中有各种关系,如 基本关系(常称为基本表)、查询表、视图表等等。基本表是指实际存在的表,它是实际存储数据的逻辑 表示。查询表是指和查询结果相对应的表。而视图表是由基本表或视图表导出的表,是虚表,不对应实际 存储的数据。实体完整性是针对基本关系的。空值是指“不知道”或者“无意义的”或“不属于定义域”值。空 值以“NULL”表示。对于实体完整性作如下说明: (1)一个基本关系通常对应于现实世界中的一个实体集。例如学生关系对应于学生实体集。基本关系不是 由其它关系生成的关系。基本关系是本原(Primitive),是定义复杂关系的出发点。 (2)现实世界中的实体是可区分的,即实体具有某种唯一性的标识。 (3)在关系模型中由主关键字作为满足唯一性的标识。 (4)主关键字中属性不能取空值。因为若主关键字中某属性取空值,则意味着某个实体不可标识;而这和 (2)相矛盾。参照完整性是指:若基本关系 R 中含有另一个基本关系 S 的主关键字 K S 所对应的属性组 F (F 称为 R 的外部关键字(external keys)),则在关系 R 中的每个元组中的 F 上的值必须满足: ①或者取空值(即 F 中的每个属性的值均为空值); ②或等于 S 中某个元组的主关键字的值。基本关系 R 和 S 不一定是不同的关系。外部关键字也称为外来关 键字。例如,某数据库中有职工关系 EMP(职工号,姓名,部门号)和部门关系 DEPT(部门号,部门名 称)为两个基本关系。关系 EMP 的主关键字为“职工号”,DEPT 的主关键字为“部门号”在 EMP 中,“部门 号”是 EMP 的外部关键字。故此,在 EMP 中的每个元组中“部门号”的值只有两种可能性: ①取空值。这说明这个职工尚未分到某个部门; ②或取非空值。这时“部门号”的值必须是 DEPT 中某个元组中的“部门号”的值。这说明一个职工不可能被 分配到一个不存在的部门。也就是说,被参照的关系 DEPT 中一定存在一个元组,该元组的关键字的值等 于 EMP 中某元组的外部关键字的值。 实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的 一般性原则。用户定义的完整性针对某一具体的数据库的约束条件。条件是由现实世界中的应用环境决定 的。它涉及到某一具体的应用中的数据所必须满足的语义要求。关型模型的 DBMS 应提供定义和检验这类 完整性条件的机制,以使用统一的方法来自动地处理它们而不要求应用程序员来承担这一功能。5.关系数据库语言概述 关系数据库语言概述关系数据库语言分三类:数据描述语言 DDL,数据操纵语言 DML 和数据控制语言 DCL。其中,DDL 负责 数据库的描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构。DML 负责数据库的操 作,提供一种处理数据库操作的机制。DCL 负责控制数据库的完整性和安全性,提供一种检验完整性和保 证安全的机制。 DML 是用户经常使用的语言, 包括了 DBMS 的主要功能。 DML 包括数据查询和数据的增、 删、改等功能。其中查询的表达方式是 DML 的主要部分。关系数据库的 DML 按照查询方式可以分为两大 类: (1)用对关系的集合代数运算来表示查询的方式,称为关系代数(Relational Algebra)。 (2)用谓词演算来表达查询的方式,称为关系演算(Relational Calculus)。关系演算又可按谓词变元的基 本对象是元组变量(tuple variable)还是域变量(domain variable)分为元组关系演算和域关系演算两种。 关系代数和两种关系演算均是抽象的查询语言,这些抽象的查询语言和实际的 DBMS 软件产品中实现的具 体的查询语言并不完全一样。但它们是 DBMS 中查询语言的理论基础。关系代数、元组关系演算和域关系 演算这三种语言在表达能力上是彼此相互等价的,它们均可以作为评价实际 DBMS 软件产品中查询语言能 力的标准。实际 DBMS 软件产品的查询语言,除了提供关系代数(或一种关系演算)之外,还提供了许多 附加的功能,如库函数、算术运算等功能。SQL 是介于关系代数,和关系演算之间的一种语言。SQL 不仅 具有丰富的查询功能,而且还具有数据库定义和数据库控制功能。SQL 是集 DDL、DML、DCL 为一体的 标准的关系数据库语言。SQL 充分体现了关系数据库语言的优点。6.关系代数 关系代数关系代数中的运算可以分为两类: (1)传统的集合运算,如并、交、差、笛卡尔乘积等。这类运算是从关系的“水平方向(即按行)”来进行 的。 (2)专门的关系运算,如选择、投影、连接、除。这类运算不仅涉及到行而且也涉及到列。7.关系演算 关系演算关系演算是以数理逻辑中的谓词演算为基础的。用谓词演算作为关系数据库的语言并提出关系演算的是 E.F.Codd。Codd 首先定义了关系演算语言 ALPHA。但 ALPHA 并没有在计算机上实现。但关系数据库管 理系统 INGRES 所用的 QUEL 语言是参考 ALPHA 研制的,与 ALPHA 十分类似。六、关系数据库的规范化理论 函数依赖 定义 1 设 R(U)是属性集 U 上的关系模式。X,Y 是 U 的子集。若对于 R(U)的任意一个可能的关系 r, r 中不可能存在两个元组在 X 上的属性值相等,而在 Y 上的属性值不等,则称‘X 函数确定 Y’或‘Y 函数依 赖于 X’,记作 X→Y。 函数依赖和别的数据依赖一样是语义范畴的概念。只能根据语义来确定一个函数依赖。例如姓名→年龄这 个函数依赖只有在没有同名人的条件下成立。如果允许有相同名字,则年龄就不再函数依赖于姓名了。设 计者也可以对现实世界作强制的规定。例如规定不允许同名人出现,因而使姓名→年龄函数依赖成立。这 样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发现有同名人存在,则拒绝插入该 元组。注意,函数依赖不是指关系模式 R 的某个或某些关系满足的约束条件,而是指 R 的一切关系均要满 足的约束条件七、数据库的安全与保护 1.安全性 安全性数据库的安全性是指保护数据库以防止不合法的或非正常的使用所造成的数据泄露、更改或破坏。安全性 问题不是数据库系统所独有的,计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且 为许多用户直接共享,是十分重要的信息资源。从而使安全性问题变得更为突出。系统安全保护措施是否 有效是数据库系统的主要性能指标之一。 对于数据库的安全保密方式可以有系统处理的和物理的两个方面。 所谓物理的是指,对于强力逼迫透露口令、在通信线路上窃听、以至盗窃物理存储设备等行为。对此所采 取的措施是将数据编为密码,加强警卫以识别用户身份和保护存储设备等措施。在一般计算机系统中,安 全措施是一级一级层层设置的。 (1)用户标识和鉴定首先,系统提供一定的方式让用户标识自己的名字或身份。系统进行核实,通过鉴定 后才提供机器使用权。常用的方法有:用一个用户名或者用户标识号来标明用户身份。系统鉴别此用户是否 是合法用户。若是,则可以进入下一步的核实;若不是,则不能使用计算机。用户名的登录只由系统管理员 进行,一般用户不能实施用户名登录。口令(Password),为了进一步核实用户,系统常常要求用户输入 口令。 (2)存取控制对于获得上机权的用户还要根据预先定义好的用户权限进行存取控制,保证用户只能存取他 有权存取的数据。所谓用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。它由两部分组 成,一是数据对象,二是操作类型。数据对象有二类。一类是数据本身,如关系数据库中的表、字段,非 关系数据库中的记录、字段(亦称为数据项)。另一类是外模式、模式、内模式。在关系系统中 DBA 可以 把建立、修改基本表的权力授予用户,用户获得此权力后可以建立基本表、索引、视图。这说明关系系统 中存取控制的数据对象不仅有数据而且有模式、外模式、内模式等数据字典中的内容。对于存取权限的定 义称为授权(Authorization)。这些定义经过编译后存储在数据字典中。每当用户发出存取数据库的操作请 求后,DBMS 查找数据字典,根据用户权限进行合法权限检查(Authorization Check)。若用户的操作请求 超出了定义的权限,系统拒绝执行此操作。授权编译程序和合法权限检查机制一起组成了安全性子系统。 衡量授权子系统精巧程度的另一个尽度是否提供与数据值有关的授权。有的系统还允许存取谓词中引用系 统变量,如一天中的时刻,终端设备号。这样用户只能在某台终端、某段时间内存取有关数据,这就是与 时间和地点有关的存取权限。另外,在操作系统中对文件、目标等的存取还有一些安全保护措施。其中加 密是一种防止数据内容被别人引用或了解的切实可行的办法。加密有程序加密和硬件加密卡两种形式。2.完整性 完整性数据库的完整性是指数据的正确性和相容性。DBMS 必须提供一种功能来保证数据库中数据的完整性。这 种功能亦称为完整性检查,即系统用一定的机制来检查数据库中的数据是否满足规定的条件。这种条件在 数据库中称为完整性约束条件。数据的约束条件是语义的体现,这些完整性约束条件将作为模式的一部分 存放数据字典中。数据的完整性和安全性是两个不同的概念。前者是为了防止数据库中存在不符合语义的 数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和 错误结果。而后者是保护数据库防止恶意的破坏和非法的存取。当然,完整性和安全性是密切相关的。特 别从系统实现的方法来看,往往是一种机制常常既可用于安全性保护亦可用于完整性保证。完整性约束条 件可以分类如下:(1)值的约束和结构的约束前者指对数据的值的限制,后者指对数据之间联系的限制。 关于对数据值的约束 这类约束条件是指对数据取值类型、范围、精度等的规定。关于数据之间联系的约束 数据库中同一关系的不同属性之间可以有一定的联系,从而也应满足一定的约束条件。同时,由于数据库 中数据是结构化的,不同的关系之间也可以有联系,因而不同关系的属性之间也可满足一定的约束条件。 (2)静态约束和动态约束所谓静态约束是指对数据库每一确定状态的数据所应满足的约束条件。以上所讲 的约束都属静态约束。动态约束是指数据库从一种状态转变为另一种状态时新、旧值之间所应满足的约束 条件。 (3)立即执行约束和延迟执行约束立即执行约束是指在执行用户事务时,对事务中某一更新语句执行完后 马上对此数据所应满足的约束条件进行完整性检查。延迟执行是指在整个事务执行结束后方对此约束条件 进行完整性检查,结果正确方能提交。完整性的实现应包括两个方面,一是系统要提供定义完整性约束条 件的功能,二是提供检查完整性约束条件的方法。对于数据值的那类完整性约束条件通常在模式中定义。 例如在模式中定义属性名、类型、长度、码属性名并标明其值是唯一的、非空的等等。另外的那些约束条 件就要用专门的方式加以定义。 3.并发控制 并发控制数据库是一个共享资源,可以由多个用户使用。这些用户程序可以一个一个地串行执行,也可以并行执行。 在单 CPU 计算机上,为了充分利用数据库资源,应该允许多个用户程序并行的存取数据。这样就会产生多 个用户程度并发地存取同一数据的情况。若对并发操作不加控制就会存取和存储不正确的数据,破坏数据 库的完整性(这里也称为一致性)。在多 CPU 计算机或多计算机网络环境下,并发控制尤为重要。 (1)事务的概念 事务(Transaction)是并发控制的基本单位。所谓事务是一个操作序列。这些操作作为 一个序列形成一个整体要么都做,要么都不做,是一个不可分割的工作单位。事务通常以 BEGIN TRANSACTION 开始,以 COMMIT 或 ROLLBACK 操作结束。COMMIT 即提交,提交事务中所有的操作, 事务正常结束。ROLLBACK 即撤消已作的所有操作,滚回到事务开始时的状态。这里的操作指对数据库的 更新操作。滚回即相当于所有操作均未执行。事务和程序是两个概念。一般地讲,一个程序可包括多个事 务,由于事务是并发控制的基本单位,所以下面的讨论均以事务为对象。 (2) 数据一致性级别的概念。 所谓并发控制就是要用正确的方式调度并发操作, 避免造成数据的不一致性, 使一个用户事务的执行不受其它事务的干扰。4.封锁 封锁封锁(Locking)就是事务 T 可以向系统发出请求,对某个数据对象(最常用的是记录)加锁。于是事务 T 对这个数据对象就有一定的控制。例如,其它事务不能更新此数据直到 T 释放(unlock)它的锁为止。确 切的控制由封锁的类型决定。 基本的封锁类型有两种:排它锁 (Exclu sive locks 简记为 X 锁) 和共享锁 (Share locks 简记为 S 锁) 若事务 T 对数据 R 加上 X 锁, 。 则只允许 T 读取和修改 R;其它一切事务对 R 的任何 (包 括封锁)请求都不成功,直至 T 释放 R 上的 X 锁为止。这就保证了其它事务不能再读取和修改 R,直到 T 释放 X 锁。若事务 T 对数据 R 加上 S 锁,则其它事务对 R 的 X 锁请求不能成功,而对 R 的共享请求可以 得到。这就保证了其它事务以读取 R 但不能修改 R,直至 T 释放 S 锁为止。5.可串行性 可串行性定义 当且仅当某组事务的一定交叉调度产生的结果和这些事务的某一串行调度的结果相同, 则这个交叉调 度是可串行化的。可串行性(Serializability)是并行事务正确性的准则。这个准则规定,一给定的交叉调度, 当且仅当它是可串行化的,才认为是正确的。6.两段锁协议 两段锁协议两段锁协议规定所有的事务应遵守下列规则: (1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁,而且: (2)在释放一个封锁之后,事务不再获得任何其它锁。所谓“两段”锁的含义是:事务分为两个阶段。第一 阶段是获得封锁,也称为扩展阶段。第二阶段是释放封锁,也称为收缩阶段。定理 若所有事务均遵守两段 锁协议,则这些事务的所有交叉调度都是可串行化的(证明略)。为了确保事务并行执行的正确性,许多 系统采用两段锁协议。同时系统设有死锁检测机制,发现死锁后按一定的算法解除死锁。7.恢复 恢复尽管系统中采取了各种保护措施来保证数据库的安全性和完整性不被破坏,保证并行事务的正确执行,但 是计算机系统中硬件的故障、软件的错误、操作员的失误以及故意的破坏仍是不可避免的。这些故障轻则 造成运行事务非正常地中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据 丢失。因此数据库管理系统必须具有把数扰库从错误状态恢复到某一已知的正确状态(亦称为完整状态或 一致状态)的功能,这就是数据库的恢复。恢复子系统是数据库管理系统的一个重要组成部分,而且还相 当庞大,常常占整个系统代码的 10%以上(如 IMS,DB2)。故障恢复是否考虑周到和行之有效,是数据 库系统性能的一个重要指标。大型的数据库应用对故障恢复的要求更加强烈。有时甚至采用双工制。 (1)故障的种类数据库系统中可能发生各种各样的故障,大致可以分以下几类:①事务内部的故障;②系统 范围内的故障;③介质故障;④计算机病毒。 (2)转储和恢复转储是数据库恢复中经常采用的基本技术。所谓转储即 DBA 定期地将整个数据库复制到 磁带或另一个磁盘上保存起来的过程。这些备用的数据文本为后备副本或后援副本。当数据库遭到破坏后 就可以利用后备副本把数据库恢复。这时,数据库只能恢复到转储时的状态,从那以后的所有更新事务必 须重新运行才能恢复到现时的正常状态。转储是十分耗费时间和资源的,不能频繁进行。DBA 应该根据数 据库使用情况确定一个适当的转储周期。转储可分为静态转储和动态转储。静态转储是指转储期间不允许 (或不存在)对数据库进行任何存取、修改活动。动态转储是指转储期间允许对数据库进行存取或修改。 即转储和用户事务可以并发执行。静态转储简单,但转储必须等待用户事务结束才能进行。同样,新的事 务必须等待转储结束才能执行。显然,这会降低数据库的可用性。动态转储可克服静态转储的缺点。但是, 转储结束时后援副本上的数据并不能保证正确有效。例如,在转储期间的某时刻 t 1 系统把数据 A=100 转 储到了磁带上,而在时刻 t 2 ,某一事务对 A 进行了修改使 A=200 转储结束,后援副本上的 A 已是过时的 数据了。为此,必须把转储期间事务对数据库的修改活动登记下来,建立日志文件(log file)。这样,后 援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。转储还可以分为海量转储和增量转储。海 量转储是指每次转储全部数据库。增量转储则指每次只转储上次转储后更新过的数据。如果数据库很大, 事务处理又十分频繁,则增量转储方式是很有效的。(3)日志文件日志文件是用来记录对数据库每一次更 新活动的文件。在动态转储方式中必须建立日志文件,后援副本和日志文件综合起来才能有效地恢复数据 库。在静态转储方式中,也可以建立日志文件。当数据库毁坏后可重新装放后援副本把数据库恢复到转储 结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务 进行撤消处理。这样不必重新运行那些在转储前已完成的事务程序就可把数据库恢复到故障前某一时刻的 正确状态。八、数据库应用系统的设计 1.数据库应用系统的设计步骤 数据库应用系统的设计步骤按规范设计的方法可将数据库设计分为以下六个阶段 (1)需求分析; (2)概念结构设计; (3)逻辑结构设计; (4)数据库物理设计; (5)数据库实施; (6)数据库运行和维护。2.需求分析 需求分析需求收集和分析是数据库应用系统设计的第一阶段。明确地把它作为数据库应用系统设计的第一步是十分 重要的。这一阶段收集到的基础数据和一组数据流图(Data Flow Diagram―――DFD)是下一步设计概念 结构的基础。概念结构对整个数据库设计具有深刻影响。而要设计好概念结构,就必须在需求分析阶段用 系统的观点来考虑问题、收集和分析数据及其处理。如何分析和表达用户需求呢?在众多的分析方法中,结 构化分析(Structured Analysis,简称 SA 方法)是一个简单实用的方法。SA 方法用自顶向下、逐层分解的 方式分析系统。用数据流图,数据字典描述系统。然后把一个处理功能的具体内容分解为若干子功能,每 个子功能继续分解,直到把系统的工作过程表达清楚为止。在处理功能逐步分解的同时,它们所用的数据 也逐级分解。形成若干层次的数据流图。数据流图表达了数据和处理过程的关系。处理过程的处理逻辑常 常用判定表或判定树来描述。数据字典(Data Dictionary,简称 DD)则是对系统中数据的详尽描述,是各 类数据属性的清单。对数据库应用系统设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主 要结果。数据字典是各类数据描述的集合,它通常包括以下 5 个部分: (1)数据项,是数据最小单位。 (2)数据结构,是若干数据项有意义的集合。 (3)数据流,可以是数据项,也可以是数据结构。表示某一处理过程的输入输出。 (4)数据存储,处理过程中存取的数据。常常是手工凭证、手工文档或计算机文件。 (5)处理过程。3.概念结构设计 概念结构设计如同软件工程中重视需求分析与规范说明的思想一样,数据库设计中同样十分重视数据分析、抽象与概念 结构的设计。概念结构的设计,是整个数据库设计的关键之一。概念结构独立于数据库逻辑结构,独立于 支持数据库的 DBMS,也独立于具体计算机软件和硬件系统。归纳总结,其主要特点是: (1)能充分地反映现实世界,包括实体和实体之间的联系,能满足用户对数据处理的要求,是现实世界的 一个真实的模型,或接近真实的模型。 (2)易于理解,从而可以和不熟悉计算机的用户交换意见。用户的积极参与是数据库应用系统设计成功与 否的关键。 (3)易于更动。当现实世界改变时容易修改和扩充,特别是软件、硬件环境变化时更应如此。 (4)易于向关系、网状或层次等各种数据模型转换。概念结构是各种数据模型的共同基础,它比任意一种 数据模型更独立于机器,更抽象,从而更加稳定。描述概念结构的有力工具是 E-R 模型。P.P.S.Chen 把用 E-R 模型定义的概念结构称为组织模式。设计概念结构的策略有 3 种: (1)自顶向下 首先定义全局概念结构的框架,然后逐步细化。 (2)自底向上 首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构。 (3)混合策略 自顶向下和自底向上相结合的方法。用自顶向下策略设计一个全局概念结构的框架,以它 为骨架集成由自底向上策略中设计的各局部概念结构。现介绍自底向上设计概念结构的策略。按照这种策 略,概念结构的设计可按下面步骤进行。 (1)数据抽象与局部视图设计 E-R 模型是对现实世界的一种抽象。一般地讲,所谓抽象是对实际的人、物、事和概念的人为处理。它抽 取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种抽象的概念精确地加以描述。这些概念 组成了现实世界的一种模型表示。有 3 种抽象方法形成了抽象机制,来对数据进行组织:①分类 (Classification) 定义某一概念作为现实世界中一组对象的类型。这些对象具有某些共同的特性和行为。 它抽象了对象值和型之间的“is a member of”的语义。在 E-R 模型中,实体型就是这种抽象。②聚集 (Aggregation) 定义某一类型的组成成分。 它抽象了对象内部属性类型和整体与部分之间“is a part of”的语 义。在 E-R 模型中若干属性的聚集组成了实体型,就是这种抽象。③概括(Generalization) 定义类型之间 的一种子集联系。它抽象了类型之间的“is a subset of”的语义。概括具有一个很重要的性质:继承性。子类继 承超类上定义的所有抽象性质。当然,子类可以增加自己的某些特殊属性。概念结构设计的第一步就是利 用上面介绍的抽象机制对需求分析阶段收集到的数据进行组织,形成实体、实体的属性,标识实体的码, 确定实体之间的联系类型(1∶1,1∶n,n∶m),设计成部分 E-R 图。 (2)视图的集成视图集成就是把上一步得到的各个部分 E-R 图综合成一个总体的 E-R 图。视图集成可以 有两种方式:①多个部分 E-R 图一次集成。②逐步集成。用累加的方式一次集成两个部分 E-R 图。无论哪种 方式,每次集成可分两步走。第一步是合并,解决各部分 E-R 图之间的冲突问题,生成初步 E-R 图。第二 步是修改和重构,消除不必要的冗余,生成基本 E-R 图。4.逻辑结构设计 逻辑结构设计逻辑结构设计的任务就是把概念结构转换为选用的 DBMS 所支持的数据模型的过程。设计逻辑结构按理应 选择对某个概念结构最好的数据模型,然后对支持这种数据模型的各种 DBMS 进行比较,选出最合适的 DBMS。但实际情况常常是已给定了某台机器,设计人员没有选择 DBMS 的余地。现行的 DBMS 一般只支 持关系、网状或层次三种模型中的某一种,对某一种数据模型,各个机器系统又有许多不同的限制,提供 不同的环境与工具。因而我们把设计过程分三步进行。首先把概念结构向一般的关系模型转换,然后向特 定的 DBMS 支持下的数据模型转换,最后进行模型的优化。 (1)E-R 图向关系数据模型的转换下面给出把 E-R 图转换为关系模型的转换规则。 ①一个实体转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。 ②一个联系转换为一个关系模式,与该联系相连的各实体的码以及联系的属性转换为关系的属性。该关系 的码则有三种情况:若联系为 1∶1,则每个实体的码均是该关系的候选码。若联系为 1∶n,关系的码为 n 端实体的码。若联系为 n∶m,则关系的码为诸实体码的组合。具有相同码的关系模式可合并。形成了一般 的数据模型后,下一步就向特定的 DBMS 规定的模型转换。设计人员必须熟知所用 DBMS 的功能及限制。 这一步转换是依赖于机器的,不能给出一个普遍的规则。转化后的模型必须进行优化。对数据模型进行优 化是指调整数据模型的结构,以提高数据库应用系统的性能。性能有动态性能和静态性能两种。静态性能 分析容易实现。根据应用要求,选出合适的模型是一项复杂的工作。 (2)规范化理论的应用规范化理论是数据库逻辑设计的指南和工具,具体地讲可应用在下面几个具体的方 面: 第一,在数据分析阶段用数据依赖的概念分析和表示各数据项之间的关系。 第二,在设计概念结构阶段,用规范化理论为工具消除初步 E-R 图中冗余的联系。 第三,由 E-R 图向数据模型转换过程中用模式分解的概念和算法指导设计。现在,不管选用的 DBMS 是支 持哪种数据模型的,均先把概念结构向关系模型转换。然后,充分运用规范化理论的成果优化关系数据库 模式的设计。5.数据库的物理设计 数据库的物理设计物理设计的内容主要包括: (1)确定数据的存储结构 从 DBMS 所提供的存储结构中选取一种合适的加以实现。确定存储结构的主要 因素是存取时间、 存储空间利用率和维护代价三个方面。 设计者常常要对这些因素进行权衡。 一般的 DBMS 也总是具有一定灵活性供你选择。例如,若引入某些冗余数据,则可能减少物理 I/O 次数提高检索效率。 相反节约存储空间检索代价就会增加。当然应该尽量寻找优化方法,使这三方面的性能都较好。折衷有时 是必须的。 (2)存取路径的选择和调整 数据库必须支持多个用户的多种应用,因而必须提供对数据库的多个存取入 口,也就是对同一数据存储要提供多条存取路径。物理设计的任务应确定建立哪些存取路径。设计者应该 进行定量的分析,根据计算结果确定存取路径。 (3)确定数据存放位置 首先按数据的应用情况划分为不同的组,然后确定存放位置。一般的应把数据的 易变部分和稳定部分分开,把经常存取和不常存取的数据分开。经常存取或存取时间要求高的记录应存放 在高速存储器上,如硬盘。存取频率小或存取时间要求低的放在低速存储器上,如软盘磁带。对于同一数 据文件也可根据情况进行水平划分或垂直划分。 (4)确定存储分配 许多 DBMS 提供了存储分配的参数供设计者物理优化处理用。例如溢出空间的大小和 分布参数,块的长度,块因子的大小,装填因子,缓冲区的大小和个数等等,它们都要在物理设计中确定。 这些参数的大小影响存取时间和存储空间的分配。物理设计过程需要对时间、空间效率、维护代价和各种 用户要求进行权衡,其结果可以产生多种方案。在实施数据库前对这些方案进行方案进行细致的评价,以 选择一个较优的方案是十分必要的。6.数据库应用系统的实施和维护 数据库应用系统的实施和维护对数据库的物理设计初步评价完成后就可建立数据库了。数据库应用系统实施对应于软件工程的编码、调 试阶段。设计人员运用 DBMS 提供的数据定义语言将逻辑设计和物理设计的结果严格地描述出来,成为 DBMS 可接受的源代码。经过调试产生目标模式。然后组织数据入库。组织数据入库是数据库应用系统实 施阶段最主要的工作。八、数据库应用系统的设计 1.数据库应用系统的设计步骤 数据库应用系统的设计步骤按规范设计的方法可将数据库设计分为以下六个阶段 (1)需求分析; (2)概念结构设计; (3)逻辑结构设计; (4)数据库物理设计; (5)数据库实施; (6)数据库运行和维护。2.需求分析 需求分析需求收集和分析是数据库应用系统设计的第一阶段。明确地把它作为数据库应用系统设计的第一步是十分 重要的。这一阶段收集到的基础数据和一组数据流图(Data Flow Diagram―――DFD)是下一步设计概念 结构的基础。概念结构对整个数据库设计具有深刻影响。而要设计好概念结构,就必须在需求分析阶段用 系统的观点来考虑问题、收集和分析数据及其处理。如何分析和表达用户需求呢?在众多的分析方法中,结 构化分析(Structured Analysis,简称 SA 方法)是一个简单实用的方法。SA 方法用自顶向下、逐层分解的 方式分析系统。用数据流图,数据字典描述系统。然后把一个处理功能的具体内容分解为若干子功能,每 个子功能继续分解,直到把系统的工作过程表达清楚为止。在处理功能逐步分解的同时,它们所用的数据 也逐级分解。形成若干层次的数据流图。数据流图表达了数据和处理过程的关系。处理过程的处理逻辑常 常用判定表或判定树来描述。数据字典(Data Dictionary,简称 DD)则是对系统中数据的详尽描述,是各 类数据属性的清单。对数据库应用系统设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主 要结果。数据字典是各类数据描述的集合,它通常包括以下 5 个部分: (1)数据项,是数据最小单位。 (2)数据结构,是若干数据项有意义的集合。 (3)数据流,可以是数据项,也可以是数据结构。表示某一处理过程的输入输出。 (4)数据存储,处理过程中存取的数据。常常是手工凭证、手工文档或计算机文件。 (5)处理过程。3.概念结构设计 概念结构设计如同软件工程中重视需求分析与规范说明的思想一样,数据库设计中同样十分重视数据分析、抽象与概念 结构的设计。概念结构的设计,是整个数据库设计的关键之一。概念结构独立于数据库逻辑结构,独立于 支持数据库的 DBMS,也独立于具体计算机软件和硬件系统。归纳总结,其主要特点是: (1)能充分地反映现实世界,包括实体和实体之间的联系,能满足用户对数据处理的要求,是现实世界的 一个真实的模型,或接近真实的模型。 (2)易于理解,从而可以和不熟悉计算机的用户交换意见。用户的积极参与是数据库应用系统设计成功与 否的关键。 (3)易于更动。当现实世界改变时容易修改和扩充,特别是软件、硬件环境变化时更应如此。 (4)易于向关系、网状或层次等各种数据模型转换。概念结构是各种数据模型的共同基础,它比任意一种 数据模型更独立于机器,更抽象,从而更加稳定。描述概念结构的有力工具是 E-R 模型。P.P.S.Chen 把用 E-R 模型定义的概念结构称为组织模式。设计概念结构的策略有 3 种: (1)自顶向下 首先定义全局概念结构的框架,然后逐步细化。 (2)自底向上 首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构。 (3)混合策略 自顶向下和自底向上相结合的方法。用自顶向下策略设计一个全局概念结构的框架,以它 为骨架集成由自底向上策略中设计的各局部概念结构。现介绍自底向上设计概念结构的策略。按照这种策 略,概念结构的设计可按下面步骤进行。 (1)数据抽象与局部视图设计 E-R 模型是对现实世界的一种抽象。一般地讲,所谓抽象是对实际的人、物、事和概念的人为处理。它抽 取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种抽象的概念精确地加以描述。这些概念 组成了现实世界的一种模型表示。有 3 种抽象方法形成了抽象机制,来对数据进行组织:①分类 (Classification) 定义某一概念作为现实世界中一组对象的类型。这些对象具有某些共同的特性和行为。 它抽象了对象值和型之间的“is a member of”的语义。在 E-R 模型中,实体型就是这种抽象。②聚集 (Aggregation) 定义某一类型的组成成分。 它抽象了对象内部属性类型和整体与部分之间“is a part of”的语 义。在 E-R 模型中若干属性的聚集组成了实体型,就是这种抽象。③概括(Generalization) 定义类型之间 的一种子集联系。它抽象了类型之间的“is a subset of”的语义。概括具有一个很重要的性质:继承性。子类继 承超类上定义的所有抽象性质。当然,子类可以增加自己的某些特殊属性。概念结构设计的第一步就是利 用上面介绍的抽象机制对需求分析阶段收集到的数据进行组织,形成实体、实体的属性,标识实体的码, 确定实体之间的联系类型(1∶1,1∶n,n∶m),设计成部分 E-R 图。 (2)视图的集成视图集成就是把上一步得到的各个部分 E-R 图综合成一个总体的 E-R 图。视图集成可以 有两种方式: ①多个部分 E-R 图一次集成。 ②逐步集成。用累加的方式一次集成两个部分 E-R 图。无论哪种方式,每次集成可分两步走。第一步是合 并,解决各部分 E-R 图之间的冲突问题,生成初步 E-R 图。第二步是修改和重构,消除不必要的冗余,生 成基本 E-R 图。4.逻辑结构设计 逻辑结构设计逻辑结构设计的任务就是把概念结构转换为选用的 DBMS 所支持的数据模型的过程。设计逻辑结构按理应 选择对某个概念结构最好的数据模型,然后对支持这种数据模型的各种 DBMS 进行比较,选出最合适的 DBMS。但实际情况常常是已给定了某台机器,设计人员没有选择 DBMS 的余地。现行的 DBMS 一般只支 持关系、网状或层次三种模型中的某一种,对某一种数据模型,各个机器系统又有许多不同的限制,提供 不同的环境与工具。因而我们把设计过程分三步进行。首先把概念结构向一般的关系模型转换,然后向特 定的 DBMS 支持下的数据模型转换,最后进行模型的优化。 (1)E-R 图向关系数据模型的转换下面给出把 E-R 图转换为关系模型的转换规则。 ①一个实体转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。 ②一个联系转换为一个关系模式,与该联系相连的各实体的码以及联系的属性转换为关系的属性。该关系 的码则有三种情况:若联系为 1∶1,则每个实体的码均是该关系的候选码。若联系为 1∶n,关系的码为 n 端实体的码。若联系为 n∶m,则关系的码为诸实体码的组合。具有相同码的关系模式可合并。形成了一般 的数据模型后,下一步就向特定的 DBMS 规定的模型转换。设计人员必须熟知所用 DBMS 的功能及限制。 这一步转换是依赖于机器的,不能给出一个普遍的规则。转化后的模型必须进行优化。对数据模型进行优 化是指调整数据模型的结构,以提高数据库应用系统的性能。性能有动态性能和静态性能两种。静态性能 分析容易实现。根据应用要求,选出合适的模型是一项复杂的工作。 (2)规范化理论的应用规范化理论是数据库逻辑设计的指南和工具,具体地讲可应用在下面几个具体的方 面:第一, 在数据分析阶段用数据依赖的概念分析和表示各数据项之间的关系。 第二, 在设计概念结构阶段, 用规范化理论为工具消除初步 E-R 图中冗余的联系。第三,由 E-R 图向数据模型转换过程中用模式分解的 概念和算法指导设计。 现在, 不管选用的 DBMS 是支持哪种数据模型的, 均先把概念结构向关系模型转换。 然后,充分运用规范化理论的成果优化关系数据库模式的设计。5.数据库的物理设计 数据库的物理设计物理设计的内容主要包括: (1)确定数据的存储结构 从 DBMS 所提供的存储结构中选取一种合适的加以实现。确定存储结构的主要 因素是存取时间、 存储空间利用率和维护代价三个方面。 设计者常常要对这些因素进行权衡。 一般的 DBMS 也总是具有一定灵活性供你选择。例如,若引入某些冗余数据,则可能减少物理 I/O 次数提高检索效率。 相反节约存储空间检索代价就会增加。当然应该尽量寻找优化方法,使这三方面的性能都较好。折衷有时 是必须的。 (2)存取路径的选择和调整 数据库必须支持多个用户的多种应用,因而必须提供对数据库的多个存取入 口,也就是对同一数据存储要提供多条存取路径。物理设计的任务应确定建立哪些存取路径。设计者应该 进行定量的分析,根据计算结果确定存取路径。 (3)确定数据存放位置 首先按数据的应用情况划分为不同的组,然后确定存放位置。一般的应把数据的 易变部分和稳定部分分开,把经常存取和不常存取的数据分开。经常存取或存取时间要求高的记录应存放 在高速存储器上,如硬盘。存取频率小或存取时间要求低的放在低速存储器上,如软盘磁带。对于同一数 据文件也可根据情况进行水平划分或垂直划分。 (4)确定存储分配 许多 DBMS 提供了存储分配的参数供设计者物理优化处理用。例如溢出空间的大小和 分布参数,块的长度,块因子的大小,装填因子,缓冲区的大小和个数等等,它们都要在物理设计中确定。 这些参数的大小影响存取时间和存储空间的分配。物理设计过程需要对时间、空间效率、维护代价和各种 用户要求进行权衡,其结果可以产生多种方案。在实施数据库前对这些方案进行方案进行细致的评价,以 选择一个较优的方案是十分必要的。6.数据库应用系统的实施和维护 数据库应用系统的实施和维护对数据库的物理设计初步评价完成后就可建立数据库了。数据库应用系统实施对应于软件工程的编码、调 试阶段。设计人员运用 DBMS 提供的数据定义语言将逻辑设计和物理设计的结果严格地描述出来,成为 DBMS 可接受的源代码。经过调试产生目标模式。然后组织数据入库。组织数据入库是数据库应用系统实 施阶段最主要的工作。 (1)数据库数据的载入和应用程序的开发由于数据库数据量一般都非常大,并且这些数据来源于一个组织 的各个部门,分散在各种数据文件或原始凭证中。这些数据的结构和格式一般也不符合数据库的要求,还 要进行转换。因此组织数据入库是一件耗费大量人力物力的工作。数据的转换和组织对于小系统可以用人 工方法完成。但是,人工转换效率低、质量差。一般来说,应设计一个数据输入子系统让计算机完成这个 工作。输入子系统的主要功能是:原始数据的输入、抽取、校验、分类、转换和综合,最终把数据组织成符 合数据库结构的形式。然后把数据存入数据库中。数据的转换、分类和综合常常要经过多次才能完成,因 而输入子系统的设计和实施亦是比较复杂的,要编写许多应用程序。输入子系统的设计不能等物理设计完 成后才动手,应该和数据库设计工作并行开展。为了保证数据库数据正确无误,必须高度重视数据的检验 工作。在输入子系统进行数据转换的过程中应该进行多次检验,每次检验的方法亦不要相同。对于重要数 据的校验更应该反复多次,确认正确后方可入库。数据库应用系统中应用程序的设计应该和数据库模式设 计并行。数据库应用系统的实施阶段的另一项工作便这是这些应用程序的编码、调试工作。有了装载实际 数据的数据库和应用程序,就建立了数据库应用系统,可以试运行了。 (2) 数据库应用系统的试运行在完成上述工作之后, 便可进入数据库的试运行阶段, 或者称联合调试阶段。 这阶段的主要工作是: ①实际运行应用程序,执行对数据库的各种操作,测试应用程序的功能。 ②测量系统的性能指标,分析是否符合设计目标。虽然已在物理设计过程中进行了性能预测,但是仅仅估 价了时间和空间指标,而且在性能估价的过程中作了许多简化和假设,忽略了许多次要因素,因而估价是 粗糙的并可能失真。必须在试运行阶段进行实际测量和评价。有些参数的最佳值往往是经过运行调试后才 找到的。如果实际结果不符合设计目标,则需返回物理设计阶段,调整物理结构,修改参数。有时,也许 还需要返回逻辑设计阶段,调整逻辑结构。最后还须指出两点。 第一,上面已看到组织数据入库是十分费事的,如果运行调试后又要修改数据库设计则又要重新组织数据 入库。因此应分批分期输入数据,逐步完成运行评价。 第二,数据库的实施和调试不是一朝一夕能完成的,在此期间软硬件的错误随时可能发生。加上数据库刚 刚建立,工作人员对系统还不熟悉,对其规律更缺乏深入了解,容易发生操作错误。因此必须做好数据库 的转储和恢复工作,这就要求设计人员了解 DBMS 的这个功能,并根据调试方式和特点首先实施,尽量减 少对数据库的破坏并简化故障恢复。 (3)数据库应用系统的运行和维护数据库应用系统投入运行标志着开发任务的基本完成和维护工作的开 始,但并不意味着设计过程结束。任何数据库应用系统只要它存在一天,它的设计就得不断地进行评价、 调整、修改,甚至完全改革。因此数据库应用系统的维护不仅是维护其正常活动而且是设计工作的继续和 提高。维护阶段的主要工作是: ①数据库的安全性、完整性控制及系统的转储和恢复; ②性能的监督、分析和改进; ③数据库的重组织和重构造。下面简单介绍数据库的重组织和重构造。数据库运行一段时间后,由于记录 的不断增、删、改,会使数据库的物理存储变坏。例如,逻辑上属于同一记录型或同一关系的数据被分散 到了不同的文件或文件的多个碎片上。从而降低了数据库存储空间的利用率和数据的存取效率,数据库的 性能下降。这时,DBA 就要进行数据库的重组织,DBMS 一般都提供重组织用的实用程序。在重组过程中, 按原设计要求重新安排记录的存储位置,调整数据区和溢出区,回收“垃圾”,减少指针链等。数据库的重 组织不改变原设计的数据逻辑结构和物理结构。而数据库的重构造则不同。部分修改原数据库的模式或内 模式称为数据库的重构造。由于数据库应用环境的变化,数据库重构的程度是有限的。只能作部分的修改 和调整。若应用变化太大,重构也无济于事了,则表明数据库应用系统生命周期的结束,应该重新设计数 据库应用系统。新的数据库应用系统新的生命周期开始了。九、数据库管理系统的设计与实现 1.DBMS 的目标(1)用户界面友好 对一个实用 DBMS 来说,用户界面的质量直接影响其生命力。DBMS 的用户接口应面 向应用,采用适合最终用户的交互式、表格式、菜单式、窗口式等界面形式,以方便使用和保持灵活性。 一般地说,用户界面应具有可靠性、简单性、灵活性和立即反馈等特性。 (2)功能完备 DBMS 功能随系统的规模的大小而异。大型 DBMS 功能齐全,小型 DBMS 功能弱一些。 DBMS 主要功能包括数据定义、数据库数据存取、事务控制、数据库组织和存储管理、数据库安全保护等 等。我们在下面讨论这些功能的内容。 (3)效率高 系统效率包括三个方面:一是计算机系统内部资源的使用效率。能充分利用资源(包括存储空 间、设备、CPU 等),并注意使各种资源负载均衡以提高整个系统的效率,二是 DBMS 本身的运行效率。 三是用户的生产率。这是指用户学习、使用 DBMS 和在 DBMS 基础上开发的应用系统的效率。2.DBMS 的基本功能(1)数据库定义 对数据库的结构进行描述,包括外模式、模式、内模式的定义;数据库完整性的定义;安全 保密定义(如用户口令、级别、存取权限);存取路径(如索引)的定义。这些定义存储在数据字典(亦称 为系统目录)中,是 DBMS 运行的基本依据。为此,提供数据定义语言 DDL。 (2) 数据存取 提供用户对数据的操纵功能, 实现对数据库数据的检索、 插入、 修改和删除。 一个好的 DBMS 应该提供功能强易学易用的数据操纵语言(DML)、方便的操作方式和较高的数据存取效率。DML 有两 类:一类是宿主型语言,一类是自含型语言。前者的语句不能独立使用而必须嵌入某种主语言,如 C 语言、 COBOL 语言中使用。而后者可以独立使用,通常以供终端用户交互使用和批处理方式两种形式使用。 (3)数据库运行管理 这是指 DBMS 运行控制、管理功能。包括多用户环境下的并发控制、安全性检查和 存取权限控制、完整性检查和执行、数据加密、运行日志的组织管理、事务的管理和自动恢复(保证事务 的正确性),这些功能保证了数据库系统的正常运行。 (4)数据组织、存储和管理 DBMS 要分门别类地组织、存储各类数据,包括数据字典(亦称系统目录)、 用户数据、存取路径等等。要确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之 间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法确保较高存取(如随 机查找、顺序查找、增、删、改)效率。 (5)数据库的建立和维护 包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织 和重构造以及有性能监测分析等功能。 (6)其它功能 包括 DBMS 与网络中其它软件系统的通信功能;一个 DBMS 与另一个 DBMS 或文件系统的 数据转换功能等。3.DBMS 与操作系统通常 DBMS 是建立在操作系统环境之上的。根据具体操作系统的特点,DBMS 可以用不同的方法利用操作 系统的基本功能来实现 DBMS。一般有下面 3 类方法: (1)共享模块法 (2)分离进程法 (3)和操作系统融合 4.DBMS 程序模块的组成作为一个庞大的系统软件,DBMS 由众多程序模块组成,它们分别实现 DBMS 复杂而繁多的功能。数据库 定义方面 有 DDL 翻译处理程序(包括外模式、模式、存储模式处理程序)、保密定义处理程序(如授权 定义处理程序)、完整性约束定义处理程序等。这些程序接收相应的定义,进行语法、语义检查,把它们 翻译为内部格式存储在数据字典中。DDL 翻译程序还根据模式定义负责建立数据库的框架(即形式一个空 库),等待装入数据。数据库操纵方面 有 DML 处理程序、终端查询语言解释程序、数据存取程序、数据 更新程序等。DML 处理程序或终端查询语言解释程序对用户数据操纵请求进行语法、语义检查、由数据存 取或更新程序完成对数据库的存取操作。数据库运行管理方面 有系统初启程序,负责

我要回帖

更多关于 gta5线上发生错误 的文章

 

随机推荐