数据库chapter7

始处,重新判断条件,以决定是否重新执行新的一次循环。

4畅在Transact‐SQL中,若循环体内包含多条语句时,必须用语句括起来。

5畅在Transact‐SQL中,可以使用嵌套的IF…ELSE语句来实现多分支选择,也可以使用语句来实现多分支选择。

6畅在存储过程中,若在参数的后面加上,则表明此参数为输出参数,执行该存储过程必须声明变量来接受返回值。

三、解答题

1畅存储过程的作用是什么?

2畅触发器的作用是什么?前触发型触发器和后触发型触发器有什么区别?

3畅插入、删除、修改操作产生的临时工作表分别叫什么?它们存放的是什么数据?

4畅利用家教管理数据库中的表,写出实现下列数据操作的存储过程语句,并写出相应的调用语句。

(1)查询申请了指定家长发布的家教信息的学生的姓名、院系、年级和性别。

(2)统计指定专业(默认为数学系)在指定月份内的家教需求状况,列出家教数目。

(3)查询指定的学生申请指定家教信息的状态,将申请状态用输出参数返回,如果该学生没有申请指定的家教信息,则显示相应的提示信息。

5畅利用家教管理数据库中的表,写出实现下列数据操作的触发器语句。

(1)限制家长发布家教的时薪低于20元/小时的家教信息,分别用前触发型触发器和后触发型触发器实现。

(2)保证只有当学生的申请通过审核之后,学生才可以看到家长的联系方式。

?

?

361

华中科技大学管理学院

第7章 数据库设计

本章讨论数据库设计的方法和技术。主要围绕数据库设计过程的六个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护,依次进行介绍。

7畅1 数据库设计概述

1畅数据库设计的任务和内容

(1)数据库设计的任务

数据库设计是指根据用户需求研制数据库结构并应用数据库的过程。具体地说,数据库设计是指对于指定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能有效地存储数据,满足用户的信息需求和处理要求。数据库设计的优劣将直接影响信息系统的质量和运行效果。因此,设计一个结构优化的数据库是对数据进行有效管理的前提和正确利用信息的保证。

(2)数据库设计的内容

数据库设计的内容包括数据库的结构设计和数据库的行为设计两个方面。

数据库的结构设计是指根据给定的应用环境,进行数据库的模式设计或子模式设计。它包括数据库的概念设计、逻辑设计和物理设计,即设计数据库框架或数据库结构。数据库结构是静态的、稳定的,一经形成后通常情况下是不容易也不需要改变的,所以结构设计又称为静态模式设计。

数据库的行为设计是指数据库用户的行为和动作。在数据库系统中,用户的行为和动作是指用户对数据库的操作,这些要通过应用程序来实现,所以数据库的行为设计就是操作数据库的应用程序的设计,即设计应用程序、事务处理等,所以行为设计是动态的,行为设计又称为动态模式设计。

2畅数据库设计的步骤

按照规范化的设计方法,数据库的设计过程可分为以下六个阶段:需求分析、概念结构设计、逻辑结果设计、物理结构设计、数据库实施、数据库运行和维护,如图7畅1所示。

数据库设计中,前两个阶段是面向用户的应用需求,面向具体的问题;中间两个阶段是面向数据库管理系统;最后两个阶段是面向具体的实现方法。

?华中科技大学管理学院

461

?

图7畅1 数据库设计的步骤

(1)需求分析阶段

需求分析是指收集数据库所有用户的信息内容和处理需求。在这一阶段,要确保用户目标的一致性。需求分析是数据库设计最重要的一步,它决定了以后各步设计的速度和质量。需求分析的最终结果是提供一个可作为设计基础的系统规格说明书和需求模型。

(2)概念结构设计阶段

概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个与具体数据库管理系统无关的概念模型。概念结构设计是整个数据库设计的关键。概念结构设计的最终结果是提供一个独立于具体数据库管理系统的概念模型。

(3)逻辑结构设计阶段

逻辑结构设计是指根据用户对数据的处理要求、数据约束和具体数据库管理系统的信息,把概念模型转换成具体数据库管理系统支持的数据模型,并对其进行优化。逻辑结构设计的最终结果是提供具体数据库管理系统支持的逻辑模型。

(4)物理结构设计阶段

物理设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。物理结构设计的最终结果是得到一个完整的、能实现的数据库结构。

(5)数据库实施阶段

数据库实施是指根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,并把数据装入数据库进行试运行。

?

?

561

华中科技大学管理学院

(6)数据库运行和维护阶段

