教材:数据库系统概论(第五版)
出版社:高等教育出版社
定义:
定义:是长期储存 在计算机内、有组织 的、可共享 的大量数据的集合
基本特点:永久储存、有组织、可共享
定义:
主要功能:
定义:是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统
特点:
数据结构化:数据库主要特征之一,与文件系统的本质区别
数据共享性高、冗余度低且易拓展
数据独立性高:物理独立性和逻辑独立性
数据独立性是由DBMS提供的二级映像保证的
数据由DBMS统一管理和控制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riYvVBgp-1640256050972)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20211211091004850.png)]
定义:是对现实世界数据特征的抽象
数据模型是数据库的核心和基础
数据建模的三大要求:
能比较真实地模拟现实世界
容易为人所理解
便于在计算机上实现
实体(可以是具体的人事物,也可以是抽象的概念和联系)
属性(描述实体所具有的某一特征,如学生实体可以由学号等属性组成)
码(唯一标识实体的属性集)
实体型(比如学生)
实体集(同一类型实体的集合,比如全体学生)
联系(实体集之间的联系通常是指不同实体集之间的联系)
一对一(一个班级一个班长)、一对多(一个班级多位学生)、多对多(课程和学生之间的联系)
实体-联系方法(E-R方法/E-R模型)//第七章
在数据库的非关系模型中,基本层次联系是指两个记录以及它们之间的一对多(含一对一)的联系
关系模型是最重要的一种数据模型
关系的每一个分量必须是一个不可拆分的数据项:不允许表中有表
数据操控:查询、插入、更新和删除数据
关系模型中的数据操作都是集合操作,操作对象和操作结果都是关系
完整性约束条件:实体完整性、参照完整性和用户定义完整性
略.
数据库系统通常采用三级模式结构
数据库的二级映像功能
模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式是相对稳定的,实例是相对变动的
一个数据库只有一个模式
外模式(子模式/用户模式):用户能看到、使用的局部数据的逻辑结构和特征的描述,是DB用户的数据视图,是与某一应用有关的数据的逻辑表示
外模式是模式的子集
一个数据库可以有多个外模式
内模式(存储模式):是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
一个数据库只有一个内模式
模式:概念级抽象 外模式:视图级抽象 内模式:物理级抽象
当模式改变时,由数据库管理员对映像做相应改变,可使外模式保持不变,而应用程序是根据外模式编写的,从而应用模式不用更改,保证了数据和程序的逻辑独立性。
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变,从而应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
数据库系统由DB、DBMS、应用软件和DBA构成。
数据库管理员的工作职责:
关系数据库系统:是支持关系模型的数据库系统
关系模型:由关系数据结构、关系操作集合和关系完整性约束三部分组成
关系模型的基础:集合代数
关系模型的数据结构(单一):关系
给定一组域D1,D2,D3…Dn的笛卡尔积为D1×D2×D3…×Dn = {( d 1 , d 2 , … , d n )|di 属于Di }
元组
基数
一个域允许的不同取值个数称为这个域的基数
关系中的某一组属性集能*唯一的标识*一个元组,而它的子集不能
候选码可以有多个
若一个关系中有多个候选码,则选定其中一个作为主码(人为指定)
主码只有一个,唯一标识一个元组
组成候选码的属性
不包含在任何侯选码中的属性
是对关系的描述(有哪些属性,各个属性之间的依赖关系如何)
关系模式可以形式化地表示为:R(U,D,DOM,F)
R:关系名
U:组成该关系的属性名集合
D:U中属性所来自的域
DOM:属性向域的映象集合
F:属性间数据的依赖关系的集合
可以简记为R (U)或R ( A 1 , A 2 , … , A n ) R (A_1,A_2,…,A_n)R(A1,A2,…,A**n)
A 1 , A 2 , … , A n A_1,A_2,…,A_nA1,A2,…,A**n : 属性名
如:学生(学号,姓名,年龄,性别,系名,年级)
在一个给定的应用领域中,所有关系的集合构成一个关系数据库
关系数据库的型: 关系数据库模式,是对关系数据库的描述
关系数据库的值: 关系模式在某一时刻对应的关系的集合,通常称为关系数据库
查询
选择、投影、连接、除、并、交、差
数据更新
插入、删除、修改
集合操作方式:操作的对象和结果都是集合,也称为一次一集合的方式
实体完整性和参照完整性
是关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
用户定义的完整性
应用领域需要遵循的约束条件,体现了具体领域中的语义约束
若属性A是基本关系R的主属性,则属性A不能取空值 (主属性不能取空值)
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
学生(学号,姓名,性别,专业号,年龄,班长)
“班长”属性值(外码)可以取两类值:
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码。(F是R中一个或一组属性,但不是R的码,是S的主码,则F是R的外码)
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能
是一种抽象的查询语言,它用对关系的运算来表达查询
运算三大要素:
R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R∪S = { t|t∈R∨t ∈S }R∪S={t∣t∈R∨t∈S}
仍为n目关系,由属于R或属于S的元组组成
R − S = { t ∣ t ∈ R ∧ t ∉ S } R -S = { t|t∈R∧t∉S }R−S={t∣t∈R∧t∈/S}
仍为n目关系,由属于R而不属于S的所有元组组成
R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R∩S = { t|t∈R∧t∈S }R∩S={t∣t∈R∧t∈S}
仍为n目关系,由既属于R又属于S的元组组成
无条件的头尾连接
R×S :
元组的前n列是关系R的一个元组
元组的后m列是关系S的一个元组
设关系模式为R ( A 1 , A 2 , … , A n ) R(A_1,A_2,…,A_n)R(A1,A2,…,A**n)
它的一个关系设为R
t ∈ R t∈Rt∈R表示t是R的一个元组
t [ A i ] t[A_i]t[A**i]则表示元组t中相应于属性A i A_iA**i的一个分量
本质上是一次选择行的运算和一次选择列的运算
给定一个关系R ( X , Z ) R(X,Z)R(X,Z),X和Z为属性组
当t [ X ] = x t[X]=xt[X]=x时,x在R中的象集(Images Set)为:
Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x={t[Z]|t∈R,t[X]=x}Z**x={t[Z]∣t∈R,t[X]=x}
本质上是一次选择行的运算和一次选择列的运算
求x 1 x_1x1在表A中的象集
从行的角度进行的运算
在关系R中选择满足给定条件的诸元组
σ F ( R ) = { t ∣ t ∈ R ∧ F ( t ) = ′ 真 ′ } σ_{F®} = {t|t∈R∧F(t)= ‘真’}σ**F(R)={t∣t∈R∧F(t)=′真′}
F:选择条件,是一个逻辑表达式,取值为“真”或“假”
F = X 1 θ Y 1 F = X_1θY_1F=X1θ**Y1
θ表示比较运算符
例:查询信息系(IS系)全体学生
σ S d e p t = ‘ I S ( S t u d e n t ) ′ σ_{Sdept} = ‘IS’ _{(Student)}σSdep**t=‘I**S(Student)′
主要是从列的角度进行运算
从R中选择出若干属性列组成新的关系
投影不仅取消了原关系中的某些列,而且还会取消完全相同的行
π A ( R ) = { t [ A ] ∣ t ∈ R } π_{A®} = { t[A] | t∈R }π**A(R)={t[A]∣t∈R}
A:R中的属性列
例:查询学生的姓名和所在系
π S n a m e , S d e p t ( S t u d e n t ) π_{Sname,Sdept}(Student)πSnam**e,Sdept(Student)
从行的角度进行运算
同时从行和列角度进行运算
对于表A和表B,求A÷B
SQL:结构化查询语言,是关系数据库的标准语言
数据库(有的系统称为目录)→ 模式 → 表以及视图、索引等
这里的模式,不是关系模式,也不是三级模式结构中的模式,指的是数据库管理系统(软件)的一个层次,也是实际的一个用户数据库
CREATE SCHEMA AUTHORIZATION
1
定义数据库模式实际上定义了一个命名空间
DROP SCHEMA
1
删除模式的同时把该模式中所有的数据库对象全部删除
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ]
…
[,<表级完整性约束条件> ] );
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
1234567891011121314
PRIMARY KEY
UNIQUE
NOT NULL
FOREIGN KEY
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN <列名> <数据类型> ];
ALTER TABLE Student ADD S_entrance DATE;
123456
直接删除属性列:
例:ALTER TABLE Student Drop Scome;
建立索引的目的:加快查询速度
索引类型:
CREATE [UNIQUE] [CLUSTER] [NONCLUSTERED] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
12
SC表按学号升序和课程号降序建唯一索引
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
1
ALTER INDEX <旧索引名> RENAME TO <新索引名>
1
将SC表的SCno索引名改为SCSno
ALTER INDEX SCno RENAME TO SCSno;
1
DROP INDEX <索引名>;DROP INDEX <表名>.<索引名>12
删除Student表的Stusname索引
DROP INDEX Stusname;1
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息
关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] … FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句) [AS]<别名>[ WHERE <条件表达式> ][ GROUP BY <列名1> [ HAVING <条件表达式> ] ][ ORDER BY <列名2> [ ASC|DESC ] ];123456
查询仅涉及一个表
查询全部列:SELECT * FROM Student;
指定DISTINCT关键词,去掉表中重复的行(作用范围是所有目标列)
BETWEEN … AND …
NOT BETWEEN … AND …
IN
NOT IN
WHERE Sdept IN ('CS','MA’,'IS' );
[NOT] LIKE ‘<匹配串>’
IS NULL
IS NOT NULL
可以按一个或多个属性列排序
例:ORDER BY Grade DESC;
聚合函数就用来输入多个数据,输出一个数据的
WHERE子句中不能用聚集函数作为条件表达式。聚集函数只能用于SELECT子句和GROUP BY
中的HAVING子句
统计元组个数
COUNT(*)1
统计一列中值的个数
COUNT([DISTINCT|ALL] <列名>)1
计算一列值的总和(此列必须为数值型)
SUM([DISTINCT|ALL] <列名>) 1
计算一列值的平均值(此列必须为数值型)
AVG([DISTINCT|ALL] <列名>)1
求一列中的最大值和最小值
MAX([DISTINCT|ALL] <列名>)MIN([DISTINCT|ALL] <列名>)12
等值连接:连接运算符为=
查询每一门课的间接先修课(即先修课的先修课)
SELECT FIRST.Cno, SECOND.Cpno FROM Course FIRST, Course SECOND WHERE FIRST.Cpno = SECOND.Cno;123
查询每个学生的学号、姓名、选修的课程名及成绩
SELECT Student.Sno, Sname, Cname, Grade FROM Student, SC, Course/*多表连接*/ WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno;1234
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
种类:
子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表成为主查询的查询对象
INSERTINTO <表名> [(<属性列1>[,<属性列2 >…)]VALUES (<常量1> [,<常量2>]… );123
INTO子句
例子:将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERTINTO StudentVALUES ('201215128','陈冬','男', 18, 'IS');123
可以一次插入多个元组
UPDATE <表名>SET <列名>=<表达式>[,<列名>=<表达式>]…[WHERE <条件>];123
例子:将计算机系学生的年龄增加1岁。
UPDATE StudentSET Sage= Sage+1WHERE sdept='cs';123
DELETE FROM <表名> [WHERE <条件>];123
课本P119
空值与另一个值(包括空值)算术运算的结果为空值
空值与另一个值(包括空值)比较运算的结果为UNKNOWN
视图的特点
CREATE VIEW <视图名> [(<列名> [,<列名>]…)] AS <子查询> [WITH CHECK OPTION];123
组成视图的属性列名:全部省略或全部指定
由子查询中SELECT目标列中的诸字段组成
关系数据库管理系统执行CREATE
VIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句
若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,保留了主码
带虚拟列的视图
BY子句的查询来定义视图
ALTER VIEW 视图名 [( 列名[ ,...n ] )] AS查询语句 123
DROP VIEW <视图名>[CASCADE];1
略
数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
最外层安全保护措施
存取控制机制主要包括定义用户权限和合法权限检查两部分,两部分一起组成了数据库管理系统的存取控制子系统
用户权限是由数据库对象(哪个数据库)和操作类型(哪些操作)组成的。
定义存取权限称为授权
PUBLIC:全体用户
GRANT <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型> <对象名>]… TO <用户>[,<用户>]... [WITH GRANT OPTION];如果没有该语句则不能传播该权限1234
语义:将对指定操作对象的指定操作权限授予指定的用户
把查询Student表权限授给用户U1
GRANT SELECT ON TABLE Student TO U1;123
把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES ON TABLE Student,Course TO U2,U3;123
REVOKE <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型><对象名>]…FROM <用户>[,<用户>]...[CASCADE | RESTRICT];123
角色是权限的集合,可以为一组有相同权限的用户创建一个角色,简化授权过程。
实现强制存取控制时要首先实现自主存取控制。
数据的完整性是指数据的正确性和相容性
数据的正确性
是指数据是符合现实世界语义,反映了当前实际状况的
数据的相容性
是指数据库同一对象在不同关系表中的数据是符合逻辑的
CREATE TABLE中用PRIMARY KEY定义
单属性构成的码有两种说明方法
定义为列级约束条件
定义为表级约束条件
CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );1234567
对多个属性构成的码只有一种说明方法
入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。包括:
在CREATE TABLE中
CREATE TABLE时定义属性上的约束条件
在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制
SQL中,可以使用CREATE ASSERTION语句,通过声明性断言来指定更具一般性的约束。
触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程
本章把关系模式看作一个三元组:
通过属性间值的相等与否以及相互之间制约等体现出来的数据间相互联系
通常按照属性间的依赖情况来区分关系规范程度
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X → Y X→YX→Y,X称为这个函数依赖的决定属性集
X → Y,但Y ⊈ X则称X → Y是非平凡的函数依赖
X → Y,但Y ⊆ X 则称X → Y是平凡的函数依赖
对于任一关系模式,平凡函数依赖都是必然成立的
在R(U)中,如果X → Y ( Y ⊈ X ) , Y ↛ X , Y → Z , Z ⊈ Y, 则称Z对X传递函数依赖
注: 如果Y → X, 即X ← → Y,则Z直接依赖于X,而不是传递函数依赖
通常专指候选码
若关系模式R ∈ 1 N F R∈1NFR∈1N**F,并且每一个非主属性都完全函数依赖于任何一个候选码,则R ∈ 2 N F R∈2NFR∈2N**F
1 N F → 2 N F 1NF→2NF1N**F→2N**F:消除了非主属性对码的部分函数依赖
设关系模式R ∈ 1 N F,若X → Y 且 Y ⊈ X 时X必含有码,则R ∈ B C N F
(候选键存在多个属性时,多个主属性直接要消除传递依赖关系)
(不能存在决定因素没有包含码的情况)
若R是全码,则R∈BCNF范式
如果关系模式R ∈ B C N F R∈BCNFR∈BCN**F,必定有R ∈ 3 N F R∈3NFR∈3N**F
如果R ∈ 3 N F ,且R只有一个候选码,则R必属于BCNF
3 N F → B C N F:消除了主属性对码的部分和传递函数依赖
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z = U − X − Y Z=U-X-YZ=U−X−Y。关系模式R ( U ) R(U)R(U)中多值依赖X → → Y X→→YX→→Y成立,当且仅当对R ( U ) R(U)R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值与之对应,这组值仅仅决定于x值而与z值无关
X → → Y X→→YX→→Y:Y YY多值依赖于X XX
关系模式R ∈ 1 N F R∈1NFR∈1N**F,如果对于R的每个非平凡多值依赖X → → Y ( Y ⊈ X ) X→→Y(Y ⊈X)X→→Y(Y⊈X),X XX都含有码,则R ∈ 4 N F R∈4NFR∈4N**F
(一个表的主键只对应一个多值,要求把同一表内的多对多关系删除)
Armstrong公理系统是有效的、完备的
闭包就是由一个属性直接或间接推导出的所有属性的集合
已知关系模式R,其 中 U = { A , B , C , D , E } ; F = { A B → C , B → D , C → E , E C → B , A C → B } 。 求 ( A B ) F + 其中U={A, B, C, D, E};F={AB→C, B→D, C→E, EC→B, AC→B}。求(AB)F^+其中U={A,B,C,D,E};F={A**B→C,B→D,C→E,E**C→B,A**C→B}。求(A**B)F+
对于给定的关系模式R ( A 1 , A 2 , … , A n )和函数依赖集F
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖。
最高可达 BCNF范式
注意:最小依赖集并不是唯一的。
(1)逐一检查F中各函数依赖FDi:X→Y,若Y=A1 A2 …Ak, k > 2,则用 { X→Aj |j=1, 2,…, k} 来取代 X→Y。
(2)逐一检查F中各函数依赖FDi:X→A,令G=F-{X→A}, 若A∈XG +, 则从F中去掉此函数依赖。
(3)逐一取出F中各函数依赖FDi:X→A,设X=B1 B2 …Bm, 逐一考查Bi (i=1,2,…,m),
若A ∈(X-Bi )F + , 则以X-Bi 取代X。
分解具有无损连接性
分解要保持函数依赖
分解既要保持函数依赖,又要具有无损连接性
定义6.16 关系模式R的一个分解: ρ={ R1,R2,…,Rn }
U= ∪Ui ,且不存在 Ui ∈ Uj ,Fi 为 F在 Ui 上的投影
定义6.17 函数依赖集合{X→Y | X→Y ∈ F+ ∧ XY⊆Ui} 的 一个覆盖 Fi 叫作 F 在属性 Ui 上的投影
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据满足各种用户的应用需求,包括信息管理要求和数据操作要求。
三分技术,七分管理,十二分基础数据
需求分析
需求分析是整个设计过程的基础 - 概念结构设计
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型(E-R图)
逻辑结构设计
将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化
物理结构设计
为逻辑数据结构选取一个最适合应用环境的物理结构
数据库实施
根据逻辑设计和物理设计的结果构建数据库,编写与调试应用程序,组织数据入库并进行试运行
数据库运行和维护
经过试运行后即可投入正式运行,在运行过程中必须不断对其进行评估、调整与修改
调查了解用户需求以后, 还需要进一步分析和表达用户的需求。在众多分析方法中,结构化分析(Structured Analysis, SA)方法是一种简单实用的方法。SA方法从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统。
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计
为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待
自顶向下进行需求分析,自底向上地设计概念模型
合并。解决各部分E-R图之间的冲突,将分E-R图合并起来生成初步E-R图
修改和重构。消除不必要的冗余,设计基本E-R图
消除冗余主要采用分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。
但并不是所有的冗余数据与冗余联系都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价。
把基本E-R图转为逻辑结构
关系数据模型的优化通常以规范化理论为指导
确定数据依赖
对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
按照数据依赖的理论对关系模式进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式
按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解
对关系模式进行必要分解,提高数据操作效率和存储空间的利用率
常用分解方法:
水平分解
把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系
垂直分解
把关系模式R的属性分解为若干子集合,形成若干子关系模式
定义用户外模式时应该更注重考虑用户的习惯与方便。包括三个方面:
为逻辑模型选定最适合应用要求的物理模型的过程1
确定数据库的物理结构
在关系数据库中主要指存取方法和存储结构
对物理结构进行评价
评价的重点是时间和空间效率
常用存取方法
数据库各级模式的形成
另外:
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务具有4 个特性:原子性(Atomicity)、一致性(Consistency)、 隔离性(Isolation)和持续性(Durability). 这4个特性简称为ACID特性(ACID properties)。
保证事务ACID特性是事务管理的重要任务。事务ACID特性可能遭到破坏的因素有:
(1)多个事务并行运行时,不同事务的操作交叉执行;
(2)事务在运行过程中被强行停止。
建立冗余数据最常用的技术是数据转储和登记日志文件
P298
P299
基本封锁类型:排他锁(写锁)X和共享锁(读锁)S
多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略可串行化(serializable) 调度。
可串行性(serializability)是并发事务正确调度的准则。
冲突操作是指不同事务对同一个数据的读写操作和写写操作
冲突可串行化调度是可串行化调度的充分不必要条件
寻找等价串行调度的方法:因图中无回路,必有一入度为零的结点,将这些结点及其边从图中移去存放于 一个队列中,对所剩图作同样处理,不过,移去的结点要放在队列中已存结点的后面,如此继续下去,直 到所有结点移入队列中。按队中结点次序串行排列各 事务操作,即可得到一个等价的串行调度
封锁对象的大小称为封锁粒度