数据库保护机制.ppt

上传人:牧羊曲112 文档编号:5270350 上传时间:2023-06-21 格式:PPT 页数:86 大小:509.50KB
返回 下载 相关 举报
数据库保护机制.ppt_第1页
第1页 / 共86页
数据库保护机制.ppt_第2页
第2页 / 共86页
数据库保护机制.ppt_第3页
第3页 / 共86页
数据库保护机制.ppt_第4页
第4页 / 共86页
数据库保护机制.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《数据库保护机制.ppt》由会员分享,可在线阅读,更多相关《数据库保护机制.ppt(86页珍藏版)》请在三一办公上搜索。

1、,数据库原理与应用,讲 授:陈秀琼 电 话:8602686,第一章数据库系统概述,第二章 关系数据库,第三章数据库标准语言,第四章使用ADO访问数据库,第五章T-SQL编程,第六章数据库设计,目 录,第七章规范化理论,第八章数据库保护机制,第九章数据库技术新进展,第8章数据库保护机制,数据库中存放着大量的有价值的信息,因此采用怎样行之有效的措施保护数据库是非常重要的。比如,保护数据库数据的正确性、有效性,保护数据库安全性,保护数据库既使是出现各种故障,也能对其进行有效地恢复等。,第8章数据库保护机制,8.1 完整性控制8.2 安全性控制8.3 并发控制8.4 数据库备份与恢复,主要内容,8.1

2、 数据库的完整性,数据库的完整性指数据的正确性和有效性。数据库的完整性是为了防止数据库中存在不符合实际语义的数据,防止错误信息的输入和输出。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库完整性是非常重要的。,8.1.1 完整性规则,完整性规则是指附加在数据库数据上的语义约束条件。DBMS的完整性控制机制应具有三个方面的功能:1.完整性定义功能。提供定义完整性规则的机制;如:性别IN 男,女2.完整性检查功能。检查用户发出的操作请求是否违背了完整性约束条件;3.如果发现用户操作违背了完整性规则,触发的过程(如撤销用户操作)。,8.1.1 完整性规则,完整性规则作用的对

3、象可以是关系、元组和列。因此完整性规则可分为:1.列上的约束:列的类型、取值范围、精度、排序等约束。2.元组的约束:元组中各个字段间的联系的约束。3.关系的约束:若干元组之间、关系集合上以及关系之间的联系的约束。,8.1.1 完整性规则,完整性约束又可分为:静态约束、动态约束。1.静态约束:是指数据库在每一确切状态时,数据对象所满足的约束条件,它反映数据库状态合理性的约束。这是最重要的一类约束。2.动态约束:是指数据库从一种状态转变到另一状态时,新、旧值之间所满足的约束条件,它是反映数据库状态变迁的约束。,8.1.1 完整性规则,上述两种分类结合起来,形成了6种完整性约束。静态列级约束静态元组

4、约束静态关系约束动态列级约束动态元组约束动态关系约束,8.1.2 SQL Server的完整性,本节介绍SQL Server的完整性控制策略。SQL Server数据完整性有四种类型:实体完整性、域完整性、参照完整性、用户定义完整性,8.1.2 SQL Seerver的完整性,1.实体完整性构成主键的主属性不能取空值。体现为:UNIQUE唯一性约束(不允许为null)PRIMARY KEY 约束(不允许为null)例:CREATE TABLE 选课(学号CHAR(8)NOT NULL,,PRIMARY KEY(学号,课号),),8.1.2 SQL Server的完整性,2.域完整性属性列(字段

5、)满足的约束条件。体现为:(1)数据类型的约束:包括数据的类型、长度、单位、精度等。(2)数据格式的约束例:规定学号的前两位表示入学年份,中间两位表示系的编号,后四位为班级号和序号,xxxxxxxx。出生日期:YY-MM-DD,8.1.2 SQL Server的完整性,(3)取值范围或取值集合的约束.例如:规定成绩的取值范围为0100域级check子句(4)对空值的约束:有的列允许取空值,有的列不允许取空值。(5)设置默认值default约束。,例8.1 建立关系模式teacher(tno,tname,sex,age,sfID,join_date),要求主键为工号tno,不能为空且必须是数字字

