上海大学数据库2部分概念整理Word格式.docx
《上海大学数据库2部分概念整理Word格式.docx》由会员分享,可在线阅读,更多相关《上海大学数据库2部分概念整理Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
基本原则和实现方法,
恢复的基本策略:
冗余(数据重复存储)
实现方法:
备份定期对数据库复制或转储(静态转储和动态转储,海量转储和增量转储)。
日志执行事务时,记录其开始、结束和对DB的每次更新操作。
故障的类型,
事务故障
非预期事务故障:
运算错误、数据错误、死锁等,故障事务夭折
可预期事务故障:
在事务中可预期出错的地方所加的ROLLBACK语句
系统故障:
硬件、系统软件出错,停电等,事务执行被打断,内存中数据被破坏
介质故障:
磁头、磁盘控制器或磁盘损坏,盘上数据丢失,病毒破坏等,DB遭
破坏
检查点机制,
DBMS定时设置检查点,在检查点时刻才真正做到把对DB的修改写到磁盘,并在日志文件写入一条检查点记录。
根据日志文件建立重做队列和事务撤消队列。
对重做队列中的事务进行REDO处理,对撤消队列中的事务进行UNDO处理
REDO和UNDO操作,运行记录优先原则。
(4)并发操作带来的三个问题,丢失更新问题:
一事务所作的更新操作因另一事务的操作而丢失。
读“脏数据”问题:
又称为未提交依赖,指一事务取用了别的事务未提交随后又被撤消的数据。
不一致分析问题:
指事务从数据库中读取了处于不一致状态的数据,并因此进行了不一致的分析。
X锁、
排它型封锁(写锁,X封锁):
一个事务对数据对象加了X锁后,在它释放X锁之前不允许其他事务再对该数据对象加任何锁。
共享型锁(读锁,S封锁):
一个事务对数据对象加了S锁后,允许其他事务再对该数据对象加S锁,但在它释放S锁之前不允许其他事务加X锁。
PX协议、事务若要更新数据,则必须先提出对此数据对象的X封锁请求;
事务如果未获准X封锁,那么进入等待状态,直至获准在此数据对象上的X封锁,才能继续执行。
PX协议可以解决因多事务同时更新同一数据对象而引起的更新丢失问题。
任何事务T在更新记录R之前必须先执行“XFINDR”操
作,以获得对R的X锁,才能读或写记录R;
如果未获准X锁,那么这个事务进入等待状态。
一直到获准X锁,事务才能继续做下去。
(如果过早地解锁,有可能使其他事务读了未提交数据(且随后被回退),引起丢失其他事务的更新。
PXC协议,
是在“PX协议”上再加一规定:
解除X锁的操作合并到事务的结束(COMMIT或ROLLBACK)操作中。
PXC协议可以解决因事务ROLLBACK而引起的更新丢失问题。
时间
事务
数据库中A的價
事务T2
18
h
加锁=XFINDA
T1?
加锁
XFINDA(尖败)
*3
更新:
A-A-]
等待
写回A-17:
UPDA
17
COMMIT(包括解锁)
T1$解锁
*7
T2丫加锁
XFTNDA(重做)
q
A:
=A-2
tg
写回A-15:
Tj
15
COMMIT(包括解锁)
S锁、PS协议、PSC协议,
PS:
任何要更新记录R的事务必须先执行“SFINDR”操作,
以获得对R的S锁•当事务获准对R的S锁后,若要更新记录R必须用
“UPDXR”操作,这个操作首先把S锁升级为X锁,若成功则更新记录,否则这个事务进入等待队列。
PSC:
PS协议加上S锁的解除操作应该合并到事务的结束
(COMMIT或ROLLBACK)操作中。
事务T1
数据库中A、R的值
50.100
加饿SFINDA,B
ti:
Bins锁
求和:
A+B=15C
12:
?
酋加S锁
加锁:
SH1NDB
T4
写冋IJPDXB失败
u
等持
检索(验算)人±
£
0/-100
求和;
A+B=150
COMMl'
K包括解锁九B)
T1:
古解镇
<
10
丁2:
加X锁
写B重做
*11
50,200
解谟册
活锁、
出现某个事务永远处于等待状态得不到执行的现象。
避免活锁的一个简便方法是采用“先来先服务”排队的策略。
封锁子系统按请求在时间上的先后次序对事务排序,数据对象上原有的锁一释放,即执行队列中第一个事务的封锁请求。
饿死和死锁,
出现若干事务因循环等待而无法继续执行的现象。
并发调度,串行调度,并发调度的可串行化,两段封锁法,
事务的执行次序称为“调度”。
若多个事务依次执行,则称为事务的串行调度。
若设法(例如利用分时的方法)多个事务同时被处理(即交错执行),则称为事
务的并发调度。
在应用环境中,事务的任一串行调度都是有效的(正确的),但是事务的并发调
度不一定是正确的,有可能产生前面提到的不一致性问题。
可串行化概念
如果一个并发调度与某一串行调度具有相同的执行结果,那么称这个并发调度是
“可串行化的调度”(即正确的并发调度),否则是不可串行化的调度。
事务在解除了一个
两段封锁协议事务在对数据对象存取之前必须先获得对此数据对象的封锁,锁之后不再获得任何锁。
SQL中事务的存取模式和隔离级别。
事务的存取模式
READONLY(只读型)
READWRITE(读写型)事务的隔离级别
SERIALIZABLE(可串行化)REPEATABLEREAD(可重复读)READCOMMITED(读提交数据)READUNCOMMITED(读未提交数据)
(5)完整性的定义,是指数据的正确性、有效性和相容性。
完整性子系统的功能,
完整性子系统:
DBMS中执行完整性检查的子系统。
其功能:
1监督事务的执行,测试其是否违反完整性约束条件;
2若有违反,则按进行预定的处理。
完整性规则的组成。
每个规则包括三部分:
触发条件规定何时执行本规则进行检查;
约束条件又称谓词,定义应满足的条件;
否则子句规定不满足条件时该作的处理。
域完整性规则:
定义属性取值范围。
域联系的规则:
定义属性间的联系、影响和约束。
关系完整性规则:
定义更新操作对值的影响和限制。
SQL中的三大类完整性约束,完整性约束分为三大类:
域约束
1用“CREATEDOMAIN”语句定义新的域,并可出现CHECK子句。
2非空值约束(NOTNULL)
3基于属性的检查子句(CHECK):
基本表约束
1主键约束
可用主键约束来描述实体完整性规则。
主键约束可用两种形式表示:
主键子句和主键短语。
主码可在定义关系的CREATETABLE语句中使用PRIMARYKEY关键字加以定义。
有两种定义主键的方法,一种是在属性后增加关键字,另一种是在属性表中加入额外的定义主键的子句:
PRIMARYKEY(主键属性名表)
使用关键字UNIQUE,说明该属性(或属性组)的值不能重复出现。
2外键约束
FOREIGNKEY(〈列名序列1〉).
REFERENCES<
参照表>
[(<
列名序列2>
)]
[ONDELETE<
参照动作>
]
[ONUPDATE<
参照动作>
]参照动作可以有五种方式:
NOACTION(无影响)
CASCADE(级联方式)
RESTRICT(受限方式)
SETNULL(置空值)
SETDEFAULT(置缺省值)
3检查约束对单个关系的元组值加以约束。
对表内元组说明约束时,在CREATETABLE语句中的属性表、主码、外部码的说明之后加上CHECK子句。
每当对元组进行插入或修改操作时,都要对CHECK子句的条件表达式求值,如果条件为假,违背了约束,系统将拒绝该插入或修改操作。
CHECK子句的一般格式为:
CHECK<
条件>
断言
定义:
CREATEASSERTION断言名CHECK(条件)
撤消:
DROPASSERTION断言名
断言也可以在关系定义中用检查子句形式定义,但是检查子句不一定能保证完整性约束彻底实现,而断言能保证不出差错。
SQL3中的触发器技术。
触发器(Trigger)是一个能由系统自动执行对数据库修改的语句。
触发器有时也
称为主动规则(ActiveRule)或事件一条件一动作规则(Event—Condition—ActionRule,ECA规则)。
(1)触发时间:
BEFORE、AFTER、INSTEADOF;
(2)触发事件:
有三类UPDATE、DELETE、INSERT
(3)目标表名:
当目标表的数据被更新(插入、删除、修
改)时,将激活触发器。
⑷旧值和新值的别名表:
REFERENCES子句触发器有两类:
元组级触发器和语句级触发器。
元组级触发器带“FOREACHROW”子句,而语句级触发器没有;
元组级触发器对每一个修改的元组都要检查一次,而语句级触发器对SQL语句的执行结果去检查。
语句级触发器,不能直接引用修改前后的元组,但可以引用修改前后的元组集。
旧的元组集由被删除的元组或被修改元组的旧值组成,而新的元组集由插入的元组或被修改元组的新值组成。
INSTEADOF表示:
在触发事件发生时,只要满足WHEN条件,就执行动作部分的操作,而触发事件的操作不再执行。
(6)安全性的定义、级别,
定义
是指保护DB,防止不合法的使用,以免数据的泄漏、非法更改和破坏。
安全性级别
设置安全措施所牵涉的层次。
分成环境级、职员级、OS级、网络级和DBS级等
五个级别。
这里只讨论DBS