数据库运行与维护是指对数据库系统实际正常运行使用,并收集和记录数据库运行状况的数据,用来评价数据库的性能,更进一步用于对数据库的修正。

经历上述六个阶段可以形成数据库的三级模式结构,如图7畅2所示。

图7畅2 数据库设计过程与数据库各级模式示例

需求分析阶段,综合各个用户的应用需求;在概念结构设计阶段形成独立于机器特点,独立于各个数据库管理系统产品的概念模型,最常用的就是E‐R模型;在逻辑结构设计阶段将逻辑模型转换成具体数据库管理系统支持的数据模型,最常见的方法就是将E‐R模型转换成关系模式;然后根据用户处理的要求、安全性和完整性要求等,在基本表的基础上再建立必要的视图;在物理结构设计阶段,根据数据库管理系统的特点和处理性能等的需要,形成数据库的物理模式;实施阶段系统设计人员基于外模式,进行系统功能模块的编写与调试;设计成功之后就进入系统的运行和维护阶段。

7畅2 需求分析

数据库需求分析是在计算机人员和用户双方共同对应用问题进行理解和分析的基础上,采用合适的工具和符号,系统地描述数据库的功能特征、性能特征和约束,并形成需求说明书,作为以后数据库设计、测试和维护的依据。

7畅2畅1 需求分析的基本内容

数据库的需求分析主要包括以下内容。

?华中科技大学管理学院

?

661

1畅数据需求分析与数据处理需求分析

数据需求分析是从对数据组织与存储的设计角度,辨识应用领域所管理的各类数据项(DataItems)和数据结构。

数据处理需求分析从数据访问和处理的角度,明确对各类数据项所需进行的数据访问操作,分析结果可表示为数据流图(DataFlowDiagram,DFD)或数据库应支持的各种数据处理事务规范。

数据需求分析得到的各类数据项和数据结构、数据处理需求分析结果在一起,组成数据字典。数据字典包括数据项、数据结果、数据流、数据存储和处理过程五个部分,数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、初级存储的逻辑内容。

2畅业务规则需求分析

应用领域的业务规则(又称业务处理逻辑、业务逻辑)描述了应用领域中的业务功能、处理流程和步骤。业务规则需求分析是从数据库整体功能出发,分析系统中一些较大子系统应具有的业务类型和功能,明确用户或外部系统与数据库的交互模式。分析对象既可以是与数据管理有关的业务规则,也可以是与数据库完全无关的系统业务。业务规则需求反映了数据库的功能、性能需求,为后续系统设计提供了重要依据。

3畅其他需求分析

(1)性能需求分析

功能需求描述了一个数据库系统应当做什么,性能需求则描述了数据库应做到什么程度。如数据操作相应时间,系统吞吐量,允许并发访问的最大用户数都是常见的性能指标。

(2)存储需求分析

存储需求分析是指估计数据库需要的数据存储量,包括初始数据库大小和数据库增长速度。数据存储总量的估算是根据数据字典中每个数据项的结构描述信息,估计每个数据项的容量,将所有数据项的容量累加即可。

(3)安全性分析需求

安全需求分析应考虑各类用户的数据视图和视图访问权限,及数据库应有的口令保护机制或其他安全认证机制,用以控制用户登录数据库等。

(4)备份和恢复需求分析

备份和恢复是从数据库可靠性和系统故障恢复角度提出的系统需求,包括以下内容:数据库运行过程中备份数据库的时间和备份周期;所需备份的数据库是

?

761

?

华中科技大学管理学院

数据库中的全部数据(包括应用数据、索引、日志等),还是其中的一部分;备份方式是采用完全备份,还是差异备份。

7畅2畅2 需求分析的主要工作

具体说,需求分析包括四个方面的工作。

1畅调研分析,确认系统边界

在进行数据库应用系统设计之初,设计人员一定要对所设计的系统进行细致的调研,掌握大量的第一手资料,掌握目前的工作方式、工作状态及所存在的问题。

对于饭堂管理系统,设计者就必须到学校后勤集团、教务处等相关部门去调查,了解学生申请新饭卡、充值饭卡、使用饭卡、挂失饭卡和注销饭卡的过程。收集这一过程中所发生的所有凭证、报表、档案;调查了解这些部门在平时工作过程中经常处理的事务及涉及的报表(如统计报表、分析报表);调查他们对一些非常规事务(如饭卡不能正常使用、饭卡挂失)的处理程序。在调研过程中,一定要注意对原始数据(凭证、报表、台账、档案)的收集,掌握数据的安全需求,并对其妥善归档保管。