6、符;姓名非空;年龄必须介于18-65之间;身份证号,必须唯一;性别只能是男或女;进入单位日期默认状态取系统时间。,CREATE TABLE teacher(Tno VARCHAR(6)NOT NULL CHECK(isnumeric(tno)=1),Tname VARCHAR(10)NOT NULL,Sfid CHAR(18)UNIQUE,Sex CHAR(2)CHECK(sex IN(男,女),Age INT CHECK(age BETWEEN 18 AND 65),Join_date DATETIME DEFAULT GETDATE(),PRIMARY KEY(tno),8.1.2 SQL

7、 Server的完整性,3.参照完整性两个表之间满足的引用关系的约束。即:外键表中外键的取值参照主键表中主键的值。体现为:CREATE TABLE 选课(.,FOREIGN KEY(学号)REFERENCES 学生(学号)ON UPDATE CASCADE|NO ACTIONON DELETE CASCADE|NO ACTION,)默认受限删除或更新,但可设置为CASCADE|NO ACTION(将参照表中所有外键值与基本表中主键值相对应的元组一同删除/对参照表没有任何影响),8.1.2 SQL Server的完整性,4.用户定义完整性用户定义完整性是针对应用业务需要而定义的完整性约束条件。体

8、现为:1.表定义语句中的CHECK子句2.触发器3.规则(下节介绍),8.1.3 使用规则和触发器实现完整性,一般不是很复杂的完整性约束都是在create table语句中定义。复杂的完整性实现要用触发器和规则。1.使用规则实现完整性 规则是独立于表的单独定义、存储的数据库对象。,创建规则 CREATE RULE 规则名AS 约束表达式规则中可以是能用于WHERE子句中的任何表达式。如:Birthday=1980-01-01 ANDBirthday=GETDATE()grade IN(a,A,B,b,C,c,D,d)code LIKE a-z%0-9,8.1.3 使用规则和触发器实现完整性,例

9、8.2 创建sno_rule规则,使得学号首字母为S、后接5位数字字符。CREATE RULE sno_rule ASsno LIKE S0-90-90-90-90-9,8.1.3 使用规则和触发器实现完整性,规则的绑定创建好规则后,规则只是存储在数据库中的对象并没有发生作用,只有将规则绑定到相应表的属性列,才能实现完整性约束。用存储过程sp_bindrule绑定规则。语法格式:sp_bindrule 规则名,对象名例8.3 将规则sno_rule绑定到学生表的学号属性列上。sp_bindrule sno_rule,student.sno,8.1.3 使用规则和触发器实现完整性,规则的松绑规则

10、绑定后,可以解除,即松绑。用存储过程sp_unbindrule为规则松绑。语法格式:sp_unbindrule 对象名例8.4 解除规则sno_rule在学生表的学号属性列上的绑定。sp_unbindrule student.sno,8.1.3 使用规则和触发器实现完整性,删除规则DROP RULE 规则名1,规则2,注意:在删除规则前,必须先将其从约束对象上解除。,8.1.3 使用规则和触发器实现完整性,前面介绍的一些约束机制,属于被动的约束机制。在检查出对数据库的操作违反约束后,只能做些比较简单的动作,比如拒绝操作。如果需要处理复杂的完整性限制,且希望在某个操作后,系统能自动根据条件转去执

11、行各种操作,那么可以用触发器机制来实现。第5章已经介绍过触发器建立和使用。这里我们就举一个复杂点的例子。,8.1.3 使用规则和触发器实现完整性,例8.5 在“选课”表上建立触发器,实现教务规定的每门课程的选修人数必须在180人以内的约束。CREATE TRIGGER SC_count ON 选课FOR INSERT ASDECLARE cno CHAR(6)SELECT cno=inserted.课号FROM insertedIF 180(SELECT COUNT(*)FROM 选课WHERE 课号=cno),8.1.3 使用规则和触发器实现完整性,BEGIN PRINT 对不起,该课已经选

12、满!ROLLBACK ENDELSE BEGIN PRINT 祝贺你,选课成功!COMMITEND,8.1.3 使用规则和触发器实现完整性,8.2 安全性控制,数据库安全性的定义数据库安全性是指保护数据库以防止不合法的使用造成的数据泄露、更改或破坏。数据库系统的安全性依赖于其所在的计算机和网络环境的安全性。见下图。,SQL Server2000的安全机制,数据库对象,浏览器,B/S模式下的安全体系,SQL Server2000的安全机制,硬件环境的安全性操作系统的安全性SQL Server的安全性数据库的安全性数据库对象的安全性,各用户在各级安全机制中操作windows SQL Server服

13、务器 jxgl 数据库student表 zs zs public角色修改字段 wang fj(zhang 保管员角色 增删改、liu)fj/liu,(sno,sname),(sysadmin角色),一、SQL Server2000服务器安全性,SQL Server2000使用以下两种方法来识别用户:Windows用户、SQL Server2000用户在安装SQL Server2000可选择的模式:Windows验证模式:登陆SQL Server2000时,只进行Windows用户验证;混合模式:登陆SQL Server2000时既可以使用Windows验证也可以使用SQL Server2000

14、验证。使用企业管理器修改验证模式:选中要管理的服务器右击“属性”“安全性”,确定。重新启动SQL Server2000。,一、SQL Server2000服务器安全管理,(一)管理Windows用户展开要管理的服务器展开“安全性”节点,右击“登录”“新建登录”-添加Windows用户为SQL Server的登录用户,并设置其要访问的数据库(二)管理SQL Server用户展开要管理的服务器展开“安全性”节点,右击“登录”“新建登录”-选择SQL Server身份验证输入密码,设置其数据库角色和要访问的数据库,一、SQL Server2000服务器安全管理,特殊帐户Sa在完成SQL Server

15、安装后,SQL Server就自动建立了一个特殊的帐户Sa,它拥有服务器、所有系统数据库和用户数据库的所权限,拥有最高的管理权限,拥有System admin角色,可以执行服务器范围内的所有操作。在刚完成SQL Server安装后,Sa帐户没有密码或弱密码,这是相当危险的。方法一:使用强口令方法二:禁用Sa,新建一个用户,赋予System admin角色,一、SQL Server2000服务器安全管理,一旦用户获得SQL Server2000服务器的权限后,就可以设置用户访问单个数据库的权限。使用企业管理器添加数据库用户方法一:给服务器用户创建登录时,指定使用的数据库;方法二:数据库节点下,右

16、击“用户”,新建数据库用户,从登录名中选择要映射的登录帐户。说明:要使用数据库,首先要创建登录。,二、SQL Server2000数据库安全性,特殊数据库用户:dbo和guestDbo 是数据库做高权限的拥有者,可以在数据库范围内执行一切操作。是在SQL Server安装时被设置到model数据库中,不能被删除。Dbo用户都对应于Sa帐户。Guest用户可以使任何已登录到SQL Server服务器的用户都可以访问数据库。所有系统数据库(model除外)都有guest用户;所有新建数据库都没有这个用户,如果有不要添加,必须使用存储过程明确建立。EXEC SP-Grantdbaccess gues

17、t,四、角色,角色是一个强大的工具,可以对用户权限进行集中管理。可以建立一个角色来代表数据库的一类用户,然后给这个角色授予适当的权限。通俗的例子:系主任、教学秘书、辅导员、任课教师,不同的角色有不同的职责和权利。,四、角色,(一)SQL Server固定服务器角色在数据库安装时就创建好的8个固定服务器角色用于分配服务器级管理权限的实体。使用企业管理器管理服务器角色 展开服务器节点-“安全性”-“服务器角色”,选中角色右击“添加”,将登录帐户添加到该服务器角色。,四、角色,(二)SQL Server固定数据库角色在数据库创建时就创建了9个数据库角色,来提供最基本的数据库权限的综合管理。使用企业管

18、理器管理数据库角色 展开数据库节点-“角色”,选中角色右击“添加”,将登录帐户添加到该数据库角色。说明:任何被赋予sysadmin的固定服务器角色的用户都映射着每个数据库的特殊用户dbo,所有sysadmin成员创建的数据库对象都自动将拥有者设置为dbo.,四、角色,特殊数据库角色public除了前面提到的9个数据库角色外,SQL Server还有一个特殊的数据库角色public.。该角色的特点:1.所有的数据库用户都属于public角色;2.替数据库用户捕获所有数据库默认权限;3.public角色存在于每一个数据库中,包括系统数据库和用户建立的数据库。4.public角色不能删除。,四、角色

19、,(三)创建自己定义的数据库角色1.建标准角色。展开数据库节点-“角色”,选中角色右击“新建数据库角色”,将登录帐户添加到该数据库角色。2.建应用程序角色 应用程序角色是一种特殊的数据库角色。在数据量超级大或者数据库关系复杂以及考虑到安全因素时,只允许应用程序角色使用特定的软件访问数据库,以约束用户的操作。默认情况下,应用程序角色是无效的。需要应用程序使用系统存储过程sp_setapprole并提供密码来激活它。它一旦被激活,在这次服务器连接将暂时失去所有登录帐户、数据库用户的权限。,五、权限,SQL Server提供权限作为访问权设置的最后一道关卡。当数据库对象创建后,只有数据库又有者可以访

20、问数据库对象,其他用户想访问对象,首先要拥有者赋予他们的权限。,(一)对数据库对象进行权限管理选中数据库对象右击“属性”“权限”(二)对数据库用户和角色进行权限管理选中用户或角色右击“属性”“权限”,五、权限,8.3 并发控制,数据库是一个可共享资源,允许多用户访问同一数据库。每个用户存取数据库中的数据在时间上可能是顺序进行的,也可能是同时进行的,前者称为串行操作,后者称为并行操作;并行操作提高数据库系统的利用率,但可能出现多个用户程序并发地访问同一数据资源的情况,对此并发操作不加控制,就会破坏数据的一致性。所以,必须对并发操作加以控制,以正确顺序方式调度并发操作。DBMS的并发控制是以事务(

21、tranctions)为单位进行的。,8.3.1 事务,1事务(Transaction)事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的整体。一个事务可以是一个SQL语句,或一组SQL语句或整个程序。,8.3.1 事务,例如网上购物的一次交易,经常包括几步数据库操作:更新客户所购商品的库存信息;保存客户付款信息,可能包括与银行系统交互;生成定单并保存到数据库中;更新用户相关信息,如购物数量等这一系列过程中,任何一个环节出了差错,都将导致交易失败。一旦失败,数据库所有信息都必须保持到交易前的状态不变,例如库存信息没有被更新、用户也没付款,订单也没生成。,8.3.

22、1 事务,SQL定义事务的语句有3条:BEGIN TRANSACTION(事务开始)COMMIT:提交,提交事务的所有操作。即,将事务对数据库所做的所有更新写回到物理数据库中去,事务正常结束。ROLLBACK:回滚。在事务运行过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作撤消,使数据库恢复到该事务执行前的状态。例6-23 P132-133,8.3.1 事务,2事务的特性1原子性(Atomicity):一个事务中的所有操作,是一个不可分割的整体,要么都做,要么都不做(由DBMS的事务管理子系统保证)。2一致性(Consistency):一个事务独立执行的结果必须保

23、持数据库的一致性。即事务的执行结果必须是使数据库从一个一致状态变到另一个一致状态(由完整性控制子系统保证)。,8.3.1 事务,3隔离性(Isolation):在多个事务并发执行时,一个事务的执行不受其他事务干扰。系统应保证这些事务的并发执行与这些事务先后单独执行时的结果一样。(隔离性由DBMS的并发控制子系统保证),8.3.1 事务,4持久性(Durability):指一个事务一旦提交,它对数据库中数据的改变就应该是永久的。即使以后发生故障,也应保留这个事务的执行结果。(持续性由DBMS的恢复子系统保证)事务的隔离性是由DBMS系统的恢复机制来保证的。,8.3.2 事务并发调度,“调度”:按

24、照某种顺序执行一系列操作。.如果多个事务依次执行(一个事务执行完后再执行另一个事务),则称为事务的串行调度。如果并发事务中各操作交叉执行,则称为并发调度。.并发操作可能造成以下三种数据不一致性问题。,8.3.2 事务并发调度,t,8.3.2 事务并发调度,产生上述数据不一致的主要原因是并发操作破坏了事务的隔离性。为了保证并发调度的正确性,DBMS的并发控制机制必须提供一定的手段来保证调度的可串行化。目前,普遍采用的并发控制方法是封锁。,8.3.3 基于封锁的并发控制方法,封锁就是事务T在对某个数据对象(如数据库、表、数据块、记录、数据项等)操作之前,先向系统发出请求,对其加锁。加锁成功后事务T

25、释放才可以多该数据对象进行操作,操作完成以后,在某个时刻,事务T要释放锁。在事务T释放它的锁之前,其他事务不能更新此数据对象。,8.3.3 基于封锁的并发控制方法,一、基本封锁有两种:1)排它锁(Exclusive lock 简称X锁):若事务T对数据对象A加上X锁,则只允许T读取和修改A,在T释放A上的锁之前,其他任何事务对数据A都不能申请到加锁。,8.3.3 基于封锁的并发控制方法,2)共享锁(Shared lock,简称S锁):若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。加锁方法:“写”操作之前申请加X锁;“读

