`
livia1234
  • 浏览: 43599 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

数据库知识总结

 
阅读更多

数据库管理系统的功能和特征

·数据库模型(概念模式、外模式、内模式)
·数据模型,ER图,第一范式、第二范式、第三范式
·数据操作(集合运算和关系运算)
·数据库语言(SQL
·数据库的控制功能(并发控制、恢复、安全性、完整性)
·数据仓库和分布式数据库基础知识

1、数据库知识

1.1数据管理技术的发展

  数据管理技术的发展阶段:

  人工阶段:数据处理方式是批处理。其特点是:

  • Ø数据不保存
  • Ø没有专用的软件对数据进行管理
  • Ø只有程序概念,没有文件概念
  • Ø一组数据对应一个程序,即数据是面向程序的

  文件系统阶段:数据处理方式有批处理,也有联机实时处理。其特点是:

  • Ø数据可长期保存在外存上
  • Ø数据的逻辑结构与物理结构有了区别,但简单
  • Ø文件组织已多样化,有索引文件、链接文件和直接存取文件等,但文件之间相互独立,没有联系
  • Ø数据不再属于某个特定的程序,可重复使用,但数据结构和程序之间的依赖关系并未根本改变。

其缺点是:

  • Ø数据冗余性
  • Ø数据不一致性
  • Ø数据联系弱

  数据库阶段:其特点是:

  • Ø用关系模型表示复杂的数据模型
  • Ø有较高的数据独立性
  • Ø数据库系统为用户提供了方便的用户接口
  • Ø数据库管理系统提供了四个方面的数据控制能力-数据完整性、数据安全性、数据库的并发控制、数据库的恢复

数据库的基本概念

  数据库(DB):是存储在一起的相关数据的集合。DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的程序与数据的独立性。

  数据库管理系统(DBMS):DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS可分为层次型、网状型、关系型、面向对象型。

  数据库系统(DBS):即是采用了数据库技术的计算机系统,是实现有组织地、动态存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源而组成的系统。

  数据库技术:研究数据库的结构、存储、设计、管理和使用的一门软件学科。

1.2数据模型

  表示实体类型及实体之间联系的模型称为“数据模型”。数据模型是严格定义的概念的集合,数据库的数据模型应包括数据结构(指对实体类型和实体之间联系的表达和实现)、数据操作(指对数据库的检索和更新两大类操作)和完整性约束(给出数据及其所具有的制约合依赖规则)3个部分。

  数据模型的种类很多。目前广泛使用的数据模型可分为两种:概念数据模型和结构数据模型。

概念数据模型

  这是一种独立于任何计算机系统的模型,完全不涉及信息在计算机系统中的表示,用于建立信息世界的数据模型,是现实世界的第一层抽象,是用户和数据库设计人员进行交流的工具,其中最著名的模型是“实体联系模型”(ER模型)。

  ER模型直接从现实世界中抽取出实体类型及实体间联系图(ER图)表示数据模型。一般遇到实际问题时,总是先设计一个ER模型,然后再把ER模型转换成与DBMS关联的数据模型。

结构数据模型(亦称基本数据模型)

  这是直接面向数据库的逻辑数据结构,通常有一组严格定义了语法和语义的数据库语言,用来定义、操纵数据库中的数据。其主要有层次、网状、关系模型三种。

◆层次模型:用树型(层次)结构表示实体类型及实体之间联系的数据模型称为层次模型。层次结构是一棵树,树的结点是记录类型,非根结点有且只有一个父结点。上一层记录类型和下一层记录类型的联系是1:M联系。

◆网状模型:用从结构(网络结构)表示实体类型及实体间联系的数据模型称为网状模型。记录之间的联系通过指针实现,M:N联系容易实现(一个M:N联系可拆成两个1:M联系),查询效率高。

◆关系模型:用规范化了的二维表格结构表示实体集,用键表示实体间联系。通常是若干个关系模型组成的集合。

1.3数据库系统的结构

  • n数据库的数据体系结构

数据库的数据体系结构分成3个级别:内部级、概念级、外部级。从某个角度看到的数据特性称为数据视图。

  • Ø外部级最接近用户,是用户看到的数据特性,用户的数据视图称为外模型。
  • Ø概念级是涉及到所有用户的数据定义,也就是全局的数据视图,称为概念模型。
  • Ø内部级是最接近于物理存储设备,涉及到实际数据的存储方式。物理存储的数据视图称为内模型。

这些模型用数据库的数据定义语言(DDL)描述后,分别得到外模式、概念模式、内模式。为实现这3个抽象级别的转换,数据库和管理系统在这3级结构之间提供了两层映象:外模式/概念模式映象和概念模式/内模式映象

数据库管理系统的主要目标:把数据作为可管理的资源处理。

数据库管理系统的5个重要功能:数据库的定义功能、数据库的操纵功能、数据库的保护功能、数据库的维护功能、数据字典。

数据库的全局结构:

DBS的某些功能是由计算机的OS提供的,OS提供了DBS最基本的服务,因此DBS必须在OS基础上工作。在DBS中就应包含DBMS和OS之间的界面。

DBS的全局结构由数据库用户、数据库管理系统的查询处理器、数据库管理系统的存储管理器和磁盘存储器中的数据结构等部分组成。

1.4关系模型和关系运算

  • n基本概述

关系数据库是应用关系数据模型来建立和处理数据库中的数据。这其中主要涉及几个重要的概念。

  • u关系

关系实际上就可以看作是一个二维表。其中,表的每一列称为属性,并用属性名来标识。每个属性的取值范围,就是该属性所对应的值域。表的每一行称为元组。约定该表的行、列的次序的改变,不改变关系的语义性质。

对于一个关系,应该具备下列性质:

  • Ø关系中每一个属性值都是不可分解的;
  • Ø关系中不允许出现相同的元组;不让用户考虑元组的顺序;
  • Ø用户在使用时应考虑列的顺序。
  • u关系模型

关系模型是目前最流行的一种数据模型,它是用二维表格结构表示实体集,关键码表示实体间的联系。

  • u关键字(键)

I.候选键

关系中的某一属性或属性组,若它的值可以唯一标识关系中的一个元组而又不含有多余的属性,则称该属性或属性组为候选关键字。

II.主键

关系模式中用户正使用的候选关键字称为主关键字。

III.外关键字

若模式R中某属性集是其他模式的候选键,那么该属性集对模式R而言就是外关键字。

IV.超键

关系模式中,为唯一标识元组的属性集称为超键。

  • n关系模型

关系模型遵循数据库的3级体系结构。

  • u关系模式

数据库的概念模式定义为关系模式的集合。每个关系模式就是记录类型。

  • u关系子模式

这是对用户所用到的那部分数据的描述。除了指出用户用到的数据外,还应指出数据与模式中相应数据的联系,即指出子模式与模式之间的对应性。

  • u关系存储模式(关系内模式)

这是作为文件看待的,每个元组就是一个记录。

关系模型有3个部分构成:

  • u数据结构

关系模型采用的数据结构是关系。

  • u关系操作

关系模型提供一组完备的关系运算,以支持对数据库的各种操作。关系运算的理论是关系代数和关系演算。

  • u关系的完整性

在关系模型中,数据的约束条件通过三类完整性约束条件来描述。即:

I.实体完整性

要求关系中的元组的主键值不能是空值。

II.参照完整性

要求在关系中不允许引用不存在的实体。

III.用户定义的完整性

这是针对某一具体数据的约束条件,由应用环境决定,例如属性的值限制。

n关系代数

关系查询语言根据其理论基础的不同分成两大类:

  • u关系代数语言:查询操作是以集合操作为基础的运算。
  • u关系演算语言:查询操作是以谓词演算为基础的运算。

其中,关系代数是以集合代数为基础发展起来的,它是以关系为运算对象的一组高级运算的集合。关系代数的运算可分为两类:

基本运算操作:并、差、笛卡尔积、投影和选择。

组合运算操作:交、联接、自然联接和除。

另外,还有几种扩充的关系代数操作:外联接(左外联接和右外联接)、外部并和半联接。

以下对几种常用的关系运算作一个简单的介绍。

  • u基本运算

1.

设有两个关系RS具有相同的关系模式,关系RS的并是由属于R或属于S的元组组成的集合,记为RS。形式定义如下:RS≡{ttRtS

2.

设有两个关系RS具有相同的关系模式,关系RS的差是由属于R但不属于S的元组组成的集合,记为RS。形式定义如下:RS≡{ttRt ̄∈S

3.笛卡儿积

设关系RS元数分别为rs。定义RS的笛卡儿积是一个(r+s)元的元组集合,每个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组,记为R×S形式定义如下:R×S≡{tt=<tr,tstrRtsS

Rm个元组,Sn个元组,则R×S有(mn)个元组。

4.投影

该操作是对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。

5.选择

这个操作是根据某些条件对关系作水平分割,即选择符合条件的元组。条件可用命题公式F表示,F中的运算对象是常数(用引号括起来)或元组分量(属性名或列的序号)。运算符有算术比较运算符(≤,<,≥,>,=,≠)和逻辑运算符(∧,∨,┐)。

δF(R){ttRF(t)true}

δ为选择运算符,δF(R)表示从R中挑选满足公式F的元组所构成的集合。常量用引号括起来,而属性号或属性名不要用引号括起来。

  • u组合运算

1.

设有两个关系RS具有相同的关系模式,关系RS的交是由属于R又属于S的元组组成的集合,记为RS。形式定义如下:RS{ttRtS}

2.联接(又称θ联接)

从关系RS的笛卡尔积中选取属性值之间满足一定条件的元组,记为:

R│×│S≡δiθ(i+j)(R×S)ijθ

这里R的元数是r,θ是算术比较运算符。R│×│S操作是在RSijθ的笛卡尔积中挑选第i个分量和第(r+j)个分量满足θ运算的元组组成的新的关系。

3.自然联接

两个关系RS的自然联接用R│×│S表示,具体计算过程如下:

A)计算R×S

B)RS的公共属性是A1,A2,A3,..Ak.,挑选R×S中满足R.A1=S.A1,R.A2,...,R.Ak=S.Ak的那些元组

C)去掉S.A1,S.A2,..S.Ak

R│×│S可用下列形式定义:

R│×│S≡πi1i2,...,im(δR.A1=S.A1...R.Ak=S.Ak(R×S)

4.除法

设两个关系RS的元数分别为rsr>s>0),那么R÷S是一个(rs)元的元组的集合。(R÷S)是满足下列条件的最大关系,其中每个元组tS中每个元组u组成的新元组<t< span="">u>必在关系R中。

R÷S的具体计算过程如下:

A)T=π1,2,..r-s(R)

B)W=(T×S)-R求出T×S中不在R的元组

C)V=π1,2,...r-s(W)

D)R÷S=T-V

因此R÷S≡π1,2,..r-s(R)-π1,2,..r-s((π1,2,..r-s(R)×S)-R)

1.5关系数据库SQL语言

SQL数据库的数据体系结构

SQL数据库的数据体系结构基本上也是3级结构,但术语与传统关系模型术语不同。SQL中,关系模型称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。

SQL语言的组成

一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。

一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。

一个表或者是一个基本表,或者是一个视图。基本表是实际存储在数据库的表,视图是由若干基本表或其他视图构成的表的定义。

SQL包括了所有对数据库的操作,主要有4个部分:数据定义(SQLDDL)、数据操纵(SQLDML)、访问数据控制、嵌入式SQL语言的规定。

SQLDDL主要是定义基本表、视图、索引3个部分:

基本表的定义、修改、撤销

基本表的定义可用“CREATETABLE”语句实现,增加属性可以用“ALTER...ADD...”语句,删除属性可以用“ALTER...DROP...”语句;删除已存在的表可用“DROPTABLE...”语句。

◆视图的定义和撤销

视图的定义可以用CREATEVIEW语句实现。视图的撤消可以用DROPVIEW语句实现。

◆索引的定义和撤销

索引的定义可以用CREATE,用DROP撤销。

◆SQLDML数据查询语句

SQL的查询语句只有SELECT语句。

◆SELECT查询语句

在关系代数中最常用的式子是“投影选择联接表达式”:πA1,A2,,...AnF(R1×R2×...×Rm)),这里R1,R2,...Rm为基本表,F是公式,A1,A2,...An为属性。针对这个表达式,SQL设计了SELECT句型:

SELCETA1,A2,...An

FROMR1,R2,...Rm

WHEREF

在WHERE子句的条件表达式F中可出现下列操作符和运算特点:算术比较符、逻辑运算符、集合运算符、集合成员资格运算符、谓词和聚合函数。

◆库函数

COUNT(*)计算元组的个数

COUNT(列名)对某一列中的值计算个数。

SUM(列名)求某一列值的总和

AVG(列名)求某一列值的平均值

MAX(列名)求某一列值中的最大值

MIN(列名)求某一列值中的最小值

◆SELECT语句完整的句法

SELECT目标表的列名或列表达式序列

FROM基本表或(和)视图序列

[WHERE行条件表达式

[GROUTBY列名序列

[HAVING组条件表达式

[DRDERBY列名[序]...

前两个句子是必不可少的,后面的4个句子可以缺省。整个语句的语义如下:从FROM子句中列出的表,选取满足WHERE子句中给出的行条件表达式的元组,然后按GROUP子句(分组子句)中指定列的值分组,再提取满足HAVING子句中组条件表达式的那些组,按SELECT子句给出的列名或列表达式求值输出。ORDER子句(排序子句)是对输出的目标表进行排序,可附加说明ASC(升序)或DESC(降序)

◆SQLDML的数据更新语句

INSERT插入语句

DELETE删除语句

UPDATE修改语句

◆SQL的访问控制

SQL的访问控制功能主要是指对用户访问数据的控制。有授权语句和回收语句。

授权语句的格式如下:

GRANT权限表

ON表名

TO用户名表

[WITHGRANTOPTION]

该语句把表的使用权授予指定的若干用户。在有WITHGRANTOPTION短语时,被授权的用户还可将获得的权限再转授给其他用户。权限表中的权限可以有:SELECT,INSERT,DELETE,UPDATE,EXPAND,INDEX,ALLPRIVILEGES。

回收语句格式:

REVOKE权限表

ON表名

FROM用户名表

该语句把已授给指定用户的在指定表上的使用权限收回。

◆嵌入式SQL

由于SQL是基于关系模型的语言,而高级语言是基于整数、实数、字符、记录、数组等的数据类型,因此两者之间有很大的区别,称为有缝隙。为了能在宿主语言的程序中嵌入SQL语句,有一些规定:

I.在程序中要区分SQL语句和宿主语言的语句;

II.在嵌入的SQL语句中可以引用宿主语言的程序变量,但主语言的语句不能引用数据库中的各种变量(属性名、关系名),SQL的集合处理方式与宿主语言的单记录处理方式之间的协调用游标技术实现。

1.6数据库设计

数据库应用系统的开发是一项软件工程,但又有自身的特点,所以称为“数据库工程”。数据库系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间,称为数据库系统生存期。此生存期可分为7个阶段:规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行和维护。

按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下六个阶段:

◆需求分析阶段

需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。

◆概念结构设计阶段

通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。

◆逻辑结构设计阶段

将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。

◆数据库物理设计阶段

为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

◆数据库实施阶段

运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

◆数据库运行和维护阶段

数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。

设计一个完善的数据库应用系统不可能一蹴而就,它往往是上述六个阶段的不断反复。

1.7关系数据库规范化理论

为了使数据库设计的方法走向完备,人们研究了规范化理论,指导我们设计规范的数据库模式。按属性间依赖情况来区分,关系规范化的程度为第一范式、第二范式、第三范式、BCNF范式和第四范式等。

函数依赖

数据依赖是现实世界中属性间联系和约束的抽象,是数据的内在性质。

函数依赖(functionaldependency,FD)是一种最重要、最基本的数据依赖。其具体定义如下:

设有关系模式R(U),X和Y是属性集U的子集,FD是行为X→Y的一个命题,只要r是R的关系,对r中任意两个元组都有“X值相等蕴涵Y值相等”,那么函数依赖X→Y在关系模式R(U)中成立。

FD与侯选键之间的关系:若存在X->U,并且不存在X的任意真子集X1,使得X1->U成立,那么就称X为关系的一个侯选键。

函数依赖还有几条推理规则:

自反性;增广性;传递性;并规则;分解规则;伪传递规则;

◆模式分解:目的是消除冗余和操作异常问题

模式分解的三个定义:

  • l分解具有“无损连接性”
  • l分解要“保持函数依赖”
  • l分解既要“保持函数依赖”,又要具有“无损连接性”。

关系模式分解的两个特性实际涉及到两个数据库模式的等价性问题。包括数据等价和依赖等价两个方面:

数据等价:两个数据库实例应表示同样的信息内容,用“无损联接”衡量。

依赖等价:两个数据库模式应有相互逻辑关系的函数依赖集,此时数据的语义是不会出现差错的。

例:关系模式S-L-C(SNOSDEPTSLOCCNOG)中,SLOC为学生的住处,并且每个系的学生住在同一个地方。

这里码为(SNO,CNO)。函数依赖有:

(SNO,CNO)G

SNO→SDEPT,

(SNO,CNO)SDEPTSNO→SLOC,

(SNO,CNO)SLOC

SDEPT→SLOC

用投影分解把关系模式S-L-C分解为3NF范式,且保持函数依赖。

解法:

RU,F〉中的函数依赖集F进行“极小化处理”。

F={SNO,CNOGSNO→SDEPTSDEPT→SLOC}

R中没有不在F中出现的属性。

不存在X→AÎF,且XA=U,接着做第=4\*GB2⑷步。

F按具有相同左部的原则分组。

r={SC{SNO,CNO,G}SNO,CNOG}S-D{SNO,SDEPT},SNO→SDEPT〉,

D-L{SDEPT,SLOC},SDEPT→SLOC}

范式

范式(normalform,NF)是衡量关系模式的优劣的标准。范式有很多种,与数据依赖有着直接的联系。

第一范式1NF

如果关系模式R中,每个分量是不可分的数据项,就称R属于第一范式。

第二范式2NF

若关系模式R属于1NF,且每个非主属性完全函数依赖于候选关键字,则称R属于第二范式。

第三范式3NF

若关系模式R属于1NF,且每个非主属性都不传递依赖于R的候选关键字,则称R属于第三范式。

这里的主属性是指键的属性,而不是任何键的属性就是非主属性

BC范式BCNF

若关系模式R属于1NF,且每个属性都不传递依赖于R的候选关键字,则称R属于BC范式。

由上可知,4种范式之间的关系:BCNF<3NF<2NF<1NF

1.8数据库保护

  • n概述

在数据库系统运行时,DBMS要对数据库进行监控,以保证整个系统的正常运转,保证数据库中的数据安全可靠、正确有效,防止各种错误的产生,这就是对数据库的保护,有时也称为“数据控制”。这具体包括以下四个方面:

  • u数据库的恢复
  • u完整性控制(主键约束,外键约束,属性的值域约束)
  • u并发控制(琐机制)
  • u安全性控制(存储控制,审计,视图保护和日志监视)

n事务

事务在数据库里面是一个十分重要的概念。数据库系统运行的基本工作单位是事务。它相当于操作系统中的进程,一个事务由应用程序中的一组操作序列组成。

实际上,事务可以看作是一个原子,是一个不可分割的操作序列。事务中包括的所有操作要么都执行,要么都不执行。

事务通常以BEGINTRANSACTION语句开始,它主要涉及两个语句。、

  • u事务提交语句COMMIT
  • u事务回滚语句ROLLBACK

事务的特性:

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。

1.原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

2.一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始时的一致状态。

3.隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

4.持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

数据库恢复:

尽管数据库系统中采取了各种保护措施来防止数据库的安全性和完整性被破坏,保证并发事务的正确执行,但是计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏仍是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此数据库管理系统(恢复子系统)必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复

故障的种类:

一、事务内部的故障

事务内部的故障有的是可以通过事务程序本身发现的(见下面转帐事务的例子),有的是非预期的,不能由事务程序处理的。

二、系统故障

系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等等。这类故障影响正在运行的所有事务,但不破坏数据库。这时主存内容,尤其是数据库缓冲区(在内存)中的内容都被丢失,所有运行事务都非正常终止。发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,有些已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,从而造成数据库可能处于不正确的状态。为保证数据一致性,恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤消(UNDO)所有未完成事务。重做(Redo)所有已提交的事务,以将数据库真正恢复到一致状态。

三、介质故障

系统故障常称为软故障(SoftCrash),介质故障称为硬故障(HardCrash)。硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。

四、计算机病毒

计算机病毒是具有破坏性、可以自我复制的计算机程序。计算机病毒已成为计算机系统的主要威胁,自然也是数据库系统的主要威胁。因此数据库一旦被破坏仍要用恢复技术把数据库加以恢复。

恢复策略:

1.事务故障的恢复

事务故障是指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统的恢复步骤是:

⑴.反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。

⑵.对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。这样,如果记录中是插入操作,则相当于做删除操作(因此时“更新前的值”为空)。若记录中是删除操作,则做插入操作,若是修改操作,则相当于用修改前值代替修改后值。

⑶.继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。

⑷.如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

2.系统故障的恢复

前面已讲过,系统故障造成数据库不一致状态的原因有两个,一是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。因此恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。

系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。

系统的恢复步骤是:

⑴.正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BEGINTRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGINTRANSACTION记录,无相应的COMMIT记录),将其事务标识记入撤消(UNDO)队列。

⑵.对撤消队列中的各个事务进行撤消(UNDO)处理。

进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

⑶.对重做队列中的各个事务进行重做(REDO)处理。

进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库。

3.介质故障的恢复

发生介质故障后,磁盘上的物理数据和日志文件被破坏,这是最严重的一种故障,恢复方法是重装数据库,然后重做已完成的事务。具体地说就是:

⑴.装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。

对于动态转储的数据库副本,还须同时装入转储开始时刻的日志文件副本,利用恢复系统故障的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。

⑵.装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。即:

首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。

然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。

这样就可以将数据库恢复至故障前某一时刻的一致状态了。

介质故障的恢复需要DBA介入。但DBA只需要重装最近转储的数据库副本和有关的各日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成。

n并发控制

在多用户共享系统中,许多事务可能同时对同一个数据进行操作,这时候就产生了并发控制的问题。DMBS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。

同时并发方式:在多处理系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行,这种并行方式称为同时并发方式。

并发控制机制是衡量一个数据库管理系统性能的重要标志之一。

数据库的并发操作通常可能带来以下的问题:

  • u丢失更新问题
  • u不一致分析问题(读过时的数据)
  • u依赖于未提交更新问题(读“脏”数据)

处理并发控制的主要方法是采用封锁技术。封锁是实现并发控制的一个非常重要的技术。

封锁:所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。

基本的封锁类型有两种:排它锁(ExclusiveLocks,简记为X锁)和共享锁(ShareLocks,简记为S锁)。

排它锁:排它锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其它事务在T释放A上的锁之前不能再读取和修改A。

共享锁:共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A,但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其它事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。有两种类型:

  • u排他型封锁(X封锁)
  • u共享型封锁(S封锁)

在运用X锁和S锁这两种基本封锁,对数据对象加锁时,还需要约定一些规则,例如应何时申请X锁或S锁、持锁时间、何时释放等。我们称这些规则为封锁协议(LockingProtocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。下面介绍三级封锁协议。对并发操作的不正确调度可能会带来丢失修改、不可重复读和读“脏”数据等不一致性问题,三级封锁协议分别在不同程度上解决了这一问题。为并发操作的正确调度提供一定的保证。不同级别的封锁协议达到的系统一致性级别是不同的。

一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。

二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议除防止了丢失修改,还可进一步防止读“脏”数据

三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。三级封锁协议除防止了丢失修改和不读‘脏’数据外,还进一步防止了不可重复读

和操作系统一样,封锁的方法可能引起活锁和死锁。

一.活锁

活锁:如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,......,T2有可能永远等待,这就是活锁的情形

二.死锁

死锁:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。

死锁的预防:

在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已被其他事务封锁的数据对象加锁,从而出现死等待。防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法:

一次封锁法:一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。一次封锁法虽然可以有效地防止死锁的发生,但也存在问题,一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。

顺序封锁法:顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。顺序封锁法可以有效地防止死锁,但也同样存在问题。事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁。

可见,在操作系统中广为采用的预防死锁的策略并不很适合数据库的特点,因此DBMS在解决死锁的问题上普遍采用的是诊断并解除死锁的方法。

2.死锁的诊断与解除

①超时法

如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但其不足也很明显。一是有可能误判死锁,事务因为其他原因使等待时间超过时限,系统会误认为发生了死锁。二是时限若设置得太长,死锁发生后不能及时发现。

②等待图法

事务等待图是一个有向图G=(T,U)。T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1、T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地(比如每隔1分钟)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。

DBMS的并发控制子系统一旦检测到系统中存在死锁,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢复。

如果一个事务运行过程中没有其他事务同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的。因此将所有事务串行起来的调度策略一定是正确的调度策略。虽然以不同的顺序串行执行事务可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都是正确的。

定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。我们称这种调度策略为可串行化(Serializable)的调度。

另外,在封锁技术方面,SQL提供事务的四种一致性级别,从高到低分别是:

  • userializable(可串行化)
  • urepeatableread(可重复读)
  • ureadcommitted(读提交数据)
  • ureaduncommitted(可读未提交数据)

数据库安全:

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。

为降低进而消除对系统的安全攻击,尤其是弥补原有系统在安全保护方面的缺陷,在计算机安全技术方面逐步建立了一套可信标准。在目前各国所引用或制定的一系列安全标准中,最重要的当推1985年美国国防部(DoD)正式颁布的《DoD可信计算机系统评估标准》(TrustedComputerSystemEvaluationCriteria,简记为TCSEC)[1]DoD85)。

制定这个标准的目的主要有:

⑴提供一种标准,使用户可以对其计算机系统内敏感信息安全操作的可信程度做出评估。

⑵给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好的满足敏感应用的安全需求。

TCSEC又称桔皮书,19914月美国NCSC(国家计算机安全中心)颁布了《可信计算机系统评估标准关于可信数据库系统的解释》(TrustedDatabaseInterpretation简记为TDI,即紫皮书)。将TCSEC扩展到数据库管理系统。TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。

在TCSEC中建立的安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。

下面,我们简略地对各个等级作一介绍。

D级:D级是最低级别。保留D级的目的是为了将一切不符合更高标准的系统,统统归于D组。如DOS就是操作系统中安全标准为D的典型例子。它具有操作系统的基本功能,如文件系统,进程调度等等,但在安全性方面几乎没有什么专门的机制来保障。

C1级:只提供了非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。现有的商业系统往往稍作改进即可满足要求。

C2级:实际是安全产品的最低档次,提供受控的存取保护,即将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离。很多商业产品已得到该级别的认证。达到C2级的产品在其名称中往往不突出“安全”(Security)这一特色,如操作系统中Microsoft的WindowsNT3.5,数字设备公司的OpenVMSVAX6.0和6.1。数据库产品有Oracle公司的Oracle7,Sybase公司的SQLServer11.0.6等。

B1级:标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC)以及审计等安全机制。B1级能够较好地满足大型企业或一般政府部门对于数据的安全需求,这一级别的产品才认为是真正意义上的安全产品。满足此级别的产品前一般多冠以“安全”(Security)或“可信的”(Trusted)字样,作为区别于普通产品的安全产品出售。例如,操作系统方面,典型的有数字设备公司的SEVMSVAXVersion6.0,惠普公司的HP-UXBLSrelease9.0.9+。数据库方面则有Oracle公司的TrustedOracle7,Sybase公司的SecureSQLServerversion11.0.6,Informix公司的IncorporatedINFORMIX-OnLine/Secure5.0等。

B2级:结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。

从互连网上的最新资料看,经过认证的、B2级以上的安全系统非常稀少。例如,符合B2标准的操作系统只有TrustedInformationSystems公司的TrustedXENIX一种产品,符合B2标准的网络产品只有CryptekSecureCommunications公司的LLCVSLAN一种产品,而数据库方面则没有符合B2标准的产品。

B3级:安全域。该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。

A1级:验证设计,即提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。

B2以上的系统标准更多地还处于理论研究阶段,产品化以至商品化的程度都不高,其应用也多限于一些特殊的部门如军队等。但美国正在大力发展安全产品,试图将目前仅限于少数领域应用的B2安全级别或更高安全级别下放到商业应用中来,并逐步成为新的商业标准。

可以看出,支持自主存取控制的DBMS大致属于C级,而支持强制存取控制的DBMS则可以达到B1级。当然,存取控制仅是安全性标准的一个重要方面(即安全策略方面)不是全部。为了使DBMS达到一定的安全级别,还需要在其它三个方面提供相应的支持。例如审计功能就是DBMS达到C2以上安全级别必不可少的一项指标。

下面介绍Oracle的安全性措施。

Oracle的安全性措施主要有三个方面:一是用户标识和鉴定;二是授权和检查机制;三是审计技术;除此之外Oracle还允许用户通过出发器灵活定义自己的安全性措施。

用户标识和鉴定

授权与检查机制

系统权限

数据库对象的权限

⑴表级安全性

⑵行级安全性

⑶列级安全性

审计技术

用户定义的安全性措施

随着计算机特别是计算机网络的发展,数据的共享日益加强,数据的安全保密越来越重要。DBMS是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制。

《可信计算机系统评测标准》TCSEC/TDI是目前各国所引用或制定的一系列安全标准中最重要的一个。TCSEC/TDI从安全策略、责任、保证和文档四个方面描述了安全性级别的指标。按照这些指标,目前许多大型DBMS达到了C2级,其安全版本达到了B1

实现数据库系统安全性的技术和方法有多种,最重要的是存取控制技术和审计技术。C2级的DBMS必须具有自主存取控制功能和初步的审计功能,B1DBMS必须具有强制存取控制和增强的审计功能。自主存取控制功能一般是通过SQLGRANT语句和REVOKE语句来实现的。

1.9数据仓库与分布式数据库

数据仓库:

随着计算机技术的飞速发展和企业界不断提出新的需求,数据仓库技术应运而生。传统的数据库技术是单一的数据资源,即数据库为中心,进行从事事务处理、批处理到决策分析等各种类型的数据处理工作。近年来,随着计算机应用,,网络计算,开始向两个不同的方向拓展,一是广度计算,一是深度计算,广度计算的含义是把计算机的应用范围尽量扩大,同时实现广泛的数据交流,互联网就是广度计算的特征,另一方面就是人们对以往计算机的简单数据操作,提出了更高的要求,希望计算机能够更多的参与数据分析与决策的制定等领域。特别是数据库处理可以大致地划分为两大类:操作型处理和分析型处理(或信息型处理)。这种分离,划清了数据处理的分析型环境与操作型环境之间的界限,从而由原来的以单一数据库为中心的数据环境发展为一种新环境:体系化环境。

数据库系统作为数据管理手段,从它的诞生开始,就主要用于事务处理。经过数十年的发展,在这些数据库中已经保存了大量的日常业务数据。传统的业务系统一般是直接建立在这种事务处理环境上的。随着技术的进步,人们试图让计算机担任更多的工作,而数据库技术也一直力图使自己能胜任从事务处理、批处理到分析处理的各种类型的信息处理任务。后来人们逐渐认识到,在目前的计算机处理能力上,根本无法实现这种功能,而且,另一方面,事物处理和分析处理具有极不相同的性质,直接使用事务处理环境来支持决策是行不通的。

事务处理环境不适宜DSS应用的原因主要有以下五条:

(1)事务处理和分析处理的性能特性不同。

在事务处理环境中,用户的行为特点是数据的存取操作频率高而每次操作处理的时间短;在分析处理环境中,用户的行为模式与此完全不同,某个DSS应用程序可能需要连续几个小时,从而消耗大量的系统资源。将具有如此不同处理性能的两种应用放在同一个环境中运行显然是不适当的。

(2)数据集成问题。

DSS需要集成的数据。全面而正确的数据是有效的分析和决策的首要前提,相关数据收集得月完整,得到的结果就越可靠。当前绝大多数企业内数据的真正状况是分散而非集成的。造成这种分散的原因有多种,主要有事务处理应用分散、“蜘蛛网”问题、数据不一致问题、外部数据和非结构化数据。

(3)数据动态集成问题。

静态集成的最大缺点在于,如果在数据集成后数据源中数据发生了变化,这些变化将不能反映给决策者,导致决策者使用的是过时的数据。集成数据必须以一定的周期(例如24小时)进行刷新,我们称其为动态集成。显然,事务处理系统不具备动态集成的能力。

(4)历史数据问题。

事务处理一般只需要当前数据,在数据库中一般也是存储短期数据,切不同数据的保存期限也不一样,即使有一些历史数据保存下来了,也被束之高阁,未得到充分利用。但对于决策分析而言,历史数据是相当重要的,许多分析方法必须一大量的历史数据为依托。没有历史数据的详细分析,是难以把握企业的发展趋势的。DSS对数据在空间和时间的广度上都有了更高的要求,而事务处理环境难以满足这些要求。

(5)数据的综合问题。

在事务处理系统中积累了大量的细节数据,一般而言,DSS并不对这些细节数据进行分析。在分析前,往往需要对细节数据进行不同程度的综合。而事务处理系统不具备这种综合能力,根据规范化理论,这种综合还往往因为是一种数据冗余而加以限制。

要提高分析和决策的效率和有效性,分析型处理及其数据必须与操作型处理及其数据相分离。必须把分析型数据从事务处理环境中提取出来,按照DSS处理的需要进行重新组织,建立单独的分析处理环境,数据仓库正是为了构建这种新的分析处理环境而出现的一种数据存储和组织技术。

分布式数据库:

分布式数据库系统是在集中式数据库系统的基础上发展起来的,是数据库技术与计算机网络技术的产物。分布式数据库系统是具有管理分布数据库功能的计算机系统。一个分布式数据库是由分布于计算机网络上的多个逻辑相关的数据库组成的集合,网络中的每个结(一般在系统中的每一台计算机称为结点node)具有独立处理的能力(称为本地自治),可执行局部应用,同时,每个结点通过网络通讯系统也能执行全局应用。所谓局部应用即仅对本结点的数据库执行某些应用。所谓全局应用(或分布应用)是指对两个以上结点的数据库执行某些应用。支持全局应用的系统才能称为分布式数据库系统。对用户来说,一个分布式数据库系统逻辑上看如同集中式数据库系统一样,用户可在任何一个场地执行全局应用。

分布式数据库系统是由分布式数据库管理系统和分布式数据库组成。分布式数据库管理系统(简称DDBMS)是建立、管理和维护分布式数据库的一组软件。

分布式数据库系统适合于单位分散的部门,系统的结点可反映公司的逻辑组织,允许各部门将其常用数据存贮在本地,实施就地存放就地使用,降低通讯费用,并可提高响应速度。分布式数据库可将数据分布在多个结点上,增加适当的冗余,可提高系统的可靠性,只要一个数据库和网络可用,那么全局数据库可一部分可用。不会因一个数据库的故障而停止全部操作或引起性能瓶颈。故障恢复通常在单个结点上进行。结点可独立地升级软件。每个局部数据库存在一个数据字典。由于分布式数据库系统结构的特点,它和集中式数据库系统相比具有可扩展性,为扩展系统的处理能力提供了较好的途径。

理想的分布式系统使用时应该精确地像一个非分布式系统的样子。1986年C.J.Date为理想的分布式系统创立了12条细则,这12条全功能分布式数据库系统的规则和目标具体是:

(1)局部结点自治性,网络中的每个结点是独立的数据库系统,它有自己的数据库,运行它的局部DBMS,执行局部应用,具有高度的自治性。

(2)不依赖中心结点,即每个结点具有全局字典管理、查询处理、并发控制和恢复控制等功能。

(3)能连续操作,该目标使中断分布式数据库服务情况减至最少,当一个新场地合并到现有的分布式系统、或将分布式系统中撤离一场地不会导致任何不必要的服务中断;在分布式系统中可动态地建立和消除片段,而不中止任何组成部分的场地或数据库;应尽可能在不使整个系统停机的情况下对组成分布式系统的场地的DBMS进行升级。

(4)具有位置独立性(或称位置透明性),用户不必知道数据的物理存储地,可工作得像数据全部存储在局部场地一样。一般位置独立性需要有分布式数据命名模式和字典子系统的支持。

(5)分片独立性(或称分片透明性),分布式系统如果可将给定的关系分成若干块或片,可提高系统的处理性能。利用分片将数据存储在最频繁使用它的位置上,使大部分操作是局部操作,减少网络的信息流量。如果系统支持分片独立性,用户工作起来就像数据全然不是分片的一样。

(6)数据复制独立性,是指将给定的关系(或片段)可在物理级用许多不同存储副本或复制品在许多不同场地上存储。支持数据复制的系统应当支持复制独立性,用户工作可像它全然没有存储副本一样地工作。

(7)支持分布式查询处理,在分布数据库系统中有三类查询:局部查询、远程查询和全局查询。局部查询和远程查询仅涉及单个结点的数据(本地的或远程的),查询优化采用的技术是集中式数据库的查询优化技术。全局查询涉及多个结点上的数据,其查询处理和优化要复杂得多。

(8)支持分布事务管理,事务管理有两个主要方面:恢复控制和并发控制。在分布式系统中,单个事务会涉及到多个场地上的代码执行,会涉及到多个场地上的更新,可以说每个事务是由多个“代理”组成,每个代理代表在给定场地上的给定事务上执行的过程。在分布式系统中须保证事务的代理集,或者全部一致交付,或者全部一致回滚。

(9)具有硬件独立性,希望在不同硬件系统上运行同样的DBMS。

(10)具有操作系统独立性,希望在不同的操作系统上运行DBMS。

(11)具有网络独立性,如果系统能够支持多个不同的场地,每个场地有不同的硬件和不同的操作系统,则要求该系统能支持各种不同的通信网络。

(12)具有DBMS独立性,实现对异构型分布式系统的支持。理想的分布式系统应该提供DBMS独立性。

上述的全功能分布式数据库系统的准则和目标起源于:一个分布式数据库系统,对用户来说,应当看上去完全像一个非分布式系统。

DDBS的基本特点

  • u物理分布性:数据不是存储在一个场地上,而是存储在计算机网络的多个场地上。
  • u逻辑整体性:数据物理分布在各个场地,但逻辑上是一个整体,它们被所有用户(全局用户)共享,并由一个DDBMS统一管理。
  • u场地自治性:各场地上的数据由本地的DBMS管理,具有自治处理能力,完成本场地的应用(局部应用)。
  • u场地之间协作性:各场地虽然具有高度的自治性,但是又相互协作构成一个整体。

分布式数据库的体系结构

分布式数据库与集中式数据库的对比:

分布式DBMS

集中式DBMS

①存取方式

用户→DDBMS→分布式网络OS→网络通信→局部DBMS→局部OS→DB

用户→DBMS→OS→DB

②数据冗余性

有控制的冗余

最小的冗余

③数据表示级别

(四级)用户试图,全局视图,分片视图,分配视图

(三级)外部视图,概念视图,内部视图

④数据存放方式

复制在多个场地,模式分散化,处理程序也分散化

集中在一个地点

⑤DBA

分布在各场地,

进行局部控制

集中在一起

⑥同步

由全局DBMS和

网络OS组成

由OS完成

⑦封锁

分散控制

集中控制

⑧实际资源

多个CPU,多个DBMS

一个CPU,一个DBMS

⑨操作方式

当前方式,响应方式两种

一种方式(当前方式)

⑩数据一致性

所有主场地的逻辑结果是一致的,但各个场地的复制中数据可能不一致

任何时候都需要保持

数据的一致性

2.数据库重点和难点:

2.1数据库管理系统(DBMS)

数据库管理系统(DBMS)是指DBS中对数据进行管理的软件系统,它是DBS的核心成分。DBS中所有与数据库打交道的操作,包括建库、查询、更新及数据控制,都是通过DBMS进行的。数据库管理系统总是基于某种数据库模型,可分为网状型、层次型、关系型和面向对象型DBMS。

数据库管理系统的主要目标:把数据作为可管理的资源处理。

数据库管理系统的5个重要功能:

◆数据库的定义功能:DBMS提供数据定义语言(DDL)定义数据库的3级结构,包括外模式、概念模式、内模式及其相互之间的映象,定义数据的完整性约束、保密限制等条件。因此在DBMS中包括DDL的编译程序。

◆数据库的操纵功能:提供数据操纵语言(DML)实现对数据的操作。有4种基本操作:检索(查询)、插入、删除、修改。在DBMS中包括DML的编译程序或解释程序。

◆数据库的保护功能:DBMS对数据库的保护主要通过4个子系统:

A.数据库恢复(在数据库被破坏或数据不正确时,系统有能力把数据库恢复到最近某个正确的状态

B.数据完整性控制(保证数据库中数据及语义的正确性和有效性,防止任何对数据错误的操作)

C.多用户环境下的并发控制。

D.数据安全性控制(防止未被授权的用户蓄谋或无意地存取数据库中的数据,以免数据的泄露或破坏)。

◆数据库的维护功能:这部分包括数据库的初始数据载入、转换功能、存储功能、数据库的改组、性能监视功能。

◆数据字典(DD):DD管理数据库3级结构的定义。对于数据库的操作都要通过查阅DD才能进行。现在有的大型系统中,把DD单独抽出来自成一个系统,成为一个系统工具,使得DD成为一个比DBMS更高级的用户与数据库之间的接口。

要注意的是:应用程序并不属于DBMS的范围。应用程序是用主语言和DML编写的,程序中的DML语句由DBMS执行,而其余部分仍由主语言编译程序完成。

数据库系统(DBS)

数据库系统是一个复杂的系统,它是采用了数据库技术的计算机系统。因此,它不仅仅是一组对数据进行管理的软件(即DBMS),也不仅仅是一个数据库。它是一个实际可运行的、按照数据库方法存储、维护和向应用系统提供数据支持的系统。它是存储介质、处理对象和管理系统的集合体,由数据库DB、硬件支持系统、软件支持系统和数据库管理员DBA这四部分组成。

2.2SQL语句

  • u基本表的定义可用“CREATETABLE”语句实现,增加属性可以用ALTER...ADD...”语句,删除属性可以用“ALTER...DROP...”语句;删除已存在的表可用“DROPTABLE...”语句。
  • u视图的定义和撤消
  • u索引的定义和撤销
  • uSELECT查询语句
  • uDELETE删除语句
  • uINSERT插入语句
  • uUPDATE语句

2.3关系运算

用例子说明前面的概念

设关系R:-------------------------------

ABC

-------------------------------

abc

daf

cbd

关系S:----------------------------------

ABC

----------------------------------

bga

daf

则R∪S为:------------------------------

ABC

------------------------------

abc

daf

cdb

bga

R-S为:-----------------------------

ABC

-------------------------------

abc

cbd

R×S为:--------------------------------------------------------------------

R.AR.BR.CS.AS.BS.C

----------------------------------------------------------------------

abcbga

abcdaf

dafbga

dafdaf

cbdbga

cbddaf

(R)为:----------------------

AC

----------------------

ac

df

cd

(R)为:------------------------------

ABC

-----------------------------

abc

cbd

关系R:---------------------------关系S为:---------------------

ABCDE

---------------------------------------------------

12331

45662

789

则:小于联接R│×│S为:---------------------------------

2<1ABCDE

----------------------------------

12331

12362

45662

若关系R为:------------------关系S为:-----------------

ABCBCD

--------------------------------------

abcbcd

dbcbce

bbfadf

cad

则:自然联接R×S为:----------------------------

ABCD

--------------------------

abcd

abce

dbcd

dbce

cadf

若关系R为:--------------------------关系S为:---------------

ABCDCD

-----------------------------------------

abcdcd

abefef

`bcef