在进行充分调研后,设计人员就可以对系统所涉及的各方面任务排定轻重缓急,以此确定出系统开发的任务,即确定系统边界。

对于饭堂管理系统,可以将饭卡申请、使用、充值、挂失和注销作为系统工作目标;而把学生信息管理等工作列在首期工作边界之外,这样便于集中精力做好主要工作。

对初步确定的系统边界要与用户及时交换意见,取得用户认可。

2畅整理资料,初步确定目标系统的功能和数据结构

首先是收集资料,熟悉情况。接下来的工作就是对所调查的资料进行研究、分析、整理。在这一步,要列出很多图表,用以整理思路,并为后续工作打下基础。

1)列出工作事务清单,写出其大致工作过程与程序。对于饭堂管理系统,其主要工作事务包括新生申请饭卡、饭卡充值、使用饭卡、挂失饭卡和注销饭卡等。可用一张表格将其编号并全部罗列出来,简单写出每一步的工作依据、程序及结果,还要写出该项事务处理的频度,注明是“经常”、“偶尔”或“很少”发生的事务。

2)列出各种凭证、报表、台账,找出它们与工作事务的关系。每项工作都有其依据、处理程序及结果,一般依据与结果都是以凭证、报表、台账等数据体现的。

?华中科技大学管理学院

?

861

3)绘制业务流程图和数据流图。绘制业务流程图和数据流图,可以帮助设计者对所开发系统的需求、基础及约束条件等认识得更清晰、更深刻,从而设计出更合理、更适应用户需求、更受欢迎的应用系统。业务流程图和数据流图的具体绘制方法,请读者参阅相关资料学习。

3畅建立数据字典

通过全面的数据采集和对数据的详细分析,事实上就产生了两种类型的数据:一类数据描述了现实世界中各类实体及其相互联系,例如,学生、饭卡、售饭机、工作人员等,这类数据是用户所熟悉和需要的;另一类数据描述了数据定义的结果,它们是描述前一类数据的数据,用于描述它们的基本特征,包括数据的名称、定义、类型、值域及其如何被使用等,这类数据被称为元数据,是数据库设计人员与数据库管理人员关心的数据。数据字典是管理和控制元数据的工具。数据字典也是对数据流图中各类数据特性进行规范的描述,是对数据流图的注释与重要性的补充,使数据库设计人员在以后的设计中能更好地掌握用户的需求。

数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。

1)数据项是不可再分割的数据单位,包括数据项名、描述、别名、数据类型、长度和取值范围等。

2)数据结构指数据之间的组合关系,包括数据结构名、描述和定义等。

3)数据流指数据结构在系统内传输的路径,包括数据流名、描述、数据流来源、数据流去向和流量等。

4)数据存储指数据结构停留或保存的地方,反应数据的来源和去向,包括数据存储名、描述、编号、输入的数据流、输出的数据流和组成等。

5)处理过程指具体的处理逻辑,包括处理过程名、描述、输入数据流、输出数据流和处理等。

4畅需求描述

在对应用领域全面、细致和准确分析并获取理解的基础上,就可以进行需求的描述和表述工作了。需求描述是对待开发系统从宏观和整体上的一个完整描述。它是项目开发方和使用者或用户的一个约定,也是项目后期审核和验收的依据。

需求描述由需求模型和需求说明书组成。

需求分析说明书是系统分析阶段的最后工作,是对需求分析阶段的一个总结。系统需求分析说明书一般包括如下内容。

1)系统概况,包括系统的目标、范围、背景、历史和现状等。

?

961

?

华中科技大学管理学院

2)系统的原理和技术。

3)系统总体结构和子系统结构说明。

4)系统总体功能和子系统功能说明。

5)系统数据处理概述、工程项目体制和设计阶段划分。

6)系统方案及技术、经济、实施方案的可行性。

7畅3 概念结构设计

数据库概念设计的意义是理解和描述数据需求,确定在数据库中存储和处理什么数据,产生反映企业组织信息需求的数据库概念结构,即概念模式。

数据库概念设计的依据是需求分析阶段的文档,包括需求说明书、功能模型及从需求分析阶段收集到应用领域的各类报表等。

数据库概念设计包括以下基本步骤:确定实体、确定联系和联系类型、建立由信息模型表示的企业模型、确定实体属性、对信息模型进行优化。

概念结构设计通常有四类方法:自顶向下、自底向上、由里向外和混合策略。无论采用哪种设计方法,一般都以E‐R模型为工具来描述概念结构。

7畅4 逻辑结构设计