26、”操作之前申请加S锁。排它锁和共享锁的控制方式可以用相容矩阵来表示。,8.3.3 基于封锁的并发控制方法,8.3.3 基于封锁的并发控制方法,8.3.3 基于封锁的并发控制方法,3.活锁和死锁封锁方法可能引起活锁和死锁。(1)活锁如果某事务存在永远等待状态,得不到封锁机会,这种现象称为活锁。避免活锁的方法:采用先来先服务的策略。,8.3.3 基于封锁的并发控制方法,(2)死锁如果两个或两个以上的事务都处于相互等待状态,每个事务都在等对方事务释放锁,它才能继续执行下去,这种现象就叫死锁。如下图所示。,8.3.3 基于封锁的并发控制方法,死锁示例,8.3.3 基于封锁的并发控制方法,解决死锁问题主

27、要有两类方法:1)死锁预防:一类方法是采用一定措施来预防死锁发生。通常有两种方法。(1)一次封锁法。要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能执行。一次封锁可以有效地防止死锁的发生。但扩大了封锁范围,降低了系统的并发度。,8.3.3 基于封锁的并发控制方法,(2)顺序封锁法:是预先对数据对象规定一个顺序,所有事务都按照这个顺序实行封锁。顺序封锁法可以有效地防止死锁,但维持数据对象的封锁顺序非常困难,系统消耗大,实现复杂。数据库系统中一般采用死锁诊断与解除的方法。,8.3.3 基于封锁的并发控制方法,2)死锁诊断与解除:允许死锁发生,采用一定的手段定期诊断系统中有无死锁,若有就解

