上海大学数据库2部分概念整理资料.docx
《上海大学数据库2部分概念整理资料.docx》由会员分享,可在线阅读,更多相关《上海大学数据库2部分概念整理资料.docx(13页珍藏版)》请在冰豆网上搜索。
上海大学数据库2部分概念整理资料
第八章数据库管理
一、本章重要概念
(1)事务的定义,COMMIT和ROLLBACK的语义,
事务是由若干数据库操作组成的一个逻辑工作单位,是一个不可分割的工作单位。
一个应用程序可以包括多个事务。
事务以BEGINTRANSACTION语句的成功执行开始,以COMMIT或ROLLBACK语句的成功执行结束。
COMMIT(提交)语句表示一事务的全部操作都已成功,它对DB的所有更新可真正写到DB中。
ROLLBACK(回退)语句表示事务没有成功地完成全部操作,系统将撤消该事务对DB已作的更新
事务的ACID性质
事务有四个重要性质:
原子性、一致性、隔离性和持久性。
通常称为“ACID性质”。
原子性(atomicity):
事务对数据库的更新要么全部起作用,要么完全不起作用。
DBMS的事务管理子系统
一致性(consistency):
事务将数据库从一个一致性状态转变为另一个一致性状态。
程序员(正确地编写事务)DBMS的完整性子系统
隔离性(isolation):
事务相互隔离,在多个事务并发执行时,任一事务的更新操作在该事务成功提交前对其他事务都是不可见的。
DBMS的并发控制子系统
持久性(durability):
事务一旦成功提交,其对数据库的更新就永久有效,不会因系统崩溃等而丢失。
DBMS的恢复管理子系统
事务的状态变迁图。
(2)存储器类型,稳定存储器的实现,数据传送过程。
(3)恢复的定义、
系统能把数据库从被破坏、不正确的状态、恢复到最近一个正确的状态,DBMS的这种能力称为数据库的可恢复性。
基本原则和实现方法,
恢复的基本策略:
冗余(数据重复存储)
实现方法:
备份定期对数据库复制或转储(静态转储和动态转储,海量转储和增量转储)。
日志执行事务时,记录其开始、结束和对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而引起的更新丢失问题。
S锁、PS协议、PSC协议,
PS:
任何要更新记录R的事务必须先执行“SFINDR”操作,
以获得对R的S锁.当事务获准对R的S锁后,若要更新记录R必须用
“UPDXR”操作,这个操作首先把S锁升级为X锁,若成功则更新记录,否则这个事务进入等待队列。
PSC:
PS协议加上S锁的解除操作应该合并到事务的结束
(COMMIT或ROLLBACK)操作中。
活锁、
出现某个事务永远处于等待状态得不到执行的现象。
避免活锁的一个简便方法是采用“先来先服务”排队的策略。
封锁子系统按请求在时间上的先后次序对事务排序,数据对象上原有的锁一释放,即执行队列中第一个事务的封锁请求。
饿死和死锁,
出现若干事务因循环等待而无法继续执行的现象。
并发调度,串行调度,并发调度的可串行化,两段封锁法,
事务的执行次序称为“调度”。
若多个事务依次执行,则称为事务的串行调度。
若设法(例如利用分时的方法)多个事务同时被处理(即交错执行),则称为事务的并发调度。
在应用环境中,事务的任一串行调度都是有效的(正确的),但是事务的并发调度不一定是正确的,有可能产生前面提到的不一致性问题。
可串行化概念
如果一个并发调度与某一串行调度具有相同的执行结果,那么称这个并发调度是“可串行化的调度”(即正确的并发调度),否则是不可串行化的调度。
两段封锁协议
事务在对数据对象存取之前必须先获得对此数据对象的封锁,事务在解除了一个锁之后不再获得任何锁。
SQL中事务的存取模式和隔离级别。
事务的存取模式
READONLY(只读型)
READWRITE(读写型)
事务的隔离级别
SERIALIZABLE(可串行化)
REPEATABLEREAD(可重复读)
READCOMMITED(读提交数据)
READUNCOMMITED(读未提交数据)
(5)完整性的定义,
是指数据的正确性、有效性和相容性。
完整性子系统的功能,
完整性子系统:
DBMS中执行完整性检查的子系统。
其功能:
①监督事务的执行,测试其是否违反完整性约束条件;
②若有违反,则按进行预定的处理。
完整性规则的组成。
每个规则包括三部分:
触发条件规定何时执行本规则进行检查;
约束条件又称谓词,定义应满足的条件;
否则子句规定不满足条件时该作的处理。
域完整性规则:
定义属性取值范围。
域联系的规则:
定义属性间的联系、影响和约束。
关系完整性规则:
定义更新操作对值的影响和限制。
SQL中的三大类完整性约束,
完整性约束分为三大类:
域约束
①用“CREATEDOMAIN”语句定义新的域,并可出现CHECK子句。
②非空值约束(NOTNULL)
③基于属性的检查子句(CHECK):
基本表约束
①主键约束
可用主键约束来描述实体完整性规则。
主键约束可用两种形式表示:
主键子句和主键短语。
主码可在定义关系的CREATETABLE语句中使用PRIMARYKEY关键字加以定义。
有两种定义主键的方法,一种是在属性后增加关键字,另一种是在属性表中加入额外的定义主键的子句:
PRIMARYKEY(主键属性名表)
使用关键字UNIQUE,说明该属性(或属性组)的值不能重复出现。
②外键约束
FOREIGNKEY(〈列名序列1〉).
REFERENCES<参照表>[(<列名序列2>)]
[ONDELETE<参照动作>]
[ONUPDATE<参照动作>]
参照动作可以有五种方式:
NOACTION(无影响)
CASCADE(级联方式)
RESTRICT(受限方式)
SETNULL(置空值)
SETDEFAULT(置缺省值)
③检查约束
对单个关系的元组值加以约束。
对表内元组说明约束时,在CREATETABLE语句中的属性表、主码、外部码的说明之后加上CHECK子句。
每当对元组进行插入或修改操作时,都要对CHECK子句的条件表达式求值,如果条件为假,违背了约束,系统将拒绝该插入或修改操作。
CHECK子句的一般格式为:
CHECK<条件>
断言
定义:
CREATEASSERTION断言名CHECK(条件)
撤消:
DROPASSERTION断言名
断言也可以在关系定义中用检查子句形式定义,但是检查子句不一定能保证完整性约束彻底实现,而断言能保证不出差错。
SQL3中的触发器技术。
触发器(Trigger)是一个能由系统自动执行对数据库修改的语句。
触发器有时也称为主动规则(ActiveRule)或事件—条件—动作规则(Event—Condition—ActionRule,ECA规则)。
(1)触发时间:
BEFORE、AFTER、INSTEADOF;
(2)触发事件:
有三类----UPDATE、DELETE、INSERT
(3)目标表名:
当目标表的数据被更新(插入、删除、修
改)时,将激活触发器。
(4)旧值和新值的别名表:
REFERENCES子句
触发器有两类:
元组级触发器和语句级触发器。
元组级触发器带“FOREACHROW”子句,
而语句级触发器没有;
元组级触发器对每一个修改的元组都要检查一次,
而语句级触发器对SQL语句的执行结果去检查。
语句级触发器,不能直接引用修改前后的元组,但可以引用修改前后的元组集。
旧的元组集由被删除的元组或被修改元组的旧值组成,而新的元组集由插入的元组或被修改元组的新值组成。
INSTEADOF表示:
在触发事件发生时,只要满足WHEN条件,就执行动作部分的操作,而触发事件的操作不再执行。
(6)安全性的定义、级别,
定义
是指保护DB,防止不合法的使用,以免数据的泄漏、非法更改和破坏。
安全性级别
设置安全措施所牵涉的层次。
分成环境级、职员级、OS级、网络级和DBS级等五个级别。
这里只讨论DBS级的安全性问题。
权限,
权限的授予、转授与回收
授权可根据需要把在某对象上的某些权限授予特定的用户。
转授若拥有转授权,则允许把已获得的权限再转授给其他用户。
回收也可以撤消已授给某用户的某些权限。
权限的种类:
读
插入
修改
删除
SQL中的安全性机制(视图、SQL用户权限及操作)
视图视图是虚表,视图机制使DBS具有三个优点:
数据安全性、逻辑独立性、用户操作简便性。
SQL中的用户权限及操作
六类权限:
SELECT,INSERT,DELETE,UPDATE,REFERENCES,USAGE。
授权(GRANT)语句:
将关系和视图操作权授予特定用户
回收(REVOKE)语句:
回收已授给某用户的权限。
第十章对象数据库系统
一、本章重要概念
(1)新一代DBS的两条途径:
ORDBS和OODBS。
ORDB中的SELECT语句(SQL3标准):
引入了路径表达式、嵌套与解除嵌套等概念。
在传统的关系数据模型基础上,提供元组、数组、集合一类丰富的数据类型以及处理新的数据类型操作的能力,并且有继承性和对象标识等面向对象特点。
OODB中的SELECT语句(ODMG标准OQL):
有了更多的扩充,并与宿主语言语句混合起来,可以表达更为复杂的查询操作。
(2)平面关系模型,嵌套关系模型,复合对象模型,
引用类型,对象联系图的成分及表示方法,
对象联系图
数据的泛化/细化,继承性。
数据的泛化/细化:
对概念之间联系进行抽象的一种方法。
“泛化”:
称较高层上抽象是较低层上抽象的“泛化”。
(在较低层上抽象表达与之联系的较高层上的抽象,)
“细化”:
称较低层上抽象是较高层上抽象的“细化”。
这种细化联系是一种“是”(isa)的联系。
子类具有继承性,继承超类的特征,而子类本身又有其它的特征。
泛化/细化联系用泛化边(双线箭头)表示,泛化边从子类指向超类。
(3)OO的数据类型系统:
基本类型,五种复合类型,引用类型。
一、基本数据类型:
整型、浮点型、字符型、字符串、布尔型和枚举型;
二、复合类型:
复合类型有下列五种:
1.结构(或行)类型:
不同类型元素的有序集合称为结构。
2.数组类型:
同类元素的有序集合,称为数组(array)。
3.包(多集)类型:
同类元素的无序集合并且允许有重复的元素。
4.集合类型:
相同类型元素的无序集合,并且所有的元素必须是不同的(set)。
5.列表类型:
类型相同并且允许有重复的元素的有序集合。
引用类型
数据类型的定义只能嵌套,
若要允许递归,就要前面提到的引用类型
(4)对象关系模型的定义,两个级别的继承性,引用类型的定义,ORDB的查询语言,路径表达式,嵌套与解除嵌套。