数据库系统考博复习提要.doc_第1页
数据库系统考博复习提要.doc_第2页
数据库系统考博复习提要.doc_第3页
数据库系统考博复习提要.doc_第4页
数据库系统考博复习提要.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第一章 绪论1.1 数据库系统概述1、数据(Data):数据库中存储的基本对象(文字、图形、图像、声音)例:(李明,男,1972,江苏,计算机系,1990)语义:学生姓名、性别、出生年月、籍贯、所在系别、入学时间解释:李明是个大学生,1972年出生,江苏人,1990年考入计算机系2、数据库(Database):长期储存在计算机内、有组织的、可共享的大量数据集合3、数据库管理系统(DBMS):位于用户与操作系统之间的一层数据管理软件。功能:数据定义(DDL)、数据操纵(DML) (查询、插入、删除和修改)、数据库的运行管理、数据库的建立和维护功能(实用程序)4、数据库系统(DBS):由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。5、数据管理:对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题发展:人工管理阶段(40年代中-50年代中)、文件系统阶段(50年代末-60年代中)、数据库系统阶段(60年代末-现在)6、数据独立性n 物理独立性:指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。n 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变。1.2 数据模型数据的结构用数据模型描述,无需程序定义和解释。数据的最小存取单位是数据项。1、两个层次概念模型:也称信息模型,它是按用户的观点来对数据和信息建模。 数据模型:包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模。 2、组成要素:数据结构、数据操作、数据的约束条件3、信息世界中的基本概念:(1) 实体(Entity)(2) 属性(Attribute)(3) 码(Key)(4) 域(Domain)(5) 实体型(Entity Type)(6) 实体集(Entity Set)(7) 联系(Relationship)一对一联系(1:1)、一对多联系(1:n)、多对多联系(m:n) l 一个班级只有一个正班长,一个班长只在一个班中任职l 一个班级中有若干名学生,每个学生只在一个班级中学习l 一门课程同时有若干个学生选修,一个学生可以同时选修多门课程4、 概念模型的表示方法:实体联系方法(E-R方法) 5、关系模型l 关系(Relation):一个关系对应通常说的一张表。l 元组(Tuple):表中的一行即为一个元组。l 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。l 主码(Key):表中的某个属性组,它可以唯一确定一个元组。l 域(Domain):属性的取值范围。l 分量:元组中的一个属性值。l 关系模式:对关系的描述,关系名(属性1,属性2,属性n),学生(学号,姓名,年龄,性别,系,年级)l 实体型:直接用关系(表)表示。l 属性:用属性名表示。l 一对一联系:隐含在实体对应的关系中。l 一对多联系:隐含在实体对应的关系中。l 多对多联系:直接用关系表示。1.3 数据库系统结构1、模式(也称逻辑模式)(1)数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图,综合了所有用户的需求。一个数据库只有一个模式。(2)地位:是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。(3)定义:数据的逻辑结构(数据项的名字、类型、取值范围等)、数据之间的联系、数据有关的安全性、完整性要求2、 外模式(也称子模式或用户模式)(1)数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。(2)地位:介于模式与应用之间,模式与外模式的关系:一对多。外模式通常是模式的子集,一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求,对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同,外模式与应用的关系:一对多,同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。3、内模式(也称存储模式)(1)是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。(记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)、索引的组织方式、数据是否压缩存储、数据是否加密、数据存储记录结构的规定)(2)一个数据库只有一个内模式三级模式是对数据的三个抽象级别二级映象在DBMS内部实现这三个抽象层次的联系和转换4、外模式模式映象(1)定义外模式与模式之间的对应关系、每一个外模式都对应一个外模式模式映象、映象定义通常包含在各自外模式的描述中。(2)用途:保证数据的逻辑独立性l 当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变。l 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。5、模式内模式映象(1)模式内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的、数据库中模式内模式映象是唯一的、该映象定义通常包含在模式描述中。(2)用途:保证数据的物理独立性l 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变。l 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。第二章 关系数据库2.1 关系模型概述1、常用的关系操作:查询:选择、投影、连接、除、并、交、差数据更新:插入、删除、修改查询的表达能力是其中最主要的部分2、关系的三类完整性约束:实体完整性、参照完整性、用户定义的完整性2.2 关系数据结构1. 域(Domain):一组具有相同数据类型的值的集合2. 笛卡尔积(Cartesian Product)给定一组域D1,D2,Dn,这些域中可以有相同的。D1,D2,Dn的笛卡尔积为:D1D2Dn(d1,d2,dn)diDi,i1,2,n元组:笛卡尔积中每一个元素(d1,d2,dn)。分量(Component):笛卡尔积元素(d1,d2,dn)中的每一个值di叫作一个分量。若Di(i1,2,n)为有限集,其基数为mi(i1,2,n),则D1D2Dn的基数M为:3. 关系(RelationD1D2Dn的子集叫作在域D1,D2,Dn上的关系,表示为R(D1,D2,Dn)关系模式可以形式化地表示为:R(U,D,dom,F)R 关系名U 组成该关系的属性名集合D 属性组U中属性所来自的域dom 属性向域的映象集合F 属性间的数据依赖关系集合关系模式通常可以简记为R (U) 或 R (A1,A2,An) (R 关系名 A1,A2,An 属性名)2.3 关系的完整性1、实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值。2、参照完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值。例如:学生关系中每个元组的“专业号”属性只取下面两类值:(1)空值,表示尚未给该学生分配专业(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。3、用户定义的完整性 2.4 关系代数 1、传统的集合运算:并、差、交、广义笛卡尔积RS = t | t Rt S R - S = t | tRt S RS = t | t Rt S RS = R (R-S)广义RS :R:n目关系,k1个元组。S:m目关系,k2个元组列:(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。行:k1k2个元组2、专门的关系运算:选择、投影、连接、除F(R) = t|tRF(t)= 真 Sdept = IS (Student)A(R) = tA | t R Sname,Sdept(Student)连接:等值连接: 自然连接:特殊的等值连接,在结果中把重复的属性列去掉。 例1:在关系R中,A可以取四个值a1,a2,a3,a4a1的象集为 (b1,c2),(b2,c3),(b2,c1)a2的象集为 (b3,c7),(b2,c3)a3的象集为 (b4,c6)a4的象集为 (b6,c6)S在(B,C)上的投影为(b1,c2),(b2,c1),(b2,c3) 只有a1的象集包含了S在(B,C)属性组上的投影,所以RS =a1 例2:Sno.Cno(SC)95001象集1,2,395002象集2,3 Cno(K)=1,3 于是:Sno.Cno(SC)K=950012.5 关系演算第三章 关系数据库标准语言SQL1、定义表CREATE TABLE ( , , );n :所要定义的基本表的名字n :组成该表的各个属性(列)n :涉及相应属性列的完整性约束条件n :涉及一个或多个属性列的完整性约束条件 常用完整性约束:n 主码约束: PRIMARY KEYn 唯一性约束:UNIQUEn 非空值约束:NOT NULLn 参照完整性约束2、删除表DROP TABLE ; 3、修改表结构ALTER TABLE ADD 完整性约束 DROP MODIFY ;n :要修改的基本表n ADD子句:增加新列和新的完整性约束条件n DROP子句:删除指定的完整性约束条件n MODIFY子句:用于修改列名和数据类型4、建立索引 CREATE UNIQUE CLUSTER INDEX ON (, );n 用指定要建索引的基本表名字n 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔n 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCn UNIQUE表明此索引的每一个索引值只对应唯一的数据记录n CLUSTER表示要建立的索引是聚簇索引5、删除索引 DROP INDEX ;6、查询SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;(1)WHERE子句常用的查询条件:AND的优先级高于OR(2)5类主要集函数计数:COUNT(DISTINCT|ALL *) COUNT(DISTINCT|ALL )计算总和:SUM(DISTINCT|ALL )计算平均值:AVG(DISTINCT|ALL )求最大值:MAX(DISTINCT|ALL )求最小值:MIN(DISTINCT|ALL )(3)连接查询 n . . 比较运算符:=、=、=、!=n . BETWEEN . AND .(4)子查询:带有IN谓词、比较运算符、ANY或ALL谓词、EXISTS谓词的子查询7、插入数据INSERT INTO (,)VALUES ( , )8、修改数据UPDATE SET =,= WHERE ;9、删除数据 DELETE FROM WHERE ;10、视图建立视图CREATE VIEW ( ,) AS WITH CHECK OPTION;删除视图DROP VIEW ;11、数据控制亦称为数据保护,包括数据的:安全性控制、完整性控制、并发控制、恢复(1)数据库的完整性是指数据库中数据的正确性与相容性。n SQL语言定义完整性约束条件CREATE TABLE语句、ALTER TABLE语句、码、取值唯一的列、参照完整性、其他约束条件(2)并发控制: 当多个用户并发地对数据库进行操作时,对他们加以控制、协调,以保证并发操作正确执行,保持数据库的一致性。n SQL语言并发控制能力:提供事务、事务开始、事务结束、提交等概念(3)恢复: 当发生各种类型的故障导致数据库处于不一致状态时,将数据库恢复到一致状态的功能。n SQL语言恢复功能:提供事务回滚、重做等概念(UNDO、REDO)(4)安全性:保护数据库,防止不合法的使用所造成的数据泄露和破坏。n 授权GRANT语句的一般格式: GRANT ,. ON TO ,. WITH GRANT OPTION;n 收回权限REVOKE语句的一般格式为: REVOKE ,. ON FROM ,.;第五章 关系数据理论5.2规范化规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。一、函数依赖定义5.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作XY。 例: Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有:Sno Ssex,Sno Sage , Sno Sdept,Sno Sname, Sname Ssex, Sname SageSname Sdept但Ssex Sage若XY,并且YX, 则记为XY。若Y不函数依赖于X, 则记为XY。二、平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡的函数依赖若XY,但Y X, 则称XY是平凡的函数依赖例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) Grade 平凡函数依赖: (Sno, Cno) Sno (Sno, Cno) Cno三、完全函数依赖与部分函数依赖定义5.2 在关系模式R(U)中,如果XY,并且对于X的任何一个真子集X,都有 X Y, 则称Y完全函数依赖于X,记作XY。若XY,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XY。例: 在关系SC(Sno, Cno, Grade)中,四、传递函数依赖定义5.3 在关系模式R(U)中,如果XY,YZ,且YX,YX,则称Z传递函数依赖于X。注: 如果YX, 即XY,则Z直接依赖于X。例: 在关系Std(Sno, Sdept, Mname)中,有:Sno Sdept,Sdept Mname Mname传递函数依赖于Sno五、码定义5.4 设K为关系模式R中的属性或属性组合。若KU,则K称为R的一个侯选码(Candidate Key)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。主属性:包含在任何一个候选码中的属性。非主属性:不包含在任何一个候选码中的属性。全码:整个属性组是码。定义5.5 关系模式 R 中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。六、范式:符合某一种级别的关系模式的集合。1、各种范式之间存在联系:某一关系模式R为第n范式,可简记为RnNF。2、种类第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成为1NF有三种方法: 一是重复存储职工号和姓名。这样,关键字只能是电话号码。 二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性 三是职工号为关键字,但强制每条记录只能有一个电话号码。 以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。 第二范式(2NF):如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。 例:选课关系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号, CNO为课程号,GRADEGE 为成绩,CREDIT 为学分。 由以上条件,关键字为组合关键字(SNO,CNO) 在应用中使用以上关系模式有以下问题: a.数据冗余,假设同一门课由40个学生选修,学分就 重复40次。 b.更新异常,若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。 c.插入异常,如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。 d.删除异常,若学生已经结业,从当前数据库删除选修记录。某些门课程新生尚未选修,则此门课程及学分记录无法保存。 原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。 解决方法:分成两个关系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,需要时再进行自然联接,恢复了原来的关系 第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。 例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号, 姓名,所在系,系名称,系地址。 关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。 原因:关系中存在传递依赖造成的。即SNO - DNO。 而DNO - SNO却不存在,DNO - LOCATION, 因此关键辽 SNO 对 LOCATION 函数决定是通过传递依赖 SNO - LOCATION 实现的。也就是说,SNO不直接决定非主属性LOCATION。 解决目地:每个关系模式中不能留有传递依赖。 解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION) 注意:关系S中不能没有外关键字DNO。否则两个关系之间失去联系。 BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的。或是关系模式R,如果每个决定因素都包含关键字(而不是被关键字所包含),则RCNF的关系模式。 例:配件管理关系模式 WPE(WNO,PNO,ENO,QNT)分别表仓库号,配件号,职工号,数量。有以下条件 a.一个仓库有多个职工。 b.一个职工仅在一个仓库工作。 c.每个仓库里一种型号的配件由专人负责,但一个人可以管理几种配件。 d.同一种型号的配件可以分放在几个仓库中。 分析:由以上得 PNO 不能确定QNT,由组合属性(WNO,PNO)来决定,存在函数依赖(WNO,PNO) - ENO。由于每个仓库里的一种配件由专人负责,而一个人可以管理几种配件,所以有组合属性(WNO,PNO)才能确定负责人,有(WNO,PNO)- ENO。因为 一个职工仅在一个仓库工作,有ENO - WNO。由于每个仓库里的一种配件由专人负责,而一个职工仅在一个仓库工作,有 (ENO,PNO)- QNT。 找一下候选关键字,因为(WNO,PNO) - QNT,(WNO,PNO)- ENO ,因此 (WNO,PNO)可以决定整个元组,是一个候选关键字。根据ENO-WNO,(ENO,PNO)-QNT,故(ENO,PNO)也能决定整个元组,为另一个候选关键字。属性ENO,WNO,PNO 均为主属性,只有一个非主属性QNT。它对任何一个候选关键字都是完全函数依赖的,并且是直接依赖,所以该关系模式是3NF。 分析一下主属性。因为ENO-WNO,主属性ENO是WNO的决定因素,但是它本身不是关键字,只是组合关键字的一部分。这就造成主属性WNO对另外一个候选关键字(ENO,PNO)的部 分依赖,因为(ENO,PNO)- ENO但反过来不成立,而P-WNO,故(ENO,PNO)- WNO 也是传递依赖。 虽然没有非主属性对候选关键辽的传递依赖,但存在主属性对候选关键字的传递依赖,同样也会带来麻烦。如一个新职工分配到仓库工作,但暂时处于实习阶段,没有独立负责对某些配件的管理任务。由于缺少关键字的一部分PNO而无法插入到该关系中去。又如某个人改成不管配件了去负责安全,则在删除配件的同时该职工也会被删除。 解决办法:分成管理EP(ENO,PNO,QNT),关键字是(ENO,PNO)工作EW(ENO,WNO)其关键字是ENO 缺点:分解后函数依赖的保持性较差。如此例中,由于分解,函数依赖(WNO,PNO)- ENO 丢失了, 因而对原来的语义有所破坏。没有体现出每个仓库里一种部件由专人负责。有可能出现 一部件由两个人或两个以上的人来同时管理。因此,分解之后的关系模式降低了部分完整性约束。 一个关系分解成多个关系,要使得分解有意义,起码的要求是分解后不丢失原来的信息。这些信息不仅包括数据本身,而且包括由函数依赖所表示的数据之间的相互制约。进行分解的目标是达到更高一级的规范化程度,但是分解的同时必须考虑两个问题:无损联接性和保持函数依赖。有时往往不可能做到既有无损联接性,又完全保持函数依赖。需要根据需要进行权衡。 1NF直到BCNF的四种范式之间有如下关系: BCNF包含了3NF包含2NF包含1NF 小结: 目地:规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新 原则:遵从概念单一化 一事一地原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。 方法:将关系模式投影分解成两个或两个以上的关系模式。 要求:分解后的关系模式集合应当与原关系模式等价,即经过自然联接可以恢复原关系而不丢失信息,并保持属性间合理的联系。 注意:一个关系模式结这分解可以得到不同关系模式集合,也就是说分解方法不是唯一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空间,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。实际上,并不一定要求全部模式都达到BCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。 在关系数据库中,除了函数依赖之外还有多值依赖,联接依赖的问题,从而提出了第四范式,第五范式等更高一级的规范化要求。在此,以后再谈。 那些数据库的书介绍的数据库范式,实在是晦涩难懂,我在这里给出一个通俗的描述: 1NF:一个table中的列是不可再分的(即列的原子性) 2NF:一个table中的行是可以唯一标示的,(即table中的行是不可以有重复的) 3NF:一个table中列不依赖以另一个table中的非主键的列,还是不通俗!巨寒! 举个例子吧:有一个部门的table,我们叫它tbl_department, 它有这么几列(dept_id(pk),dept_name,dept_memo.) 有一个员工table,我们叫它tbl_employee,在这个table中有一列dept_id(fk)描述关于部门的信息,若tbl_employee要满足3NF,则在tbl_employee中就不得再有除dept_id列的其它有关部门信息的列! 一般数据库的设计满足3NF即可!(个人觉得应该尽可能的满足3NF,一家之言_) BCNF:通常认为BCNF是修正的第三范式,它比3NF又进一步! 4NF:5NF:将一个table尽可能的分割成小的块,以排除在table中所有冗余的数据第六章 数据库设计一、什么是数据库设计数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。二、数据库设计的过程(六个阶段) 需求分析阶段n 准确了解与分析用户需求(包括数据与处理)n 是整个设计过程的基础,是最困难、最耗费时间的一步概念结构设计阶段n 是整个数据库设计的关键n 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型逻辑结构设计阶段n 将概念结构转换为某个DBMS所支持的数据模型n 对其进行优化数据库物理设计阶段n 为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)数据库实施阶段n 运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果n 建立数据库n 编制与调试应用程序n 组织数据入库n 并进行试运行数据库运行和维护阶段n 数据库应用系统经过试运行后即可投入正式运行。n 在数据库系统运行过程中必须不断地对其进行评价、调整与修改。第七章 数据库恢复技术一、事务(Transaction)1、是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。2、事务和程序是两个概念n 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。n 一个应用程序通常包含多个事务。3、 事务是恢复和并发控制的基本单位。4、定义事务n 显式定义 BEGIN TRANSACTIONBEGIN TRANSACTION SQL 语句1 SQL 语句1 SQL 语句2 SQL 语句2 。 。 COMMITROLLBACKn 隐式:当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务。l COMMIT:事务正常结束、提交事务的所有操作(读+更新)、事务中所有对数据库的更新永久生效。l ROLLBACK事务异常终止:事务运行的过程中发生了故障,不能继续执行。回滚事务的所有更新操作:事务滚回到开始时的状态。5、事务的ACID特性:原子性(Atomicity):包括的诸操作要么都做,要么都不做。一致性(Consistency):执行的结果必须是使数据库从一个 一致性状态变到另一个一致性状态。隔离性(Isolation):对并发执行而言,一个事务的执行不能被其他事务干扰。持续性(Durability ):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。二、数据库恢复概述1、故障是不可避免的:计算机硬件故障、系统软件和应用软件的错误、操作员的失误、恶意的破坏2、故障的影响:运行事务非正常中断、破坏数据库三、故障的种类1、事务故障:某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了.(1)原因:输入数据有误、运算溢出、违反了某些完整性限制、某些应用程序出错、并行事务发生死锁。n 发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘。(2)恢复:n 事务撤消(UNDO):强行回滚(ROLLBACK)该事务,清除该事务对数据库的所有修改,使得这个事务象根本没有启动过一样。2、系统故障(软故障):造成系统停止运转的任何事件,使得系统要重新启动。n 整个系统的正常运行突然被破坏n 所有正在运行的事务都非正常终止n 内存中数据库缓冲区的信息全部丢失n 外部存储设备上的数据未受影响(1)原因:n 操作系统或DBMS代码错误、操作员操作失误、特定类型的硬件错误(如CPU故障)、突然停电(2)恢复n 清除尚未完成的事务对数据库的所有修改n 系统重新启动时,恢复程序要强行撤消(UNDO)所有未完成事务n 将缓冲区中已完成事务提交的结果写入数据库n 系统重新启动时,恢复程序需要重做(REDO)所有已提交的事务3、介质故障(硬故障)n 硬件故障使存储在外存中的数据部分丢失或全部丢失n 介质故障比前两类故障的可能性小得多,但破坏性大得多(1)原因:硬件故障、磁盘损坏、磁头碰撞、操作系统的某种潜在错误、瞬时强磁场干扰(2)恢复:装入数据库发生介质故障前某个时刻的数据副本,重做自此时开始的所有成功事务,将这些事务已提交的结果重新记入数据库4、计算机病毒恢复操作的基本原理:冗余n 利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据恢复的实现技术:复杂n 一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上四、恢复的实现技术1、建立冗余数据(1)数据转储(backup):指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。 静态转储与动态转储l 静态转储:在系统中无运行事务时进行转储;转储开始时数据库处于一致性状态;转储期间不允许对数据库的任何存取、修改活动。优点:实现简单缺点:降低了数据库的可用性;转储必须等用户事务结束;新的事务必须等转储结束。l 动态转储:转储操作与用户事务并发进行;转储期间允许对数据库进行存取或修改。优点:不用等待正在运行的用户事务结束,不会影响新事务的运行。缺点:不能保证副本中的数据正确有效利用动态转储得到的副本进行故障恢复:n 需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件。n 后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态。 海量转储与增量转储n 海量转储: 每次转储全部数据库。n 增量转储: 只转储上次转储后更新过的数据。n 海量转储与增量转储比较:从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便;但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。转储策略:n 应定期进行数据转储,制作后备副本。n 但转储又是十分耗费时间和资源的,不能频繁进行。n DBA应该根据数据库使用情况确定适当的转储周期和转储方法。 例:每天晚上进行动态增量转储;每周进行一次动态海量转储;每月进行一次静态海量转储。(2)登录日志文件(logging)日志文件(log)是用来记录事务对数据库的更新操作的文件。格式:以记录为单位、以数据块为单位内容:各个事务的开始标记(BEGIN TRANSACTION)、各个事务的结束标记(COMMIT或ROLLBACK)、各个事务的所有更新操作、与事务有关的内部更新操作、日志文件中的一个日志记录 (log record) 基于记录的日志文件,每条日志记录的内容:事务标识、操作类型(插入、删除或修改)、操作对象(记录ID、Block NO.)、更新前数据的旧值(对插入操作而言,此项为空值)、更新后数据的新值(对删除操作而言, 此项为空值)。 基于数据块的日志文件,每条日志记录的内容:事务标识(标明是那个事务)、操作对象(记录ID、Block NO.)、更新前数据所在的整个数据块的值(对插入操作而言,此项为空值)、更新后整个数据块的值(对删除操作而言, 此项为空值)。用途:进行事务故障恢复、系统故障恢复、协助后备副本进行介质故障恢复。 与静态转储后备副本配合进行介质故障恢复n 静态转储的数据已是一致性的数据n 如果静态转储完成后,仍能定期转储日志文件,则在出现介质故障重装数据副本后,可以利用这些日志文件副本对已完成的事务进行重做处理n 这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态 介质故障恢复:LOG FILE + 动态转储后备副本n 动态转储数据库:同时转储同一时点的日志文件n 后备副本与该日志文件结合起来才能将数据库恢复到一致性状态。n 利用这些日志文件副本进一步恢复事务,避免重新运行事务程序。n登记日志文件的原则n 登记的次序严格按并行事务执行的时间次序n 必须先写日志文件,后写数据库l 写日志文件操作:把表示这个修改的日志记录 写到日志文件l 写数据库操作:把对数据的修改写到数据库中n 为什么要先写日志文件l 写数据库和写日志文件是两个不同的操作l 在这两个操作之间可能发生故障l 如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了l 如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性2、利用这些冗余数据实施数据库恢复五、恢复策略一、事务故障的恢复1、事务故障:事务在运行至正常终止点前被中止2、恢复方法n 由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改n 事务故障的恢复由系统自动完成,不需要用户干预3、步骤 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”(Befor Image, BI)写入数据库。n 插入操作, “更新前的值”为空,则相当于做删除操作n 删除操作,“更新后的值”为空,则相当于做插入操作n 若是修改操作,则用BI 代替 AI(After Image) 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。二、系统故障的恢复1、系统故障造成数据库不一致状态的原因n 一些未完成事务对数据库的更新已写入数据库n 一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库2、恢复方法n Undo 故障发生时未完成的事务n Redo 已完成的事务3、系统故障的恢复由系统在重新启动时自动完成,不需要用户干预4、步骤: 正向扫描日志文件(即从头扫描日志文件)n Redo队列: 在故障发生前已经提交的事务T1, T3, T8.n Undo队列:故障发生时尚未完成的事务T2, T4, T5, T6, T7, T9 . 对Undo队列事务进行UNDO处理,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作T2,T4,T5, T6, T7, T9 对Redo队列事务进行REDO处理,正向扫描日志文件,对每个REDO事务重新,执行登记的操作T1,T3,T8.三、介质故障的恢复1、方法:重装数据库,使数据库恢复到一致性状态;重做已完成的事务2、步骤: 装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。n 对于静态转储的数据库副本,装入后数据库即处于一致性状态n 对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。 装入有关的日志文件副本,重做已完成的事务。n 首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。n 然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。3、需要DBA介入n DBA的工作:重装最近转储的数据库副本和有关的各日志文件副本;执行系统提供的恢复命令。n 具体的恢复操作仍由DBMS完成 六、具有检查点的恢复技术1、问题的提出:搜索整个日志将耗费大量的时间、REDO处理:重新执行,浪费了大量时间。解决方案:在日志文件中增加检查点记录(checkpoint);增加重新开始文件;恢复子系统在登录日志文件期间动态地维护日志。2、检查点技术检查点记录的内容n 建立检查点时刻所有正在执行的事务清单n 这些事务最近一个日志记录的地址重新开始文件的内容n 记录各个检查点记录在日志文件中的地址在检查点维护日志文件1. 将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上。2. 在日志文件中写入一个检查点记录。3. 将当前数据缓冲区的所有数据记录写入磁盘的数据库中。4. 把检查点记录在日志文件中的地址写入一个重新开始文件。建立检查点n 定期:按照预定的一个时间间隔n 不定期:按照某种规则,如日志文件已写满一半建立一个检查点3、利用检查点的恢复策略 当事务T在一个检查点之前提交,T对数据库所做的修改已写入数据库 在进行恢复处理时,没有必要对事务T执行REDO操作恢复步骤:1.从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录2.由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST 建立两个事务队列:UNDO-LIST和REDO-LIST 把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。3.从检查点开始正向扫描日志文件,直到日志文件结束 如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列 如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列4.对UNDO-LIST中的每个事务执行UNDO操作, 对REDO-LIST中的每个事务执行REDO操作七、数据库镜像 介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性 介质故障恢复比较费时 为预防介质故障,DBA必须周期性地转储数据库 提高数据库可用性的解决方案 数据库镜像(Mirror) 数据库镜像 DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上 DBMS自动保证镜像数据与主数据的一致性2、用途 出现介质故障时,DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。 没有出现故障时,可用于并发操作,一个用户对数据加排他锁修改数据,其他用户可以读镜像数据库上的数据。第十章 数据库完整性10.1 完整性约束条件一、数据库完整性是指数据库的正确性和相容性。如学号唯一,性别男女,年龄14-30,系别必须为学校开设。二、防范对象:不合语义的数据。(安全性:非法用户和非法操作)三、完整性约束条件:加在数据库之上的语义约束条件。四、完整性检查:DBMS中检查数据是否满足完整性条件的机制。五、作用对象:l 关系:若干元组间、关系集合上以及关系之间的联系约束l 元组:元组中各个字段间联系约束。l 列:列的类型、取值范围、精度、排序等约束条件。l 状态:静态和动态。综合为6种。1、静态列级:数据类型、长度等、数据格式YY.MM.DD、取值范围男女、空值、其他2、静态元组:发货量不超过订货量、教授工资不低于10

温馨提示

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

最新文档

评论

0/150

提交评论