28、除它。死锁的诊断一般用超时法和等待图法。(1)超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。,8.3.3 基于封锁的并发控制方法,(2)等待图法等待图是一个有向图G=(T,U)。T为结点的集合,每个结点表示正在运行的事务。U为边的集合,每条边表示事务等待情况。若T1等待T2,则T1和T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。,8.3.3 基于封锁的并发控制方法,并发控制子系统周期性地检测事务等待图,如果发现图中有回路,则表示系统中出现死锁。一旦检测到系统存在死锁,就要设法解除。解除死锁方法:选择一个处理死锁代价最小的事务,将其撤消,释放

29、其所持有的所有锁,使其他事务得以继续运行下去。,8.3.4 SQL Serve中的并发控制机制,SQL Server并发控制说明:(1)一个连接在修改数据块时别的连接不能修改这个数据块,直到解锁.(2)通常情况下,一个连接在修改数据块时别的连接也不能查询这个数据块,直到解锁.(3)一个连接写的时候,另一个连接可以写,但是不能读。(4)多个连接可以同时读同一行。,8.3.4 SQL Serve中的并发控制机制,(5)设置事务的级别SET TRANSACTION ISOLATION LEVEL。语法:SET TRANSACTION ISOLATION LEVEL READ COMMITTED|RE