逻辑结构设计的目的是把概念设计阶段设计好的全局概念模式转换成与具体的数据库管理系统所支持的设计模型相符合的逻辑结构,包括数据库的模式和外模式,并做到数据结构合理,数据之间不存在不合理的数据依赖关系,数据满足各类应用的处理和使用要求,为数据库的物理结构设计及数据库高效、正确地运行打下基础。数据库逻辑设计的依据和结果如图7畅3所示。

图7畅3 数据库逻辑设计的依据和结果

由图7畅3可知,数据库逻辑设计的依据是数据库概念设计的结果,包括概念数据模型、设计处理要求、数据约束、安全性要求及数据库管理系统的相关信息。这个阶段的工作成果是数据库管理系统可以处理的模式和数据库物理设计?华中科技大学管理学院

071

?

指南。

一般情况下,关系数据库系统的逻辑结构设计的步骤为:首先将概念结构转化成一般的关系数据模型;然后将转化来的关系数据模型向特定数据库管理系统支持的数据模型转换;最后是对数据模型进行优化。

1畅E‐R模型向关系数据模型的转换

逻辑设计的第一步是把概念设计的结果即全局E‐R模式转换成初始关系模式。

2畅关系模式的规范化

数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能还应该根据应用需要适当地修改、调整数据模型的结构,也就是对数据库模型进行优化。关系模型的优化通常是以规范化理论为基础的。

3畅关系模式的评价

模式评价的目的是检查已给出的数据库模式是否完全满足用户的功能要求,是否具有较高的效率,并确定需要加以修正的部分。模式评价主要包括功能和性能两个方面。

7畅5 物理结构设计

数据库物理结构主要指数据库的存储记录格式、存储记录安排和存取方法。显然,数据库的物理结构设计是完全依赖于给定的硬件环境和数据库产品的。数据库物理结构设计是在具体的硬件环境、操作系统和数据库管理系统约束下,根据数据库逻辑设计的结果,设计合适的数据库存储结构。其目标是得到存储空间占用少、数据访问效率高和维护代价低的数据库物理模式。

数据库物理设计主要包括以下步骤。

1畅数据库逻辑模式的调整

数据库逻辑模式调整就是将与平台无关的描述数据库逻辑结构的关系模式及其视图转换为所选定的具体数据库管理系统平台支持的基本表和视图,并利用数据库管理系统提供的完整性机制(如触发器等)设计定义在基本表上的面向应用的业务规则。

2畅文件组织与存取设计

文件的组织与存取设计就是选择或配置基本表的文件组织形式,如堆文件、

?

171

?

华中科技大学管理学院

顺序文件、索引文件、散列文件等;根据实际情况,为基本关系表设计合适的存取方法和存取路径,如设计索引字段和索引,以提高数据查询速度。

下面给出一些为基本表选择合适的文件结构的原则。

1)如果数据库中的一个基本表中的数据量很少,并且插入、删除、更新等操作非常频繁,该基本表可以采用堆文件组织方式。

2)如果用户的查询条件定义在查找码上,则顺序文件是比较合适的文件结构。

3)如果用户查询是基于散列域值的等值匹配,特别是如果访问顺序是随机的,采用散列文件比较合适。但是散列文件不适合基于散列域值的非精确查询(如模式查询、范围查询等)和基于非散列域进行查询。

4)B-树和B+树比较适合于定义在大数据量基本表上,基于查找码的等值查询、范围查询、模式查询和部分查询。

5)如果某些重要而频繁的用户查询经常需要进行多表连接操作,可以考虑将这些基本表组织为聚集文件,以改善查询效率。

3畅数据分布设计

数据分布设计就是根据数据类型、作用和使用频率的不同,将数据库中应用数据、索引、日志、备份数据等不同类型数据合理安排在磁盘、磁带等不同存储介质中;针对分布式数据库系统,根据实际需要,对应用数据设计合理的数据副本,通过水平划分或垂直划分分割成不同的数据片段,然后分布地存储在各局部数据库中,以提高系统的数据访问效率和数据可靠性。

不同数据类型在系统中作用不同,使用的频率也不一样,因此存放的位置也不相同。数据库备份数据、日志文件备份数据用于故障恢复,使用频率低,而且数据量大,可以存储在磁带中;而应用数据、索引和日志则使用频繁,要求的响应时间短,必须放在支持直接存储的磁盘存储介质上。

4畅确定系统配置

确定系统配置就是根据应用环境和上述物理设计结果,合理设置和调整数据库管理系统和操作系统的存储分配参数,提供系统软硬件平台的初始配置信息。

