数据库系统教程(第3版):第7章 系统实现技术_3_第1页
数据库系统教程(第3版):第7章 系统实现技术_3_第2页
数据库系统教程(第3版):第7章 系统实现技术_3_第3页
数据库系统教程(第3版):第7章 系统实现技术_3_第4页
数据库系统教程(第3版):第7章 系统实现技术_3_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 系统实现技术 主要内容7.1 事务7.2 数据库的恢复7.3 数据库的并发控制7.4 数据库的完整性7.5 数据库的安全性7.6 小结7.1 事务7.1.1 事务的定义 7.1.2 事务的ACID性质 7.1.3 事务的状态变迁图7.1.1 事务的定义(1)定义7.1 事务(transaction)是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS必须保证事务能正确、完整地执行。在程序中,事务以BEGIN TRANSACTION语句开始,以COMMIT语句或ROLLBACK语句结束。 COMMIT语句表示事务执行成功地结束(提交),此时告诉系统,

2、数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付实施(写入磁盘)。 ROLLBACK语句表示事务执行不成功地结束(应该“回退”),此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的所有更新必须被撤消,数据库应恢复该事务到初始状态。7.1.1 事务的定义(2)例7.1 设银行数据库中有一转账事务T,从账号A转一笔款子($50)到账号B。相应的事务: T:read(A); A:=A50; write(A); read(B); B:=B + 50; write(B). 组织成如下事务:T:BEGIN RANSACTION; read(A); A:=A-50;writ

3、e(A);if(A0)ROLLBACK;else read(B); B:=B+50; write(B); COMMIT;7.1.1 事务的定义(3)对数据库的访问是建立在读和写两个操作的基础上的:read(X):把数据X,从磁盘的数据库中读到内存的缓冲区中。write(X):把数据X,从内存缓冲区中写回磁盘的数据库。在系统运行时,write操作未必导致数据立即写回磁盘,很可能先暂存在内存缓冲区中,稍后再写回磁盘。这件事情是DBMS实现时必须注意的问题。7.1.2 事务的ACID性质性质原子性(Atomicity):事务是一个不可分割的工作单元。 一致性(Consistency):即数据不会应事

4、务的执行而遭受破坏。 隔离性(Isolation):在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样。 持久性(Durability):一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。 SQL SERVER中的事务MS SQL Server 以三种事务模式运行:自动提交事务(默认模式)每条单独的语句都是一个事务。显式事务每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。SQL S

5、ERVER对事务的支持举例BEGIN TRANSACTIONUSE teachinsert S values (S0,shen,25,m)select * from SSAVE TRAN MYTRANdelete from S where s#=S0select * from SROLLBACK TRAN MYTRANselect * from SCOMMIT TRANSACTION7.2 数据库的恢复7.2.1 存储器结构 7.2.2 恢复的基本原则和实现方法7.2.3 故障类型和恢复方法7.2.4 检查点技术7.2.5 SQL对事务的支持数据库的可恢复性在DBS运行时,可能会出现各种故障,

6、在发生故障时,可能丢失数据库中的数据。定义7.2 系统能把数据库从被破坏、不正确的状态恢复到最近一个正确的状态,DBMS的这种能力称为数据库的可恢复性(Recovery)7.2.1 存储器结构(1)易失性存储器(volatile storage)内存、cache存储器 非易失性存储器(nonvolatile storage)磁盘和磁带 稳定存储器(stable storage)这是一个理论上的概念。存储在稳定存储器中的信息是决不会丢失的。 稳定存储器的实现数据备份 数据银行 7.2.2 恢复的基本原则和实现方法 基本原则 :“冗余”,即数据库重复存储具体实现方法 平时做好两件事:转储和建立日志

7、 周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。 建立日志数据库。记录事务的开始、结束及数据每一次插入、删除和修改前后的值,并写到“日志”库中。 一旦发生数据库故障,分两种情况进行处理 如果数据库已被破坏,则装入last数据库备份,再利用日志库将这两个数据库状态之间的所有更新重新做一遍。如果数据库未被破坏,但某些数据不可靠,则撤消所有不可靠的修改,把数据库恢复到正确的状态。 7.2.3 故障类型和恢复方法(1)1.事务故障可以预期的事务故障,如存款余额透支等非预期事务故障,如运算溢出、数据错误、死锁等2.系统故障:硬件故障、软件错误或掉电等重新启动时,具体处