30、AD UNCOMMITTED|REPEATABLE READ|SERIALIZABLE,8.3.4 SQL Serve中的并发控制机制,READ COMMITED:指定在读取数据时控制共享锁以避免脏读。但数据可在事务结束前提交更改,从而产生不可重复读。该选项是系统默认值。READ UNCOMMITED:执行脏读或0级隔离锁定,即读数据不发出共享锁,也不接受排它锁。当设置该选项时,可能会产生不可重复读和脏读。这是限制最小的级别。,8.3.4 SQL Serve中的并发控制机制,REPEATABLE READ:锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,

31、且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。,8.3.4 SQL Serve中的并发控制机制,SERIALIZABLE:在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有SELECT 语句中的所有表上设置HOLDLOCK 相同。,8.3.4 SQL Serve中的并发控制机制,注释:一次只能设置这些选项中的一个,而且设置的选项将一直对那个连接保持有效,直到显式更改该选项为止。这是默认行为,除非在语句的FRO

32、M 子句中在表级上指定优化选项。SET TRANSACTION ISOLATIONLEVEL 的设置是在执行或运行时设置,而不是在分析时设置。,8.4 数据库备份和恢复,数据库备份就是对SQL Server数据库或事务日志进行备份,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。执行备份操作必须拥有对数据库备份的权限许可,SQL Server只允许系统管理员、数据库所有者和数据库备份执行者备份数据库。,8.4 数据库备份和恢复,1.备份SQL Server对所要备份内容的选项设置,提供了四种不同的备份方式:(1)完全数据库备份(2)差异备份