主要配置变量包括:同时使用数据库的用户数,同时打开的数据库对象数,使用的缓冲区大小,时间片大小,数据库的大小,装填因子,锁的数目等等,这些参数值影响存取时间和存储空间的分配,在物理设计时要根据应用环境确定这些参数值,以使系统性能最优。

上述设计结果应形成数据物理设计文档,供下一阶段的数据库实现与部署使用。

?华中科技大学管理学院

?

271

7畅6 数据库实施

数据库实施是根据逻辑结构设计和物理结构设计的结果,在计算机上建立起实际的数据库结构,装入数据,进行测试和试运行的过程。数据库实施主要包括以下工作:用DDL定义数据库结构、组织数据入库、编制与调试应用程序和数据库试运行。

1畅建立实际数据库结构

确定了数据库的逻辑结构与物理结构后,就可以用所选用的数据库管理系统提供的DDL来严格描述数据库结构及相应的数据库对象(包括表、视图、索引、存储过程、触发器等),使用户可以很方便地定义数据库结构。

对于饭卡管理系统,这一步需要根据设计结果在数据库上建立起学生表、饭卡表、消费记录表、售饭机表、工作人员表和操作表等六个表。

2畅载入数据

数据库结构建立好后,就可以向数据库中装载数据了。组织数据入库是数据库实施阶段最主要的工作。对于数据量不是很大的小型系统,可以用人工方法完成数据的入库;对于中大型系统,可以采用计算机辅助数据入库。其步骤如下所述。

(1)筛选数据

将需要装入数据库中的数据从各个部门的数据文件或原始凭证中筛选出来。

(2)转换数据格式

将筛选出来的需要入库的数据转换成符合数据库要求的格式。这种转换有时可能很复杂,工作量很大。

(3)输入数据

将转换好的数据输入计算机中。

(4)校验数据

为了防止不正确的数据入库,在源数据入库前对其进行检验。

如饭卡管理系统需要将不同来源、格式各异的数据进行筛选,剔除不需要的数据,然后根据已经建立好的数据库的表的字段类型和个数,转换选出来的数据,并将数据输入到数据库中。

3畅编制与调试应用程序

编制与调试应用程序是与组织数据入库同步进行的。在调试应用程序时,由于数据入库尚未完成,应用程序的调试将会出现一定的困难,可先使用模拟

?

371

?

华中科技大学管理学院

数据。

对于饭卡管理系统,这一步需要具体的编程人员根据设计的饭卡管理业务系统的模块和功能,编写相应的应用程序,并在已经导入数据的数据库上调试,如果调试没有错误,系统就可以试运行了。

4畅数据库的试运行

数据库试运行也称为联合调试,是十分必要的。一方面,可以通过试运行来进一步检验应用程序在真实的或接近真实的环境下是否符合设计要求;另一方面,数据库的试运行对于系统设计的性能检测和评价是十分重要的。其主要工作包括两个方面。

1)功能测试,即实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。

2)性能测试,即测量系统的性能指标,分析是否符合设计目标。

注意:

1)对于数据量大的中大型系统,数据装载是非常耗时、耗力的,因此不必等到所有的数据都装入库后才开始试运行,可以先装载少量的数据,等到试运行的结果符合数据要求后再批量装入全部数据。

2)为了防止由于系统本身的问题或者操作人员误操作引起各种故障,在试运行阶段应该先做好数据库的转储和恢复工作。

饭卡管理系统开始试运行时,收集学生、工作人员等对其功能和性能的评价,从而找出系统存在的不足并加以改进。如果一些小改动不能解决这些问题,就要考虑重新设计部分数据库结构。

7畅7 数据库的运行和维护

在数据库设计并试运行成功后,就意味着数据库可以真正投入运行了,同时也标志着开发任务的基本完成和维护工作的开始。为了保证数据库正常和高效地运行,在数据库系统运行过程中必须不断地对其进行评价、调整及修改等维护工作,这是一项长期的任务,也是设计工作的继续和提高。

数据库维护工作的主要实施者是专业技术人员和DBA,主要工作内容包括:数据库的转储和恢复;数据库的安全性、完整性控制;数据库性能的监督、分析和改进;数据库的重组和重构。

7畅7畅1 数据库的备份和恢复

所谓备份,就是把数据库复制到转储设备的过程。备份是恢复数据库最容易和最能防止意外的保证方法。所谓恢复,就是把数据库由存在故障的状态转变为?华中科技大学管理学院

?

471

无故障状态的过程。备份和恢复是数据库管理员维护数据库安全性和完整性的重要操作。