8、理分两种情况考虑。对未完成事务作UNDO处理;对已提交事务但更新还留在缓冲区的事务进行REDO处理。7.2.3 故障类型和恢复方法(2)3介质故障在发生介质故障和遭受病毒破坏时,磁盘上的物理数据库遭到毁灭性破坏。此时恢复的过程如下:重装最近转储的后备副本到新的磁盘,使数据库恢复到转储时的一致状态。在日志中找出最近转储以后所有已提交的事务。对这些已提交的事务进行REDO处理,将数据库恢复到故障前某一时刻的一致状态。在实际中,系统故障通常称为软故障(Soft Crash),介质故障通常称为硬故障(Hard Crash)。7.4 数据库的完整性7.4 数据库的完整性7.4.1 完整性子系统和完整性规

9、则7.4.2 SQL中的完整性约束7.4.3 SQL3中的触发器7.4.1 完整性子系统定义7.12 数据库中完整性(Integrity)一词是指数据的正确性(Correctness)、有效性(Validity)和相容性(Consistency),防止错误的数据进入数据库。DBMS必须保证数据库中数据是正确的。检查数据库中数据是否满足规定的条件称为“完整性检查”。数据库中数据应该满足的条件称为“完整性约束条件”,有时也称为完整性规则。完整性子系统完整性子系统的主要功能 监督事务的执行,并测试是否违反完整性规则 若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、改正错误等方法来处理 S