33、或称增量备份(3)事务日志备份(4)数据库文件和文件组备份,8.4 数据库备份和恢复,使用SQL Server 企业管理器进行备份在企业管理器中选定要备份的数据库。在其上打开快捷菜单,选择“所有任务/备份数据库”菜单命令。,8.4 数据库备份和恢复,2.还原数据库使用企业管理器还原数据库在企业管理器中选定,选择“工具/还原数据库”菜单命令。打开“SQL Server还原”对话框。,8.4 数据库备份和恢复,3.收缩数据库收缩的主要作用是收缩日志大小,应当定期进行此操作,以免数据库日志太大。方法:(1)设置数据库故障还原模式为简单模式。在企业管理器中,选定数据库,在其上打开快捷菜单,选择“属性”

34、菜单命令,打开“数据库属性”窗口。在“选项”选项卡中设置。,8.4 数据库备份和恢复,8.4 数据库备份和恢复,(2)收缩数据库。在企业管理器中,选定数据库,在其上打开快捷菜单,选择“所有任务/收缩数据库”菜单命令即可。一般里面的默认设置不用调整,直接按“确定”按钮。(3)收缩完后,将数据库故障还原模式改回为“完全”模式。,8.4 数据库备份和恢复,4.设定每日自动备份数据库(1)在企业管理器中,选定数据库,选择“工具/数据库维护计划”菜单命令,打开相应的窗口。步骤见图所示.,8.4 数据库备份和恢复,8.4 数据库备份和恢复,8.4 数据库备份和恢复,8.4 数据库备份和恢复,8.4 数据库备份和恢复,8.4 数据库备份和恢复,5.数据库的转移(实现新建或转移数据)SQL Server提供的数据转换服务DTS(DataTransformation Services)可以实现数据的转移。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号