1畅备份设备

备份设备是指备份数据库的场所。数据库可以备份到磁盘或磁带上,备份方式可以分为两种:一种是先创建备份设备,然后将数据库备份到备份设备上(这种设备被称为永久备份设备);另一种是直接将数据库备份到物理文件上(这种备份设备被称为临时备份设备)。

2畅备份类型

SQLServer支持四种备份类型:数据库备份、差异备份、事务日志备份、文件和文件组备份。其中,第四种方法主要针对特大型数据库的备份。

(1)完全备份

完全备份(FullDatabaseBackups),又称为数据库备份,是指将数据库中的全部信息进行备份。它是备份的基线,它不仅备份数据库的数据文件、日志文件,还备份文件的存储位置、数据库中的全部对象及相关信息。由于是对数据库的完全备份,所以这种备份类型不仅速度较慢,而且将占用大量磁盘空间。

(2)差异备份

差异备份(DifferentialDatabaseBackups)是指备份从最近的完全备份之后对数据所作的修改。它以完全备份为基准,备份完全备份之后变化了的数据库文件、日志文件以及数据库中其他被修改的内容。差异备份消耗的时间比完全备份少。

(3)事务日志备份

事务日志备份(TransactionLogBackups)是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。

日志是用来记录事务对数据库的更新操作的文件。数据库在运行时,数据库管理系统负责将所有事务的更新操作登记到日志文件中,也就是说日志文件是系统自动维护的。

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则。

1)登记的次序严格按并发事务执行的时间次序。这条原则保证了事务对数据库操作的可再实现性和正确性。例如,在故障发生前,顺序执行了两个事务T1和T2,T1把饭卡A的余额5元减少2元,T2将饭卡A的余额清零,则饭卡A的余额变为0元;如果日志文件中T1和T2的顺序颠倒了,故障恢复时,则饭卡A的余额是先清零再减少2元,结果为-2元,与故障前的饭卡A的余额不一致。

?

571

?

华中科技大学管理学院

2)必须先写日志文件,后写数据库。把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记下这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是执行一次撤销操作,并不会影响数据库的正确性。

事务日志记录了用户对数据进行的修改操作,随着时间的推移,日志中的记录数会越来越多,这样会造成磁盘空间不足的情况。因此,必须要定期将日志记录中不需要的记录清除掉,以便腾出空间。清除掉无用日志记录的过程就叫做截断日志。

(4)文件和文件组备份

文件或文件组备份(FileandFileGroupBackups)是指对数据库文件或文件夹进行备份,但其不像完整的数据库备份那样同时也进行事务日志备份。使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复。

3畅备份策略

SQLServer支持三种备份策略:完全备份、完全备份加日志备份、完全备份加差异备份再加日志备份。不同的备份策略适用于不同的应用方面,选择或制定一种合适的备份策略,可以将丢失的数据减少到最少,而且可以加快数据库恢复过程。

(1)完全备份

完全备份适合于数据库数据不是很大,而且数据更新不是很频繁的情况。完全备份可以几天或几周进行一次。例如,可以每天零点进行一次完全备份。每当进行一次新的完全备份,前边进行的完全备份可能就没什么用处了,因为后续的完全备份包含的是数据库的最新情况。

(2)完全备份加日志备份

如果不允许丢失太多数据,又不希望经常地进行时间较长的完全备份,这时可以在完全备份中间加部分日志备份。例如,可以每天零点进行一次完全备份,然后每隔几小时进行一次日志备份。

(3)完全备份加差异备份再加日志备份

采用这种策略,即在完全备份中加一些差异备份,在差异备份中再加一些日志备份。这样做的好处是备份和恢复的速度都比较快,而且当系统出现故障时,丢失的数据也比较少。

?华中科技大学管理学院

?

671

4畅数据库恢复模式

当数据库系统出现故障或被毁坏时,要进行数据库恢复。数据库恢复的前提是对数据库已经进行了备份。数据库恢复有简单恢复、完全恢复、批日志恢复三种模式。

(1)简单恢复

简单恢复(SimpleRecovery)是指在进行数据库恢复时仅使用了完全备份或差异备份,而不涉及事务日志备份。简单恢复模式可使数据库恢复到上一次备份的状态,但由于不使用事务日志备份来进行恢复,所以无法将数据库恢复到失败点状态。

(2)完全恢复

完全恢复(FullRecovery)是指通过使用数据库备份和事务日志备份将数据库恢复到失败点状态,因此几乎不造成任何数据丢失。

(3)批日志恢复