edcd

edef

abde

则R÷S为:--------------

AB

---------------

ab

ed

例题:

若有关系模式R(A,B,C)和S(C,D,E),对于如下的关系代数表达式:(数据库)

E=∏A,DB<'2003'∧R.C=S.C∧E='80'(R×S))

E=∏A,DR.C=S.CB<'2003'(R)×σE='80'(S)))

E=∏A,DB<'2003'(R)σE='80'(S))

E=∏A,DB<'2003'∧E='80'(RS))
正确的结论是__A__,表达式__C__的查询效率最高。

(20)A.E1≡E2≡E3≡E4

B.E3≡E4但E1≠E2

C.E1≡E2但E3≠E4

D.E3≠E4但E2≡E4

(21)A.E1

C.E3

B.E2

D.E4

2.4关系范式:

设有以图书管理数据库,其关系模式是R0(L#,B#,BNAME,BPRICE,BPUB),其属性分别表示个人借书证号、书号、书名、书价、图书出版社。该关系模式A。它的主要问题是数据冗余。如把R0分解成两个关系模式R1B和R2C,则可以部分的解决这一问题。R1和R2是规范化程度较差的范式D。另外一种分解方法可以得到3个模式R3(L#,B#),R4(B#,BNAME),R5(BNAME,BPRICE,BPUB),则R3、R4和R5E

A、D、E:①属于第一范式但不属于第二范式

②属于第二范式但不属于第三范式

③属于第三范式

④不是范式

⑤属于第二范式但不属于第一范式

⑥属于第三范式但不属于第二范式

B、C:①(L#,B#,BPRICE)②(L#,B#)

③(B#,BNAME)④(B#,BNAME,BPRICE,BPUB)

⑤(BNAME,BPRICE,BPUB)⑥(L#,BNAME,BPRICE)

ABCDE

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics