《New数据库保护及SQLServer的数据库保护技术.ppt》由会员分享,可在线阅读,更多相关《New数据库保护及SQLServer的数据库保护技术.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1/36第第第第8 8章章章章 数据库保护及数据库保护及数据库保护及数据库保护及SQL ServerSQL Server的数据库保护技术的数据库保护技术的数据库保护技术的数据库保护技术 2/36 DBMS必必须须提供提供统统一的数据保一的数据保护护功能,以保功能,以保护护数据数据库库中数据的安全可靠及正确有效。中数据的安全可靠及正确有效。主要包括主要包括数据的安全性;数据的安全性;数据的完整性;数据的完整性;并并发发控制;控制;数据库恢复。数据库恢复。3/368.1 8.1 数据库的安全性及数据库的安全性及数据库的安全性及数据库的安全性及SQL ServerSQL Server的安全管理的安全
2、管理的安全管理的安全管理 数据库的安全性是指保护数据库,以防止不合数据库的安全性是指保护数据库,以防止不合数据库的安全性是指保护数据库,以防止不合数据库的安全性是指保护数据库,以防止不合法的使用造成数据泄密、修改或破坏。法的使用造成数据泄密、修改或破坏。法的使用造成数据泄密、修改或破坏。法的使用造成数据泄密、修改或破坏。4/36DBMS用户OSDB用户标识和鉴别存取控制操作系统安全保护密码存储计算机系统的安全模型5/368.8.2.1 2.1 完整性约束条件及完整性控制完整性约束条件及完整性控制完整性约束条件及完整性控制完整性约束条件及完整性控制8.8.2 2 数据库完整性及数据库完整性及数据
3、库完整性及数据库完整性及SQL ServerSQL Server的完整性控制的完整性控制的完整性控制的完整性控制 数数据据完完整整性性约约束束可可以以分分为为:表表级级约约束束,若若干干元元组组间间、关关系系中中以以及及关关系系之之间间联联系系的的约约束束;元元组组级级约约束束,元元组组中中的的字字段段组组和和字字段段间间联联系系的的约约束束;属属性性级级约约束束,针针对对列列的的类类型型、取取值值范范围围、精精度度、排排序序等等而制定的约束条件。而制定的约束条件。6/361.1.静态级约束静态级约束1)对数据类型的约束。2)对数据格式的约束。3)对取值范围或取值集合的约束。4)对空值的约束。
4、5)其他约束。6)实体完整性约束。7)参照完整性约束。8)函数依赖约束。7/362.动态级约束动态级约束1)1)修改列定义时的约束。修改列定义时的约束。2)2)修改列值时的约束。修改列值时的约束。8/363.完整性控制机制的功能及执行约束完整性控制机制的功能及执行约束(1)(1)完整性控制机制应具有的功能完整性控制机制应具有的功能1)1)定义完整性功能,提供定义完整性约束条件的机制。定义完整性功能,提供定义完整性约束条件的机制。2)2)检检查查完完整整性性功功能能,检检查查用用户户发发出出的的操操作作请请求求,看看其其是是否否违背了完整性约束条件。违背了完整性约束条件。3)3)控控制制完完整整
5、性性功功能能,监监视视数数据据操操作作的的整整个个过过程程,如如果果发发现现有有违违背背了了完完整整性性约约束束条条件件的的情情况况,则则采采取取一一定定的的动动作作来来保保证证数据的完整性。数据的完整性。9/36(2)(2)立即执行约束和延迟执行约束立即执行约束和延迟执行约束 有有关关数数据据操操作作语语句句执执行行完完后后立立即即进进行行完完整整性性检检查查为为立立即即执执行行约约束束;在整个事务执行结束后再进行完整性检查为延迟执行约束。在整个事务执行结束后再进行完整性检查为延迟执行约束。10/365.实现参照完整性要考虑的几个问题实现参照完整性要考虑的几个问题(1)外码能够接受空值的问题
6、(2)在被参照关系中删除元组的问题(3)在参照关系中插入元组时的问题11/36(4)修改关系的主码问题修改关系的主码问题 a.不允许修改主码。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。b.允许修改主码。允许修改关系主码,但必须保证主码的惟一性和非空,否则拒绝修改。(5)修改表时被参照关系的问题。修改表时被参照关系的问题。a.级联修改。如果要修改被参照关系中的某个元组的主码值,则参照关系中相应的外码值也作相应的修改。b.拒绝修改。如果参照关系中,有外码值与被参照关系中要修改的主码值相同的元组,则拒绝修改。c.置空值修改。修改被参照关系的元组,并将参照关系中相应
7、元组的外码值置空值。12/368.2.2 SQL Server的数据库完整性及实现方法的数据库完整性及实现方法1.SQL Server的数据完整性的种类的数据完整性的种类(1)域完整性域完整性 域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。(2)实体完整性实体完整性 实体完整性为表级完整性,它要求表中所有的元组都应该有一个惟一的标识符,这个标识符就是平常所说的主码。(3)参照完整性参照完整性 参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。如果在被参照表中某一元组被外码参照,那么这一行既不能被删除,也不能更改其主码。13/362
8、.SQL Server数据完整性的两种方式数据完整性的两种方式(1)声明数据完整性声明数据完整性 声明数据完整性通过在对象定义中定义、系统本身自动强制来实现。声明数据完整性包括各种约束、缺省和规则。(2)过程数据完整性过程数据完整性 过程数据完整性通过使用脚本语言(主语言或Transact-SQL)定义,系统在执行这些语言时强制完整性实现。14/363.SQL Server实现数据完整性的具体方法实现数据完整性的具体方法(1)SQL Server约束的类型约束的类型15/36(2)数据完整性约束的实现数据完整性约束的实现1.域完整性的实现1)创建默认CREATE DEFAULT CREATE
9、DEFAULT nl_default AS 182)绑定 SP_BINDEFAULT nl_default,学生表.年龄3)解除绑定 SP_UNBINDEFAULT 学生表.年龄 4)删除默认 DROP DEFAULT nl_defaulta.通过建立默认实现完整性16/361)创建规则CREATE RULECREATE RULE xb_rule AS xb=男 OR xb=女2)绑定规则SP_BINDRULE xb_rule,学生表.性别3)解除绑定SP_UNBINDRULE 学生表.性别4)删除默认DROP RULE xb_ruleb.通过建立规则实现完整性17/362.实体完整性的实现C
10、REATE TABLE 学生信息(学号 char(9),姓名 char(10)not null,CONSTRAINT st_index PRIMARY KEY(学号)18/363.参照完整性的实现CREATE TABLE 成绩表(学号 char(9),课程号 char(4),成绩 tinyintPRIMARY KEY(学号,课程号)FOREIGN KEY(学号)REFERENCES 学生表(学号),FOREIGN KEY(课程号)REFERENCES 课程表(课程号)19/36 8.8.3 3 数据库的并发控制及数据库的并发控制及数据库的并发控制及数据库的并发控制及SQL ServerSQL
11、Server的并发控制机制的并发控制机制的并发控制机制的并发控制机制 事事务务是是多多用用户户系系统统的的一一个个数数据据操操作作基基本本单单元元。允允许许多多个个事事务务并并行地执行行地执行,对并发执行的事务的控制也就称为并发控制。对并发执行的事务的控制也就称为并发控制。1.事务的概念事务的概念 所所谓谓事事务务是是用用户户定定义义的的一一个个数数据据库库操操作作序序列列,这这些些操操作作要要么么全全做要么全不做,是一个不可分割的工作单位。做要么全不做,是一个不可分割的工作单位。在在SQL语言中,定义事务的语句有三条:语言中,定义事务的语句有三条:BEGIN TRANSACTION;COMM
12、IT;ROLLBACK;20/36并发操作带来的数据不一致性n丢失修改(lost update)n不可重复读(non-repeatable read)n读“脏”数据(dirty read)2.事务并发操作可能产生的数据不一致问题事务并发操作可能产生的数据不一致问题21/361.丢失修改丢失修改是指事务1与事务2从数据库中读入同一数据并修改事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。调图22/362.不可重复读不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。调图23/363.读“脏”数据事务1修改某一数据,并将其写回磁盘事务2读取同一数据后
13、事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。调图24/368.8.3.2 3.2 封锁及封锁协议封锁及封锁协议封锁及封锁协议封锁及封锁协议封锁机制是并发控制的重要手段。封锁机制是并发控制的重要手段。封锁具有封锁具有3个环节:个环节:第一:申请加锁第一:申请加锁 第二:获得锁第二:获得锁 第三:释放锁第三:释放锁25/361.锁的类型锁的类型(1)排它锁(排它锁(Exclusive Locks,简称简称X锁)锁)排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他
14、任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。(2)共享锁(共享锁(Share Locks,简称简称S锁)锁)共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务只能再对A加S锁,不能加X锁,直到事务T释放A上的S锁为止。26/361.活锁和死锁活锁和死锁(1)活锁活锁 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。解决活锁的方法是采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。(2)死锁死锁 多事务交错等待的僵持局面称为死锁。解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定
15、手段定期诊断系统中有无死锁,若有则解除之。8.8.3.3 3.3 封锁出现的问题及解决方法封锁出现的问题及解决方法封锁出现的问题及解决方法封锁出现的问题及解决方法27/36预防死锁通常有两种方法:预防死锁通常有两种方法:1)一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。28/361.事务内部的故障2.系统故障3.介质故障4.计算机病毒5.用户操作错误 8.4 数据库恢复技术与数据库恢复技术与SQL Server的数据恢复机制的数据恢复机制 8.4.1 故障的种类故障的种类 29/
16、361.数据转储数据转储(1)静态转储和动态转储1)静态转储:进行的转储操作的过程中,系统不运行其他事务,专门进行数据转储工作。2)动态转储:在转储期间,允许其他事务对数据库进行存取或修改操作。也就是说,转储和用户事务并发执行。(2)海量转储和增量转储1)海量转储:指每次转储全部数据库。2)增量转储:指每次只转储上一次更新过的数据。8.4.2 数据恢复的实现技术数据恢复的实现技术30/361.SQL Server的备份形式和操作方式的备份形式和操作方式(1)三种备份形式1)完全备份:完全备份即海量备份,数据库全复制到备份文件中。2)事务日志备份:事务日志备份将备份发生在数据库上的事务。3)增量
17、备份:备份最近一次完全备份以后数据库发生变化的数据。(2)数据库进行备份和恢复操作的方式1)静态的备份和恢复方式。该方式在进行数据备份或恢复操作时,SQL服务器不接受任何应用程序的访问请求,只执行备份或恢复操作。2)动态的备份和恢复方式。该方式在进行数据备份或恢复操作时,SQL服务器同时接受应用程序的访问请求。8.43 SQL Server 的数据备份和恢复机制的数据备份和恢复机制31/362.SQL Server的数据备份或恢复策略的数据备份或恢复策略(1)使用完全备份的策略:将最近一次的备份恢复。(2)在完全备份基础上使用事务日志备份的策略。备份步骤是:1)定期进行完全备份,例如一天一次或
18、两天一次。2)更频繁地进行事务日志备份,如一小时一次或两小时一次等。数据库恢复步骤是:1)用最近一次完全备份恢复数据库。2)用最近一次完全备份之后创建的所有事务日志备份,按顺序恢复完全备份之后发生在数据库上的所有操作。32/36(3)同时使用三种备份的策略:同时使用三种备份的策略:在同时使用数据库完全备份和事务日志备份的基础上,再以增量备份作为补充。数据备份操作顺序:1)定期执行完全备份,例如一天一次或两天一次等。2)进行增量备份,如四小时一次或六小时一次等。3)进行事务日志备份,如一小时一次或两小时一次等。恢复数据库顺序:1)用最近一次的完全备份恢复数据库。2)用最近一次的增量备份恢复数据库
19、。3)用在最近一次的完全备份之后创建的所有事务日志备份,按顺序恢复最近一次完全备份之后发生在数据库上的所有操作。33/36要求掌握的作业要求掌握的作业P286 1、5、7、10、11、12、31-38、41、43、44、47、4834/36T1的修改被T2覆盖了!读A=16AA-3写回A=13 读A=16 AA-1 写回A=15事务 T2事务 T1数据不一致实例:飞机订票系统数据不一致实例:飞机订票系统返回丢失修改35/36T1前后读到不一致的数据读B=100 BB*2写回B=200 读A=50 读B=100 求和=150 读A=50 读B=200 和=250(验算错误)事务 T2事务 T1数据不一致实例:飞机订票系统数据不一致实例:飞机订票系统返回不可重复读36/36T2读到错误的数据读C=200 (错误的C值已经读出)读C=100 CC*2 写回C ROLLBACK C=100事务 T2事务 T1数据不一致实例:飞机订票系统数据不一致实例:飞机订票系统返回读“脏”数据