批日志恢复(Bulk‐loggedRecovery)在性能上要优于简单恢复和完全恢复模式,它能尽最大努力减少批操作所需要的存储空间。

5畅数据库恢复的顺序

在对数据库进行恢复之前,应对数据库的访问进行一些必要的限制,因为在数据库被完全恢复正确状态之前,是不允许用户访问数据库的。

在恢复过程中,除了要限制用户对数据库的访问外,如果数据库的日志没有损坏,还可以在恢复之前对数据库进行一次日志备份,这样就可以将数据库的损失减少到最少。

恢复数据库是有一定顺序的,一般先恢复最近的完全数据库备份,因为它是数据库的最近的全部信息;然后恢复完全备份之后的最近的差异数据库备份(如果有的话);最后按日志备份的先后顺序恢复自最近的完全或差异数据库备份之后的所有日志备份。

6畅使用SQLServer实现备份和恢复

可以使用SQLServer2008直接实现数据库的备份和恢复,也可以采用Transact‐SQL语句恢复数据库。下面以“饭卡管理系统”为例,分别用两种方式实现数据库的备份和恢复。

(1)使用SQLServer2008备份数据库

1)展开“数据库”目录,在要备份的数据库上单击鼠标右键,在弹出的快捷菜单中选择“任务”选项,然后再选择“任务”下的“备份”选项,弹出如图7畅4所示的对话框,进入备份数据库的“常规”选项页。

?

771

?

华中科技大学管理学院

图7畅4 选择备份的数据库以及备份类型对话框

2)在如图7畅4所示的对话框中,在“数据库”下拉列表框中选择要备份的数据库,在“备份类型”组中可以选择一个合适的备份类型。单击“添加”按钮,会弹出“选择备份目标”的对话框,可以指定备份数据库的备份设备(永久备份设备)或备份文件(临时备份设备)。

3)选择好备份设备或备份文件后,回到如图7畅4所示的对话框,单击“选项”按钮,进入如图7畅5所示的选项对话框。在“覆盖媒体”组可以选择是备份到现有媒体集还是备份到新媒体集。如果选择“备份到新媒体集并清除所有备份集”,就要输入新媒体集的名称并进行相应的说明。如果选择“备份到现有媒体集”,就有如下选择:“追加到现有媒体集”,表示将本次备份追加到备份设备上,这种方式不影响备份设备原来的内容;“覆盖所有现有媒体集”,表示本次备份将覆盖掉备份设备原来的全部内容,这种方式会使备份设备原来的内容不复存在。

4)设置好后单击“确定”按钮,开始备份数据库。备份完成后,将弹出一个提示对话框。单击提示对话框的“确定”按钮即可关闭此对话框。

(2)使用Transact‐SQL语句备份数据库

备份数据库使用的是BACKUP语句,该语句分为备份数据库和备份日志两种语法格式。

1)备份数据库。备份数据库的基本语法格式为

BACKUPDATABASE<数据库名>

TO{<备份设备名>}|{DISK|TAPE}={物理备份文件名}?华中科技大学管理学院

871

?

图7畅5 选择备份设备的使用方式对话框

[WITH[DIFFERENTIAL][[,]{INIT|NOINIT}]]其中,DISK|TAPE表示将数据库备份到磁盘或磁带中。DIFFERENTIAL表示进行差异备份。INIT表示本次备份数据库将重写备份设备,即覆盖掉本设备上以前进行的所有备份;NOINIT表示本次备份将追加到备份设备上,即不覆盖掉本设备以前进行的所有备份。

2)备份日志。备份日志的基本语法格式为

BACKUPLOG<数据库名>

TO{<备份设备名>}|{DISK|TAPE}={物理备份文件名}

[WITH[{INIT|NOINIT}]

[{[,]NO_LOG|TRUNCATE_ONLY|NO_TRUN‐

CATE}]]

其中,NO_LOG|TRUNCATE_ONLY表示备份完日志后要截断不活动的日志;NO_TRUNCATE表示备份完日志后不截断不活动日志。其他选项的含义和备份数据库语句的选项相同。

【例7‐1】 对“饭卡管理系统”进行一次完全备份,备份到一个名为“My‐Bak”的备份设备上,并覆盖该备份设备上已有的内容。

BACKUPDATABASECARDTOMyBakWITHINIT;

?

?

971

华中科技大学管理学院

【例7‐2】 对“饭卡管理系统”进行一次日志备份,并以追加的方式备份到一个名为“MyLog”的备份设备上。

BACKUPLOGCARDTOMyLog;

