1. 绪论
1.数据库的4个基本概念
-
数据
:描述事物的符号记录-
数据的含义称为数据的语义,数据与含义是密不可分的。如86 与 成绩为86分
-
记录:(黎明,99岁,2002.10.11)即把数据组织在一起构成一个记录
-
-
数据库
:即存放数据的仓库,数据库是长期存储在计算机内即
永久存储
,
有组织的
,
可共享的
大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据
独立性
和
易扩展性
,并可为各种用户共享。 -
数据库管理系统
:位于用户与操作系统的之间的一层数据管理软件(计算机的基础软件)具有以下几个功能:-
数据的定义功能
:提供数据定义语言DDL。 -
数据组织,存储和管理
:确定以何种
文件结构
和
存取方式
在存储级上组织数据,基本目标提高存储空间的利用率和方便存储 -
数据的操纵功能
:提供DML语言,如查询,插入,删除,修改(操纵的是数据不是字段) -
数据库的事务管理和运行管理
:保证数据的安全性,完整性,多用户的对数据的并发使用及系统恢复 -
数据库的建立和维护功能
:初始数据的输入,转换,转储,性能监视,分析功能等 -
其他功能
:数据库管理系统与网络,文件系统等,异数据库之间
-
-
数据库系统
:是由数据库,数据库管理系统,应用程序和数据库管理员组成的存储,管理,处理和维护数据的系统。
2.数据库的产生与发展
分为以下三个阶段:
-
人工管理阶段
-
数据不保存
-
应用程序管理数据
-
数据不共享
-
数据不具有独立性
-
-
文件系统阶段
-
数据可以长期保存
-
由文件系统管理数据
-
数据共享性差,冗余度大
-
数据独立性差
-
-
数据库系统阶段
以上四点达到最优
3.数据库系统的特点
-
结构化的特点
-
数据库系统实现
整体
数据的结构化,是数据库的主要特征之一,也是文件系统与数据库系统的本质区别 -
所谓“整体”结构化是指数据库中的数据不再仅仅是针对某一个应用,而是面向整个组织或企业,不仅数据内部是结构化的,而且整体是结构化的,数据之间是具有联系的。
-
-
数据的共享性高,冗余度低易扩充
-
数据共享可以减少数据冗余,节约存储空间,避免数据之间的
不相容性
和
不一致性
(同一数据不同副本的值不同) -
数据面向整个系统,数据面向可被多个应用共享使用,而且容易增加新的应用,数据库
系统弹性大,易于扩充
。
-
-
数据独立性高
(由二级映像保证)-
物理独立性
是指用户的应用程序与数据库中的数据的物理存储地址是相互独立的。 -
逻辑独立性
是指用户的应用程序与数据库的逻辑结构是相互独立的。
-
-
数据由数据库管理系统统一管理和控制
-
数据的
安全性
保护:保护数据防止以不合法的使用造成的数据泄密和破坏 -
数据
完整性
的检查:数据的正确性、有效性、相容性。 -
并发控制
:对并发操作加以控制和协调 -
数据库的
恢复
:错误状态到正确状态
-
综上
,数据库是长期存储在计算机内,有组织大量,共享的数据集合。可以提供各种数据共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立,运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时并发控制,在发生故障时进行恢复。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。
4.数据模型
数据模型(对现实世界数据的抽象,是数据库系统的核心和基础)
-
概念模型
也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
-
逻辑结构
主要包括层次模型,网状模型,关系模型,面向对象数据模型和对象关系数据
模型、半结构化数据模型等;按
计算机系统
的观点对数据建模,主要用于
数据库管理系统
的实现。 -
物理模型
物理模型是对数据
最底层
的抽象,它描述数据在系统内部的表示方式和存
取方法,或在磁盘或磁带上的存储方式和存取方法,是面向
计算机系统的
。
概念模型
信息世界的基本概念
-
实体
客观存在并可相互区别的事物称为
实体
。如一个学生 -
属性
实体所具有的某一特性称为
属性
。如学生的姓名 -
码
唯一标识实体的属性集称为
码
。如 学号是学生实体的码 -
实体型
用实体名及其属性名集合来抽象和刻画同类实体,称为
实体型
。例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间) -
实体集
同一类型实体的集合称为
实体集
。如 全体学生 -
联系
实体之间的联系通常是指不同
实体集
之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。如 选课关系中,课程与学生具有多对多的联系。
概念模型的一种表示方法:实体-联系方法(E-R方法也称E-R模型)
数据模型的组成要素
数据模型
通常由
数据结构
、
数据操作
和
数据的完整性约束条件
三部分组成。
-
数据结构
数据结构描述数据库的
组成对象
以及
对象之间
的联系。数据结构描述的内容有两类:一类是与对象的
类型、内容、性质
有关的,如关系模型中的
域、属性、关系
等:一类是
与数据之间联系有关
的对象,如网状模型中的系型(set type).通常按照其数据结构的类型来命名数据模型。 -
数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括
操作及有关的操作规则。 -
数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。
关系模型
中必须满足
实体完整性
和
参照完整性
,及
用户定义的完整性
。
常用的数据模型
-
层次模型(hierarchical model)
-
网状模型(network model)
-
关系模型(relational model)
-
面向对象数据模型(object oriented data model)
-
对象关系数据模型(object relational data model)
-
半结构化数据模型(semistructure data model)
其中
层次模型
和
网状模型
统称为
格式化模型
。在
格式化模型
中数据结构的单位是
基本层次联系
。所谓
基本层次联系
是指两个记录以及它们之间的一对多(包括一对一)的联系。
层次模型
-
层次模型的数据结构
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
-
有且只有一个结点没有双亲结点,这个结点称为根结点。
-
根以外的其他结点有且只有一个双亲结点。
每个结点表示一个记录类型,
记录类型之间的联系
用结点之间的连线(有向边)表示,这种联系是父子之间的
一对多
的联系。这就使得层次数据库系统
只能处理一对多
的实体联系。
-
层次模型的数据操纵与完整性约束
层次模型的数据操纵主要有查询、插入、删除和更新。
进行插入操作时,如果没有相应的双亲结点值就不能插入它的子女结点值。
如新调入一名教员,但尚未分配到某个教研室,这时就不能将新教员插入到数据库中。
进行删除操作时,如果删除双亲结点值,则相应的子女结点值也将被同时删除。
若删除网络教研室,则该教研室所有教员的数据将全部丢失。
-
层次模型的优点
-
层次模型的数据结构比较简单清晰。
-
层次数据库的查询效率高。
-
层次数据模型提供了良好的完整性支持。
-
网状模型
网状数据模型的典型代表是
DBTG系统
,亦称
CODASYL系统
。
-
网状模型的数据结构
在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
-
允许一个以上的结点无双亲。
-
一个结点可以有多于一个的双亲。
层次模型中子女结点与双亲结点的联系是
唯一的
,而在网状模型中这种联系可以
不唯一
-
其中S-SC, C-SC都是
一对多
的关系
-
网状模型的数据操纵与完整性约束
-
支持记录码的概念,码即唯一标识记录的数据项的集合
-
保证一个联系中双亲记录和子女记录之间是一对多的联系。
-
可以支持双亲记录和子女记录之间的某些约束条件。
-
-
网状模型的优点
-
能够更为直接地描述现实世界,如一个结点可以有多个双亲,结点之间可以有多
种联系。 -
具有良好的性能,存取效率较高。
-
关系模型
- 关系模型的数据结构
-
关系:一个关系对应一张表
-
元组:表中的一行即为一个元组
-
属性:一列即为一个属性
-
码:也称为码键,唯一确定一个元组
-
域:域是一组具有相同数据类型的值的集合 如人的年龄在1–120之间
-
分量:元组中的一个属性值。
-
关系模式:对关系的描述,一般表示为关系名(属性1,属性2,,属性n) 如学生(学号,姓名,年龄,性别,系名,年级)
关系模型要求关系必须是
规范化
的,关系的每一个
分量
必须是一个不可分的数据项。
-
关系模型的数据操纵与完整性约束
关系模型的数据操纵主要包括查询、插入、删除和更新数据。这些操作必须满足关系
的完整性约束条件。关系的完整性约束条件包括三大类:
实体完整性
、
参照完整性
和
用户定义的完整性
。
操作对象
和
操作结果
都是
关系
。
5.数据库系统的结构
数据库系统模式的概念
-
数据模型中有“型”(type)和“值”(vaue)的概念,学生记录定义为(学号,姓名,性别,系别,年龄,籍贯)这样的记录型,而(201315130,李明,男,计算机系,19,江苏南京市)则是该记录型的一个记录值。
-
模式(schema)是数据库中全体数据的
逻辑结构
和
特征
的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例(instance)。同一个模式可以有
很多实例。 -
模式是相对稳定的,而实例是相对变动的
-
数据库管理系统在体系结构上通常都具有相同的特征,即采用
三级模式结构
(早期微机上的小型数据库系统除外)并提供
两级映像
功能。
数据库系统的三级模式结构
数据库系统的三级模式结构是指数据库系统是由
外模式
、
模式
和
内模式
三级构成
-
模式
模式也称逻辑模式,是数据库中全体数据的
逻辑结构
和
特征
的描述,是所有用户的公
共数据视图。 -
外模式
外模式也称子模式(subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
-
内模式
内模式也称存储模式(storage schema),一个数据库只有一个内模式。它是数据物理
结构和存储方式的描述,是数据在数据库内部的组织方式。
数据库的二级映像功能与数据独立性
-
外模式/模式映像
当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库
管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据
数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的
逻辑独立性
。 -
模式/内模式映像
-
当数据库的存储结构改变时(例如选用了另一种存储结构),由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的
物理独立性
。 -
数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
两层映像保证了数据库系统中的数据能够具有较高的
逻辑独立性
和
物理独立性
。 -
6.数据库的组成
-
硬件平台及数据库
-
软件
-
人员
-
数据管理员(DBA)
-
系统分析员和数据库设计人员
-
应用程序员
-
用户(偶然,简单,复杂用户)
-
2. 关系数据库
关系
-
域
域是一组具有相同数据类型的值的集合,如{0, 1}, {男,女}等。
-
笛卡尔积
给定一组域
D1
,
D
1
,
.
.
.
,
D
m
{D_1},{D_1},…,{D_m}
D
1
,
D
1
,
.
.
.
,
D
m
, 允许其中某些域是相同的,
D1
,
D
1
,
.
.
.
,
D
m
{D_1},{D_1},…,{D_m}
D
1
,
D
1
,
.
.
.
,
D
m
的笛卡尔积是:
D1
∗
D
2
∗
.
.
.
∗
D
n
=
{
(
d
1
,
d
2
,
.
.
.
,
d
n
)
∣
d
i
∈
D
i
,
i
=
1
,
2
,
.
.
,
n
}
{D_1}*{D_2}*…*{D_n}=\lbrace(d_1,d_2,…,d_n) |d_i\in{D_i},i=1,2,..,n\rbrace
D
1
∗
D
2
∗
.
.
.
∗
D
n
=
{
(
d
1
,
d
2
,
.
.
.
,
d
n
)
∣
d
i
∈
D
i
,
i
=
1
,
2
,
.
.
,
n
}
其中
(d
1
,
d
2
,
.
.
.
,
d
n
)
(d_1,d_2,…,d_n)
(
d
1
,
d
2
,
.
.
.
,
d
n
)
为一个
n
元组,简称
元组
。其中每一个
di
d_i
d
i
叫做一个
分量
。一个域允许的不同取值个数称为这个域的
基数
。 -
关系
D1
∗
D
2
∗
.
.
.
∗
D
n
{D_1}*{D_2}*…*{D_n}
D
1
∗
D
2
∗
.
.
.
∗
D
n
的子集叫做
D1
,
D
1
,
.
.
.
,
D
n
{D_1},{D_1},…,{D_n}
D
1
,
D
1
,
.
.
.
,
D
n
的关系,表示为
R(
D
1
,
D
2
,
.
.
.
,
D
n
)
{R(D_1, D_2, …,D_n)}
R
(
D
1
,
D
2
,
.
.
.
,
D
n
)
。R表示关系的名字,
n
是关系的
目或度
,n = 1时,单元关系;n = 2,二元关系。若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为
候选码
(candidate key).候选码的诸属性称为
主属性
(prime attribute)。不包含在任何候选码中的属性称为
非主
属性
(non-prime attribute)或
非码属性
(non-key attribute).关系模式的所有属性是这个关系模式的候选码,称为
全码
(al-key).关系可以有三种类型:
基本关系
(通常又称为基本表或基表)、
查询表
和
视图表
-
关系模式
关系的描述称为
关系模式
(relation schema)。它可以形式化地表示为
R(
U
,
C
,
D
O
M
,
F
)
R(U,C,DOM,F)
R
(
U
,
C
,
D
O
M
,
F
)
其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。关系是关系模式在某一时刻的状态或内容。
关系模式
是静态的、稳定的,而关系是动
态的、随时间不断变化的,因为
关系操作
在不断地更新着数据库中的数据。例如,学生关系模式在不同的学年,学生关系是不同的。在实际工作中,人们常常把关系模式和关系都笼统地称为关系,这不难从上下文中加以区别,希望读者注意。 -
关系数据库
关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据
库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
关系操作
-
基本的关系操作
查询操作又可以分为
选择
、
投影
、连接、除、
并
、
差
、交、
笛卡儿积
等(选择、投影、并、差、笛卡儿积是5种基本操作)关系操作的特点是
集合操作方式
,即操作的对象和结果都是
集合
。 -
关系数据语言的分类
早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系演算分为元组关系演算和域关系演算。
结构化查询语言SQL
-
查询
-
数据定义语言
-
数据操纵语言
-
数据控制语言
-
关系的完整性
关系模型中有三类完整性约束:
实体完整性
、
参照完整性
和
用户定义的完整性
。
-
实体完整性
实体完整性规则若属性(指一个或一组属性)A是基本关系R的主属性,
则A不能取空值(null value)。所谓空值就是“不知道”或“不存在”或“无意义”的值。 -
参照完整性
-
设F是基本关系R的一个或一组属性,但不是关系R的码,
Ks
K_s
K
s
是基本关系
S的
主码
。如果F与
Ks
K_s
K
s
,相对应,则称F是R的
外码
,并称基本关系R为
参
照关系
,基本关系S为
被参照关系
或
目标关系
。关系R和S不一定是不同的关系。 -
参照完整性规则若属性(或属性组)F是基本关系R的外码,它与基本关
系S的主码K,相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F
上的值必须:-
或者取空值(F的每个属性值均为空值)
-
或者等于S中某个元组的主码值。
-
当
外码
不是
主码
的时候可以取空值 -
-
用户定义的完整性
如 学号时主码,但可定义姓名不能为空。
3. 关系数据库标准语言(SQL)
SQL语句操作数据库。
4. 数据库安全性
数据库安全性概论
数据库的安全性
是指保护数据库以防止不合法使用所造的
数据泄露、更改或破坏
。
-
数据库的不安全因素
-
非授权用户对数据库的恶意存取和破坏
-
数据库中重要或敏感的数据被泄露
-
安全环境的脆弱性
-
-
安全简介
从4个方面来描述安全性级别划分的指标,即安全策略、责任、保证、文档。
C2级的数据库管理系统支持
自主存取控制
(Discretionary Access Control,DAC);B1级的数据库管理系统支持
强制存取控制
(Mandatory Access Control,MAC)。
数据库安全性控制
-
用户身份鉴别(每个用户标识由用户名和用户标识号(UID)两部分组成。UID在系统的整个生命周期内是唯一的)
-
静态口令鉴别 如QQ登录
-
动态口令鉴别 如steam令牌
-
生物特征鉴别 如指纹识别
-
智能卡鉴别 如身份证
-
-
存取控制
存取控制机制
主要包括
定义用户权限
和
合法权限检查
两部分。定义用户权限,将用户权限登记到数据字典中;合法权限检查,每当用户发出存取数据库的操作请求后,根据安全规则进行合法权限检查,是否执行此操作。
定义用户权限
和
合法权限检查
一起组成了数据库管理系统的
存取控制
子系统。-
自主存取控制
用户对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。
-
强制存取控制
每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。强制存取控制因此相对比较严格。
-
-
自主存取控制方法
用户权限是两个要素组成的:
数据库对象
和
操作类型
。定义存取权限为授权。在关系数据库系统中,存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据),还有数据库模式(包括数据库、基本表、视图和索引的创建等)
-
授权:授予与回收
-
GRANT
GRANT语句的一般格式为
GRANT<权限>[,<权限>]…
ON<对象类型><对象名>[,<对象类型><对象名>]
T0<用户>[<用户>]…
[WITH GRANT OPTION];例如
GRANT SELECT
ON TABLE SC
TO PUBLIC; -
revoke
REVOKE<权限>[<权限>]
ON<对象类型><对象名>[,<对象类型><对象名>]…
FROM<用户>[,<用户>[CASCADERESTRICT];例如
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4; -
创建数据库模式的权限
CREATE USER <username>[WITH][DBA|RESOURCE| CONNECT]
;
-
-
数据库角色
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
-
角色的创建
-
给角色授权
-
将一个角色授予其他的角色或用户
-
角色权限的回收
-
-
强制存取控制方法
所谓强制存取控制是指系统为保证更高程度的安全性,密级的次序是TS>=S>=C>=P.
规则如下:
-
仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。
-
仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。
强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
-
视图机制
审计
审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的系列事件,找出非法存取数据的人、时间和内容等。数据库安全审计系统提供了一种
事后检查
的安全机制。
数据加密
数据加密主要包括
存储加密
和
传输加密
。
其他安全性保护
-
推理控制:处理的是强制存取控制未解决的问题。
-
隐蔽信道:处理内容也是强制存取控制未解决的问题。
-
数据隐私:成为数据库应用中新的数据保护模式。
5. 数据库完整性
数据库的
完整性
是指数据的
正确性
和
相容性
。
实体完整性
primary key 定义主码
参照完整性
- foreign key 定义外码。
- 参照完整性检查和违约处理
- cascade 操作(级联)
用户定义的完整性
属性上的约束条件
-
不允许为空 not null
-
列值唯一 unique
-
check 短语指定列值应该满足的条件
元组上的约束条件
完整性约束命名子句
断言
-
创建断言 create assertion<断言名> <check 子句>
-
删除断言 drop assertion<断言名>
6. 关系数据理论
数据依赖
是一个关系内部属性与属性之间的一种约束关系,其中最重要的是
函数依赖
和
多值依赖(不设考)
。
-
函数依赖
属性间的这种依赖关系类似于数学中的函数
y=
f
(
x
)
y=f(x)
y
=
f
(
x
)
,自变量x确定之后,相应
的函数值y也就唯一地确定了。 -
关系模式设计不好有以下问题:
-
数据冗余
-
更新异常
-
插入异常
-
删除异常
-
规范化
-
函数依赖
-
码
-
范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。
一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式
的集合,这种过程就叫
规范化
(normalization)。
-
1NF :每一个分量必须是不可分的数据项
-
2NF
若R∈INF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF。(
解决非主属性对码部分函数依赖
)图中实线为完全函数依赖, 虚线为部分函数依赖。
一个关系模式不属于2NF, 有以下问题:
-
插入异常
如插入一个学生Sno=S7,Sdept=PHY,Sloc=BLD2,但该生还未选课,即这个学生无Cno,这样的元组就插不进S-L-C中
-
删除异常
假定某个学生只选一门课,如S4就选了一门课C3,现在C3这门课
他也不选了,那么C3这个数据项就要删除。而C3是主属性,删除了C3,整个元组就必须一起删除,使得S4的其他信息也被删除了,从而造成删除异常,即不应删除的信息也删除了。 -
修改复杂
-
-
3NF:
非主属性对码没有传递依赖或部分依赖
如A决定B, B决定C, 可得A决定C。应该将A-B, B-C, 分两张表存,符合第三范式。
-
BCNF:
任何属性对码没有传递依赖与部份依赖
-
多值依赖
-
4NF
7. 数据库设计
数据库设计
是数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库
逻辑模式
和
物理结构
,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
数据库设计的特点(了解)
-
数据库建设的基本规律
三分技术, 七分管理,十二分基础数据。
-
6个阶段
-
需求分析阶段
-
概念结构设计阶段
-
逻辑结构设计阶段
-
物理结构设计阶段
-
数据库实施阶段
-
数据库运行和维护阶段
-
-
需求分析
8. 数据库恢复技术
事务的基本概念
-
事务
所谓
事务
是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一
个不可分割的工作单位。 -
以 begin transaction 开始, 以 commit 或 rollback 结束,commit 表示提交, rollback 表示回滚。
-
事务的ACID特性
-
原子性(Atomicity)
事务是数据库的逻辑工作单位。
-
一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态
-
隔离性(Isolation)
一个事务的执行不能被其他事务干扰
-
持续性(Durability)
持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
-
故障的种类
-
事务内部的故障, 事务内部更多的故障是非预期的,是不能由应用程序处理的,如运算溢出。可以用
事务撤销
进行处理。 -
系统故障
系统故障是指造成系统停止运转的任何事件,使得系统要重新启动,
重做
已提交的事务。 -
介质故障
系统故障常称为软故障(soft crash),介质故障称为硬故障(hard crash)。
-
计算机病毒
总结各类故障对数据库的影响有两种可能性,一是
数据库本身被破坏
,二是数
据库没有被破坏,但
数据可能不正确
,这是由于事务的运行被非正常终止造成的。
恢复的原理是
冗余
。
恢复的实现技术
建立冗余数据最常用的技术是
数据转储
和
登记日志文件
。
-
数据转储
-
所谓
转储
即数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。这些备用的数据称为
后备副本
或后援副本。 -
静态转储
是在系统中无运行事务时进行的转储操作。 -
动态转储
是指转储期间允许对数据库进行存取或修改。 -
转储还可以分为
海量转储
和
增量转储
两种方式。 -
数据转储有两种方式,分别可以在两种状态下进行,因此数据转储方法可以分为4类:
动态海量转储
、
动态增量转储
、
静态海量转储
和
静态增量转储
-
-
-
登记日志文件
日志文件
是用来记录事务对数据库的更新操作的文件。日志文件要登记的内容:
-
各个事务的开始 begin transaction 标记。
-
各个事务的结束 commit 或 rollback 标记。
-
各个事物的所有更新操作。
-
-
保证数据
一致性
是对数据库的最基本的要求。
9. 并发控制
并发控制概述
事务
是并发控制的基本单位,为了保证事物的
隔离性
和
一致性
。
并发操作的带来的数据不一致性包括
丢失修改
,
不可重复读
和
读“脏”数据
并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰。
并发控制的主要技术有
封锁
(locking)、
时间戳
(timestamp)、
乐观控制法
(optimistic
scheduler)和
多版本并发控制
(multi-.version concurrency control,MVCC)等。
封锁
锁有两种类型:
排他锁
又称为
写锁
,
共享锁
又称为
读锁
。
封锁协议
-
一级封锁协议
一级封锁协议是指,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释
放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK) -
二级封锁协议
二级封锁协议是指,在一级封锁协议基础上增加事务T在读取数据R之前必须先对其
加S锁,读完后即可释放S锁。 -
三级封锁协议
三级封锁协议是指,在一级封锁协议的基础上增加事务T在读取数据R之前必须先对
其加S锁,直到事务结束才释放。
三级协议的主要区别在于
什么操作
需要申请封锁,以及何时
释放锁
(即持锁时间)。
活锁和死锁
-
活锁
T2有可能永远等待,这就是
活锁
的情形。避免活锁的简单方法为
先来先服务
。 -
死锁
-
T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
-
一类方法是采取一定措施来
预防死锁
的发生,另一类方法是允许发
生死锁,采用一定手段
定期诊断系统中有无死锁
,若有则解除之。 -
诊断死锁的方法与操作系统类似,一般使用
超时法
或
事务等待图法
。
-
数据库管理系统必须
提供并发控制机制
来协调并发用户的并发操作以保证并发事务的
隔离性
和
一致性
,保证数据库的
一致性
。