《数据库知识培训资料.docx》由会员分享,可在线阅读,更多相关《数据库知识培训资料.docx(26页珍藏版)》请在课桌文档上搜索。
1、数据库知识培训资料数据库管理系统的功能与特征 数据库模型(概念模式、外模式、内模式.) 数据模型,ER图,第一范式、第二范式、第三范式 数据操作(集合运算与关系运算) 数据库语言(SQL) 数据库的操纵功能(并发操纵、恢复、安全性、完整性) 数据仓库与分布式数据库基础知识1、数据库知识1.1 数据管理技术的进展蝇管理技术的进展阶段:人工阶段:数据处理方式是批处理。其特点是: 数据不储存 没有专用的软件对数据进行管理 只有程序概念,没有文件概念 一组数据对应一个程序,即数据是面向程序的文件系统阶段:数据处理方式有批处理,也有联机实时处理。其特点是:数据可长期储存在外存上 数据的逻辑结构与物理结构
2、有了区别,但简单 文件组织已多样化,有索引文件、链接文件与直接存取文件等,但文件之间相互独立,没有联系 数据不再属于某个特定的程序,可重复使用,但数据结构与程序之间的依靠关系并未根本改变。其缺点是: 数据冗余性 数据不一致性 数据联系弱数据库阶段:其特点是: 用关系模型表示复杂的数据模型 有较高的数据独立性 数据库系统为用户提供了方便的用户接口 数据库管理系统提供了四个方面的数据操纵能力-数据完整性、数据安全性、数据库的并发操纵、数据库的恢复数据库的基本概念数据库(DB):是存储在一起的有关数据的集合。DB能为各类用户共享,具有最小冗余度,数据问联系密切,而又有较高的程序与数据的独立性。数据库
3、管理系统(DBMS):DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或者应用程序提供访问DB的方法,包含DB的建立、查询、更新及各类数据操纵。DBMS可分为层次型、网状型、关系型、面向对象型。数据库系统(DBS):即是使用了数据库技术的计算机系统,是实现有组织地、动态存储大量关联数据,方便多用户访问的计算机软件硬件与数据资源而构成的系统。数据库技术:研究数据库的结构、存储、设计、管理与使用的一门软件学科。1.2 数据模型表示实体类型及实体之间联系的模型称之“数据模型”。数据模型是严格定义的概念的集合,数据库的数据模型应包含数据结构(指对实体类型与实体之间联系的表达与实现)数据操作(
4、指对数据库的检索与更新两大类操作)与完整性约束(给出数据及其所具有的制约合依靠规则)3个部分。数据模型的种类很多。目前广泛使用的数据模型可分为两种:概念数据模型与结构数据模型。概念数据模型这是一种独立于任何计算机系统的模型,完全不涉及信息在计算机系统中的表示,用于建立信息世界的数据模型,是现实世界的第一层抽象,是用户与数据库设计人员进行交流的工具,其中最著名的模型是“实体联系模型”(ER模型)。ER模型直接从现实世界中抽取出实体类型及实体间联系图(ER图)表示数据模型。通常遇到实际问题时,总是先设计一个ER模型,然后再把ER模型转换成与DBMS关联的数据模型。结构数据模型(亦称基本数据模型):
5、这是直接面向数据库的逻辑数据结构,通常有一组严格定义了语法与语义的数据库语言,用来定义、操纵数据库中的数据。其要紧有层次、网状、关系模型三种。 层次模型:用树型(层次)结构表示实体类型及实体之间联系的数据模型称之层次模型。层次结构是一棵树,树的结点是记录类型,非根结点有且只有一个父结点。上一层记录类型与下一层记录类型的联系是1:M联系。 网状模型:用从结构(网络结构)表示实体类型及实体间联系的数据模型称之网状模型。记录之间的联系通过指针实现,M:N联系容易实现(一个M:N联系可拆成两个1:M联系),查询效率高。 关系模型:用规范化了的二维表格结构表示实体集,用键表示实体间联系。通常是若干个关系
6、模型构成的集合。1.3 数据库系统的结构 数据库的数据体系结构数据库的数据体系结构分成3个级别:内部级概念级、外部级。从某个角度看到的数据特性称之数据视图。 外部级最接近用户,是用户看到的数据特性,用户的数据视图称之外模型。概念级是涉及到所有用户的数据定义,也就是全局的数据视图,称之概念模型。 内部级是最接近于物理存储设备,涉及到实际数据的存储方式。物理存储的数据视图称之内模型。这些模型用数据库的数据定义语言(DDL)描述后,分别得到外模式、概念模式、内模式。为实现这3个抽象级别的转换,数据库与管理系统在这3级结构之间提供了两层映象:外模式/概念模式映象与概念模式/内模式映象数据库管理系统的要
7、紧目标:把数据作为可管理的资源处理。数据库管理系统的5个重要功能:数据库的定义功能、数据库的操纵功能、数据库的保护功能、数据库的保护功能、数据字典。数据库的全局结构:DBS的某些功能是由计算机的OS提供的,OS提供了DBS最基本的服务,因此DBS务必在OS基础上工作。在DBS中就应包含DBMS与OS之间的界面。DBS的全局结构由数据库用户、数据库管理系统的查询处理器、数据库管理系统的存储管理器与磁盘存储器中的数据结构等部分构成。1.4 关系模型与关系运算基本概述关系数据库是应用关系数据模型来建立与处理数据库中的数据。这其中要紧涉及几个重要的概念。关系关系实际上就能够看作是一个二维表。其中,表的
8、每一列称之属性,并用属性名来标识。每个属性的取值范围,就是该属性所对应的值域。表的每一行称之元组。约定该表的行列的次序的改变,不改变关系的语义性质。关于一个关系,应该具备下列性质: 关系中每一个属性值都是不可分解的: 关系中不同意出现相同的元组:不让用户考虑元组的顺序: 用户在使用时应考虑列的顺序。 关系模型关系模型是目前最流行的一种数据模型,它是用二维表格结构表示实体集,关键码表示实体间的联系。 关键字(键)I.候选键关系中的某一属性或者属性组*若它的值能够唯一标识关系中的一个元组而又不含有多余的属性,则称该属性或者属性组为候选关键字。H.主键关系模式中用户正使用的候选关键字称之主关键字。I
9、II .外关键字若模式R中某属性集是其他模式的候选键,那么该属性集对模式R而言就是外关键字。IV .超键关系模式中,为唯一标识元组的属性集称之超键。 关系模型关系模型遵循数据库的3级体系结构。 关系模式数据库的概念模式定义为关系模式的集合。每个关系模式就是记录类型。 关系子模式这是对用户所用到的那部分数据的描述。除了指出用户用到的数据外,还应指出数据与模式中相应数据的联系,即指出子模式与模式之间的对应性。 关系存储模式(关系内模式D这是作为文件看待的,每个元组就是一个记录。关系模型有3个部分构成: 数据结构关系模型使用的数据结构是关系。 关系操作关系模型提供一组完备的关系运算,以支持对数据库的
10、各类操作。关系运算的理论是关系代数与关系演算。 关系的完整性在关系模型中,数据的约束条件通过三类完整性约束条件来描述。即:I .实体完整性要求关系中的元组的主键值不能是空值。II .参照完整性要求在关系中不同意引用不存在的实体。I11.用户定义的完整性这是针对某一具体数据的约束条件,由应用环境决定,比如属性的值限制。关系代数关系查询语言根据其理论基础的不一致分成两大类: 关系代数语言:查询操作是以集合操作为基础的运算。 关系演算语言:查询操作是以谓词演算为基础的运算。其中,关系代数是以集合代数为基础进展起来的,它是以关系为运算对象的一组高级运算的集合。关系代数的运算可分为两类:基本运算操作:并
11、差、笛卡尔积、投影与选择。组合运算操作:交、联接、自然联接与除。另外,还有几种扩充的关系代数操作:外联接(左外联接与右外联接)、外部并与半联接。下列对几种常用的关系运算作一个简单的介绍。基本运算1.并设有两个关系R与S具有相同的关系模式,关系R与S的并是由属于R或者属于S的元组构成的集合,记为RUS。形式定义如下:RUS三ttRVlS2 .差设有两个关系R与S具有相同的关系模式.,关系R与S的差是由属于R但不属于S的元组构成的集合,记为R-S。形式定义如下:R-S三ttRtS3 .笛卡儿积设关系R与S元数分别为!与s。定义R与S的笛卡儿积是一个(r+s)元的元组集合,每个元组的前r个分量来自R
12、的一个元组*后S个分量来自S的一个元组,记为RxS形式定义如下:RS三tt=trRtsS若R有m个元组,S有n个元组,则RXS有(mn)个元组。4 .投影该操作是对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。5 .选择这个操作是根据某些条件对关系作水平分割,即选择符合条件的元组。条件可用命题公式F表示,F中的运算对象是常数(用引号括起来)或者元组分量(属性名或者列的序号)。运算符有算术比较运算符(,=,=#)与逻辑运算符(八,V,-I)。(5p(R)三ttRF(t)=true6为选择运算符,6F(R)表示从R中选择满足公式F的元组所构成的集合。常量用引号括起来,而属性号或
13、者属性名不要用引号括起来。组合运算1. 交设有两个关系R与S具有相同的关系模式,,关系R与S的交是由属于R又属于S的元组构成的集合,记为RS。形式定义如下:RS三(t!tRtS!2. 联接(又称。联接)从关系R与S的笛卡尔积中选取属性值之间满足一定条件的元组,记为:RIXS三5io(三)(RS)ij6这里R的元数是r,0是算术比较运算符:RIXIS操作是在R与Sije的笛卡尔积中选择第i个分量与第(r+j)个分量满足运算的元组构成的新的关系。3. 自然联接两个关系R与S的自然联接用RlXlS表示,具体计算过程如下:A) 计算RxSB) 设R与S的公共属性是Al,A2,A3,.Ak.,选择RxS
14、中满足R.A1=S.A1,R.A2,R.Ak=S.Ak的那些元组C) 去掉S.AI,S.A2,.S.AkRIxS可用下列形式定义:RIXS三JTiIi2“im(R.AI=S.AlA.AR.Ak=S.Ak(RxS)04. 除法设两个关系R与S的元数分别为!与s(rsX),那么RS是一个(r-s)元的元组的集合RS)是满足下列条件的最大关系,其中每个元组t与S中每个元组u构成的新元组t,u必在关系R中。RS的具体计算过程如下:A) T=Jtl,2,.r-s(R)B) W=(TxS)-R求出TxS中不在R的元组C) V=TTLy(W)D) RS=TV因此RS三l,2,.r-s(R)-l,2,.r-s
15、(l,2,.r-s(R)S)-R)1.5关系数据库SQL语言SQL数据库的数据体系结构SQL数据库的数据体系结构基本上也是3级结构,但术语与传统关系模型术语不一致。SQL中,关系模型称之“基本表”,存储模式称之“存储文件”,子模式称之“视图”,元组称之“行”,属性称之“列”。SQL语言的构成一个SQL数据库是表的汇合,它用一个或者多个SQL模式定义。一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。一个表或者者是一个基本表,或者者是一个视图。基本表是实际存储在数据库的表,视图是由若干基本表或者其他视图构成的表的定义。SQL包含了所有对数据库的操作,要紧有4个部分:数据定义(SQLDD
16、L)、数据操纵(SQLDML)访问数据操纵、嵌入式SQL语言的规定。SQLDDL要紧是定义基本表、视图、索引3个部分:基本表的定义、修改、撤销基本表的定义可用“CREATETABLE”语句实现,增加属性能够用“ALTER.ADD.语句,删除属性能够用ALTER.DROP.”语句;删除已存在的表可用“DROPTABLE.”语句。视图的定义与撤销视图的定义能够用CREATEVIEW语句实现。视图的撤消能够用DROPVIEW语句实现。索引的定义与撤销索引的定义能够用CREATE,用DROP撤销。SQLDML数据查询语句SQL的查询语句只有SELECT语句。SELECT查询语句在关系代数中最常用的式子
17、是“投影选择联接表达式”:乃(6P(RbU,同时不存在X的任意真子集Xl,使得X1-U成立,那么就称X为关系的一个侯选键。函数依靠还有几条推理规则:自反性;增广性;传递性;并规则;分解规则:伪传递规则: 模式分解:目的是消除冗余与操作特殊问10模式分解的三个定义: 分解具有“无损连接性” 分解要“保持函数依靠” 分解既要“保持函数依靠“,又要具有“无损连接性”。关系模式分解的两个特性实际涉及到两个数据库模式的等价性问题。包含数据等价与依靠等价两个方面:数据等价:两个数据库实例应表示同样的信息内容,用“无损联接”衡量。依靠等价:两个数据库模式应有相互逻辑关系的函数依靠集,如今数据的语义是不可能出
18、现差错的。例:关系模式S-L-C(SNOSDEPT,SLOCCNO,G)中,SLOC为学生的住处,同时每个系的学生住在同一个地方。这里码为(SNoeNO)。函数依靠有:(SNO,CNO)GSNO-*SDEPT,(SNO.CNO)-SDEPTSNOSLOC,(SNO,CNO)-SLOCSDEPTrSLoC用投影分解把关系模式S-L-C分解为3NF范式.,且保持函数依鸵。解法:(1)对R(U,F)中的函数依靠集F进行“极小化处理”。F=SNO,CNO-G,SNO-SDEPTSDEPTSLOC。R中没有不在F中出现的属性。不存在XfAiF,且XA=U,接着做第=4*GB2步。(4)对F按具有相同左部
19、的原则分组。r=SCSNO,CNO,G,SNO,CNOG)S-D(SNO,SDEPT),SNOSDEPT,D-LSDEPT.SLOC.SDEPT-SLOC)范式范式(normalform,NF)是衡量关系模式的优劣的标准。范式有很多种,与数据依靠有着直接的联系。第一范式INF假如关系模式R中,每个分量是不可分的数据项,就称R属于第一范式。第二范式2NF若关系模式R属于INF,且每个非主属性完全函数依靠于候选关键字,则称R属于第二范式。第三范式3NF若关系模式R属于INF,且每个非主属性都不传递依靠于R的候选关键字,则称R属于第三范式。这里的主属性是指键的属性,而不是任何键的属性就是非主属性BC
20、范式B(W若关系模式R属于INF,且每个属性都不传递依靠于R的候选关键字,则称R属于BC范式。由上可知,4种范式之间的关系:BCNF3NF2NF1NF1.8 数据库保护在数据库系统运行时,DBMS要对数据库进行监控,以保证整个系统的正常运转,保证数据库中的数据安全可靠、正确有效,防止各类错误的产生,这就是对数据库的保护,有的时候也称之“数据操纵”。这具体包含下列四个方面:数据库的恢复完整性操纵(主键约束,外键约束,属性的值域约束)并发操纵(琐机制)安全性操纵(存储操纵,审计,视图保护与日志监视)事务事务在数据库里面是一个十分重要的概念。数据库系统运行的基本工作单位是事务。它相当于操作系统中的进
21、程,一个事务由应用程序中的一组操作序列构成。实际上,事务能够看作是一个原子,是一个不可分割的操作序列。事务中包含的所有操作要么都执行,要么都不执行。事务通常以BEGINTRANSACTION语句开始,它要紧涉及两个语句。、事务提交语句COMMIT事务回滚语句ROLLBACK事务的特性:事务具有四个特性:原子性(AtomiCiIy)、一致性(Consistency)隔离性(Isolation)与持续性(Durability)这个四个特性也简称之ACID特性。1 原子性:事务是数据库的逻辑工作单位,事务中包含的诸操作要么都做,要么都不做。2 一致性:事务执行的结果务必是使数据库从一个一致性状态变到
22、另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。假如数据库系统运行中发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始时的一致状态。3 隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔禹的,并发执行的各个事务之间不能互相干扰。4 持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或者故隙不应该对其执行结果有任何影响。数据库恢复:尽管数据库系统中采取了各类保护措施来防止数据库的安全性与完整性被
23、破坏,保证并发事务的正确执行,但是计算机系统中硬件的故障、软件的错误、操作员的失误与恶意的破坏仍是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或者部分数据丢失,因此数据库管理系统(恢复子系统)务必具有把数据库从错误状态恢复到某一已知的正确状态(亦称之一致状态或者完整状态)的功能,这就是数据库的恢复故障的种类:一、事务内部的故障事务内部的故障有的是能够通过事务程序本身发现的(见下面转帐事务的例子A有的是非预期的,不能由事务程序处理的。系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。比如,特定类型的硬件错误(CPU故隙)、操作
24、系统故障、DBMS代码错误、突然停电等等。这类故障影响正在运行的所有事务,但不破坏数据库。这时主存内容,特别是数据库缓冲区(在内存)中的内容都被丢失,所有运行事务都非正常终止。发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,有些已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,从而造成数据库可能处于不正确的状态。为保证数据一致性,恢复子系统务必在系统重新启动时让所有非正常终止的事务回滚,强行撤消(UNDO)所有未完成事务。重做(Redo)所有已提交的事务,以将数据库真正恢复到一致状态。三介质故障系统故障常称之软故障(SoftCraSh),介质故障称之硬故
25、障(HardCrash)。硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或者部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。四计算机病毒计算机病毒是具有破坏性、能够自我复制的计算机程序。计算机病毒已成为计算机系统的要紧威胁,自然也是数据库系统的要紧威胁。因此数据库一旦被破坏仍要用恢复技术把数据库加以恢复。恢复策略:1事务故障的恢复事务故障是指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统的恢复步骤是
26、:(1) .反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。(2) .对该事务的更新操作执行逆操作。马上日志记录中“更新前的值”写入数据库。这样,假如记录中是插入操作,则相当于做删除操作(因如今“更新前的值”为空)。若记录中是删除操作,则做插入操作,若是修改操作,则相当于用修改前值代替修改后值。(3) .继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。(4),如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。2系统故障的恢复前面已讲过,系统故障造成数据库不一致状态的原因有两个,一是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更
27、新可能还留在缓冲区没来得及写入数据库。因此恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。系统的恢复步骤是:(1) .正向扫描日志文件(即从头扫描日志文件A找出在故障发生前已经提交的事务(这些事务既有BEGINTRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGINTRANSACTION记录,无相应的COMMIT记录),将其事务标识记入撤消(UNDO)队列。(2) .对撤消队列中的各个事务进行撤消(UNDO)处理。进行UNDo处理的
28、方法是,反向扫描日志文件,对每个UMX)事务的更新操作执行逆操作,马上日志记录中“更新前的值”写入数据库。(3) .对重做队列中的各个事务进行重做(REDO)处理。进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。马上日志记录中“更新后的值”写入数据库。3介质故障的恢复发生介质故障后,磁盘上的物理数据与日志文件被破坏,这是最严重的一种故障,恢复方法是重装数据库,然后重做已完成的事务。具体地说就是:(1) .装入最新的数据库后备副本(离故障发生时刻展近的转储副本),使数据库恢复到展近一次转储时的一致性状态。关于动态转储的数据库副本,还须同时装入转储开始时刻
29、的日志文件副本,利用恢复系统故障的方法(即REDo+UNDO),才能将数据库恢复到一致性状态。(2) .装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。即:首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。马上日志记录中“更新后的值”写入数据库。这样就能够将数据库恢复至故障前某一时刻的一致状态了。介质故障的恢复需要DBA介入。但DBA只需要重装最近转储的数据库副本与有关的各日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成。并发操纵在多用户共享系统中,许多事务可能同时
30、对同一个数据进行操作,这时候就产生了并发操纵的问题。DMBS的并发操纵子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。同时并发方式:在多处理系统中,每个处理机能够运行一个事务,多个处理机能够同时运行多个事务,实现多个事务真正的并行运行,这种并行方式称之同时并发方式。并发操纵机制是衡量一个数据库管理系统性能的重要标志之一。数据库的并发操作通常可能带来下列的问题: 丢失更新问题 不一致分析问题(读过时的数据) 依靠于未提交更新问题(读“脏”数据)处理并发操纵的要紧方法是使用封锁技术。封锁是实现并发操纵的一个非常重要的技术。封锁:所谓封锁就是事务T在对某个数据
31、对象比如表记录等操作之前,先向系统发出请求,对其加锁。加锁后事务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释
32、放A上的S锁。这就保证了其它事务能够读A,但在T释放A上的S锁之前不能对A做任何修改。有两种类型:排他型封锁(X封锁) 共享型封锁(S封锁)在运用X锁与S锁这两种基本封锁,对数据对象加锁时,还需要约定一些规则,比如应何时申请X锁或者s锁、持锁时间何时释放等。我们称这些规则为封锁协议(LockingProtocol)。对封锁方式规定不一致的规则,就形成了各类不一致的封锁协议。下面介绍三级封锁协议。对并发操作的不正确调度可能会带来丢失修改不可重复读与读“脏”数据等不一致性问题,三级封锁协议分别在不一致程度上解;夬了这一问题。为并发操作的正确调度提供一定的保证。不一致级别的封锁协议达到的系统一致性级
33、别是不一致的。一级封锁协议是:事务T在修改数据R之前务必先对其加X锁,直到事务结束才释放。事务结束包含正常结束(COMMIT)与非正常结束(ROLLBACK)。二级封锁协议是:一级封锁协议加上事务T在读取数据R之前务必先对其加S锁,读完后即可释放S锁。二级封锁协议除防止了丢失修改,还可进一步防止读“脏”数据三级封锁协议是:一级封锁协议加上事务T在读取数据R之前务必先对其加S锁,直到事务结束才释放。三级封锁协议除防止了丢失修改与不读脏数据外,还进一步防止了不可重复读与操作系统一样,封锁的方法可能引起活锁与死锁。一.活锁活锁:假如事务Tl封锁了数据R,事务T2又请求封锁R,因此T2等待。T3也请求
34、封锁R,当Tl释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,T2有可能永远等待,这就是活锁的情形二死锁死锁:假如事务Tl封锁了数据Rl,T2封锁了数据R2,然后Tl又请求封锁R2,因T2已封锁了R2,因此Tl等待T2释放R2上的锁。接着T2又申请封锁Rl,因Tl已封锁了Rl,T2也只能等待Tl释放Rl上的锁。这样就出现了Tl在等待T2,而T2又在等待Tl的局面,Tl与T2两个事务永远不能结束,形成死锁。死锁的预防:在数据库中产生死锁的原因是两个或者多个事务都已封锁了一些数据对象,然后又都请求对已被其他事务封锁
35、的数据对象加锁,从而出现死等待。防止死锁的发生事实上就是要破坏产生死锁的条件。预防死锁通常有两种方法:一次封锁法:一次封锁法要求每个事务务必一次将所有要使用的数据全部加锁,否则就不能继续执行。一次封锁法尽管能够有效地防止死锁的发生,但也存在问题,一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。顺序封锁法:顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。顺序封锁法能够有效地防止死锁但也同样存在问题。事务的封锁请求能够随着事务的执行而劫态地决定,很难事先确定每一个事务要封锁什么对象,因此也就很难按规定的顺序去施加封锁。可见,在操作系统中广为
36、使用的预防死锁的策略并不很适合数据库的特点,因此DBMS在解决死锁的问题上普遍使用的是诊断并解除死锁的方法。2.死锁的诊断与解除超时法假如一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但其不足也很明显。一是有可能误判死锁,事务由于其他原因使等待时间超过时限,系统会误认为发生了死锁。二是时限若设置得太长,死锁发生后不能及时发现。等待图法事务等待图是一个有向图G=(T,U)。T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若Tl等待T2,则Tl、T2之间划一条有向边,从TI指向T2。事务等待图动态地反映了所有事务的等待情况。并发操纵子系统周
37、期性地(比如每隔1分钟)检测事务等待图,假如发现图中存在回路,则表示系统中出现了死锁。DBMS的并发操纵子系统一旦检测到系统中存在死锁,就要设法解除。通常使用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作务必加以恢复。假如一个事务运行过程中没有其他事务同时运行,也就是说它没有受到其他事务的干扰,那么就能够认为该事务的运行结果是正常的或者者预想的。因此将所有事务串行起来的调度策略一定是正确的调度策略。尽管以不一致的顺序串行执行事务可能会产生不一致的结果,但由于不可能将数据库置于不一致状态,因此都是正确
38、的。定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。我们称这种调度策略为可串行化(SerialiZable)的调度。另外,在封锁技术方面,SQL提供事务的四种一致性级别,从高到低分别是: SerialiZabIe(可串行化) repeatableread(可重复读) readcommitted(读提交数据) readuncommitted(可读未提交数据)数据库安全:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更换或者破坏。为降低继而消除对系统的安全攻击,特别是弥补原有系统在安全保护方面的缺陷,在计算机安全技术方面逐步建立了一套可信标
39、准。在目前各国所引用或者制定的一系列安全标准中,最重要的当推1985年美国国防部(DOD)正式颁布的DoD可信计算机系统评估标准(TrUStedComputerSystemEvaluationCriIeria,简记为TCSEC)或者DoD85)三制定这个标准的目的要紧有:(1提供一种标准,使用户能够对其计算机系统内敏感信息安全操作的可信程度做出评估。给计算机行业的制造商提供一种可循的指导规则,使其产品能够更好的满足敏感应用的安全需求。TCSEC又称桔皮书7991年4月美国NCSC(国家计算机安全中心)颁布了可信计算机系统评估标准关于可信数据库系统的解释(TrustedDatabaseInter
40、pretation简记为TDI即紫皮书)。将TCSEC扩展到数据库管理系统。TDI中定义了数据库管理系统的设计与实现中需满足与用以进行安全性级别评估的标准。在TCSEC中建立的安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或者更完善的保护能力。下面,我们简略地对各个等级作一介绍。D级:D级是最低级别。保留D级的目的是为了将一切不符合更高标准的系统统统归于D组。如DOS就是操作系统中安全标准为D的典型例子。它具有操作系统的基本功能,如文件系统,进程调度等等,但在安全性方面几乎没有什么专门的机制来保障。Cl级:只提供了非常初级的自主安全保护。能够