(3)使用SQLServer2008恢复数据库

使用SQLServer2008恢复数据库的步骤如下所述。

1)展开“数据库”目录,在要备份的数据库上右击鼠标,在弹出的快捷菜单中选择“任务”选项,然后再选择“任务”下的“还原”选项,弹出如图7畅6所示的对话框,进入还原数据库的“常规”选项页。

图7畅6 “还原数据库”对话框

2)在如图7畅6所示的对话框中,在“目标数据库”下拉列表框中选择要恢复的数据库。如果在此下拉列表框中没有列出所要恢复的数据库,可以在此输入数据库名。

3)在“还原的源”组中,如果选择“源数据库”单选按钮,则“选择用于还原的备份集”中会显示此数据库的所有备份,此框中列出的顺序就是恢复数据库的顺序;如果选择“原设备”,则需要单击按钮,指定还原操作的备份媒体及其位置。

4)选择好“还原的源”之后,单击“选项”按钮,进入如图7畅7所示的对话框。在“恢复状态”组中,如果当前恢复的备份不是数据库的最后一个备份,则必须选择第二个选项“不对数据库执行任何操作,不回滚未提交的事务。可以?华中科技大学管理学院

?

081

还原其他事务日志(A)”,表示在数据库恢复之前不允许有用户访问数据库;如果数据库的恢复已经完成,则可以选择第一个选项“回滚未提交的事务,使数据库处于可以使用的状态。无法还原其他事务日志(L)”,一般只在恢复最后一个备份时才选择此选项。系统默认的选项是第一个选项。

图7畅7 选择“还原选项”对话框

5)单击“确定”按钮,开始恢复数据库,恢复成功后将弹出一个提示对话框,单击“确定”关闭此对话框。

如果对数据库的恢复是选择从“源设备”进行的,并且需要多次恢复数据库的备份,则可重复上述过程,在每次选择备份设备进行恢复时,注意查看备份设备的内容,并选择合适的备份项。而且要注意除了最后一次恢复外,其他的恢复都要设置恢复选项为“不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志(A)”,否则后续的恢复将无法进行。

(4)使用Transact‐SQL语句恢复数据库

恢复数据库使用的是RESTORE语句。RESTORE语句的基本语法格式为RESTOREDATEBASE数据库名 FROM备份设备名

[WITHFILE=文件号[,]NORECOVERY[,]RECOVERY]

其中,FILE=文件号表示要还原的备份集,文件号为几就表示备份设备上的第

?

181

?

华中科技大学管理学院

几个备份集。NORECOVERY表示对数据库的恢复操作还没有完成,使用这个选项恢复的数据库是不可用的,但可以继续恢复后续的备份。RECOVERY表示对数据库的恢复操作已经完成,这是个默认的选项,使用此选项恢复的数据库是可用的。

【例7‐3】 假设已对数据库TEST进行了完全备份,并备份到名为TEST‐BK的备份设备上,而且此备份设备只含有对TEST数据库的完全备份,则恢复数据库TEST的语句为

RESTOREDATABASETESTFROMTESTBK;

【例7‐4】 设对“饭卡管理系统”先进行了完全备份,备份到Mybak设备上,然后进行差异备份,备份到Mybak设备上,最后进行了日志备份,备份到Mylogbak设备上。但是在最后一个日志备份完成之后的某个时刻系统出现故障,则利用所做的备份对其进行恢复。由于完全备份和差异备份都在Mybak上,但二者的文件号不同,分别为“1”和“2”。而且,在进行恢复完全备份和差异备份时,恢复没有完成,应该添加NORECOVERY这个选项。经过分析,其恢复过程如下。

1)首先恢复完全备份:

RESTOREDATABASECARDFROMMybakWITHFILE=1,NORECOVERY

2)然后恢复差异备份:

RESTOREDATABASECARDFROMMybakWITHFILE=2,NORECOVERY

3)最后恢复日志备份:

RESTORELOGCARDFROMMylogbak

7畅7畅2 数据库的安全性控制

数据库安全性是指保护数据库,防止不合法的使用,以免数据被泄密、更改或破坏。数据库的安全性与数据库的完整性不同。安全性是保护数据以防止非法用户故意造成的破坏;而完整性是保护数据以防止合法用户无意中造成的破坏。

1畅SQLServer中权限的种类

SQLServer将权限分为隐含权限、对象权限和语句权限三种。

(1)隐含权限

隐含权限是指数据库管理系统预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限。隐含权限相当于内置权限,不需要再明?华中科技大学管理学院

?

281

相关主题
相关文档
最新文档