10、QL中的完整性约束1-域约束和断言域约束 用“CREATE DOMAIN”语句定义新的域,并且还可出现CHECK子句 断言如果完整性约束牵涉面较广,与多个关系有关,或者与聚合操作有关,那么SQL2提供“断言”(Assertions)机制让用户书写完整性约束 CHECK ASSERTION CHECK() DROP ASSERTION 定义一个新的域COLOR,可用下列语句实现:CREATE DOMAIN COLOR CHAR(6) DEFAULT ?CONSTRAINT V_COLORS CHECK(VALUE IN (Red,Yellow,Blue,Green,?);每位教师开设的课程不能超

11、过10门。CREATE ASSERTION ASSE1 CHECK(10 = ALL(SELECT COUNT(C#)FROM C GROUP BY TNAME); SQL中的完整性约束2-基本标的约束候选键的定义UNIQUE(列名序列)或 PRIMARY KEY(列名序列)外键的定义FOREIGN KEY(列名序列)REFERENCES () ON DELETE ON UPDATE “检查约束”的定义CHECK(条件表达式) 关于外键约束完整性的补充删除参照表中元组时的考虑NO ACTIONCASCADE方式 RESTRICT方式 SET NULL方式 SET DEFAULT方式修改参照表中

12、主键值时的考虑、NO ACTIONCASCADE方式 RESTRICT方式 SET NULL方式 SET DEFAULT方式 关于数据库完整性的例子学生关系S(S#,SNAME,AGE,SEX,SDEPT)选课关系SC(S#,C#,GRADE)课程关系C(C#,CNAME,CDEPT,TNAME) 在教学数据库中,要求S中的元组满足条件:男生年龄在1535岁之间,女生年龄在1530岁之间 。对应的语句为:CHECK(AGE = 15 AND((SEX =男 AND AGE = 35) OR (SEX =女 AND AGE = 30)); CREATE TABLE SC(S# CHAR(4),C

13、# CHAR4),GRADE SMALLINT,PRIMARY KEY(SNO,NO),CHECK(S# IN(SELECT S# FROM S),CHECK(C# IN(SELECT C# FROM C) 在SC中插入一个元组,若C#值在C中不存在,则系统将拒绝这个插入操作。 在SC中插入一个元组,若S#值在S中不存在,则系统将拒绝这个插入操作。 在S中删除一个元组,这个操作将与关系SC中的检查子句无关。若此时SC中存在被删学生的选课元组时,SC将违反检查子句中条件。7.5 数据库的安全性7.5.1 安全性问题7.5.2 SQL中的安全性机制7.5.3 常用的安全性措施7.5.1 安全性问题

14、(1)定义7.14 DB的安全性(Security)是指保护DB,防止不合法的使用,以免数据的泄密、更改或破坏。安全性级别环境级:计算机系统的机房和设备应加以保护,防止有人进行物理破坏。职员级:工作人员应清正廉洁,正确授予用户访问数据库的权限。OS级:应防止未经授权的用户从OS处着手访问数据库。网络级:由于大多数DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性是很重要的。DBS级:DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确。(1)读权限:允许用户读数据,但不能改数据。 插入权限:允许用户插入新数据,但不能改数据。 修改权限:允许用户改数据,但不能删除数据。 删

15、除权限 权限访问数据的权限 索引(Index)权限:允许用户创建和删除索引。资源(Resourse)权限:允许用户创建新的关系。修改(Alteration)权限:允许用户在关系结构中加入或删除属性。撤消(Drop)权限:允许用户撤消关系。 DBAU1U2U3权限的授予和回收DBAU1U4U2U5U3权限转授图 一个用户拥有权限的充分必要条件是在权限图中从根结点到该用户结点存在一条路经 DBAU1U2U3DBAU1U2U3DBAU1U2U37.5.2 SQL中的安全性机制(1)1视图视图(View)是从一个或多个基本表导出的表。但视图仅是一个定义,视图本身没有数据,不占磁盘空间。视图一经定义就可

16、以和基本表一样被查询,也可以用来定义新的视图,但更新(插、删、改)操作将有一定限制。视图机制使系统具有三个优点:数据安全性、逻辑数据独立性和操作简便性。视图被用来对无权用户屏蔽数据。用户只能使用视图定义中的数据,而不能使用视图定义外的其他数据,从而保证了数据安全性。7.5.2 SQL中的安全性机制(2)DBMS的授权的授权子系统允许有特定存取权限的用户有选择地和动态地把这些权限授予其他用户。(1)用户权限:六类权限供用户选择使用:SELECT INSERT DELETEUPDATE REFERENCES USAGE(2)授权语句:GRANT ON TO WITH GRANT 2权限DBMS O

17、PTION(3)回收语句REVOKE ON FROMRESTRICT | CASCADE7.5.2 SQL中的安全性机制(3)GRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION GRANT INSERT(S#,C#)ON SC TO LOU WITH GRANT OPTION GRANT UPDATE(SCORE)ON SC TO WEN GRANT REFERENCES(C#)ON C TO BAO WITH GRANT OPTION GRANT USAGE ON DOMAIN AGE TO CHEN REVOKE SELECT,UPDATE

18、 ON S FROM WANG CASCADE REVOKE INSERT(S#,C#)ON SC FROM ZHANG RESTRICT REVOKE GRANT OPTION FOR REFERENCES(C#)ON C FROM BAO 7.5.2 SQL中的安全性机制(4)3.角色定义7.16 在SQL中,用户(User)是实际的人或是访问数据库的应用程序。而角色(Role)是一组具有相同权限的用户,实际上角色是属于目录一级的概念。有关用户与角色有以下几点内容: SQL标准并不包含CREATE USER和DROP USER语句。 用户和角色之间存在着多对多联系。 可以把使用权限用GRA

19、NT语句授予角色,再把角色授予用户。也可以用REVOKE语句把权限或角色收回。 角色之间可能存在一个角色链。即可以把一个角色授予另一角色,则后一个角色也就拥有了前一个角色的权限。7.5.2 SQL中的安全性机制(5)4审计定义7.17 用于安全性目的的数据库日志,称为审计追踪(Audit Trail)。审计追踪是一个对数据库作更改(插、删、修)的日志,还包括一些其他信息,如哪个用户执行了更新和什么时候执行的更新等。如果怀疑数据库被篡改了,那么就开始执行DBMS的审计软件。该软件将扫描审计追踪中某一时间段内的日志,以检查所有作用于数据库的存取动作和操作。当发现一个非法的或未授权的操作时,DBA就

20、可以确定执行这个操作的账号。当然也可以用触发器来建立审计追踪,但相比之下,用DBS的内置机制来建立审计追踪更为方便。7.5.3 常用的安全性措施(1)1. 强制存取控制每个数据对象赋予一定的密级,从高到低有: 绝密级、机密级、秘密级和公用级。每个用户也具有相应的级别,称为许可证级别(clearance level)。密级和许可证级别都是严格有序的,如:绝密 机密 秘密 公用。在系统运行时,采用如下两条简单规则: 用户i只能查看比它级别低或同级的数据; 用户i只能修改和它同级的数据。7.5.3 常用的安全性措施(2)2. 统计数据库的安全性例7.19 有一个用户LIU欲窃取ZHANG的工资数目。LIU可通过下面两步实现:(1)用SELECT命令查找LIU自己和其它n-1个人(譬如30岁的女职工)的工资总额 x;(2)用SELECT命令查找ZHANG和上述的n-1个人的工资总额 y。随后,

温馨提示

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

评论

0/150

提交评论