第6章数据库保护为了保证数据库数据的安全可靠和正确有效,DBMS必须提供统一的数据保护功能。数据保护包括数据的安全性、完整性、并发控制和恢复。本章讨论数据库保护的基本概念和相关题解。6.1数据库的安全性安全性指的是保护数据库,防止不合法的使用所造成的数据泄露、修改或破坏6.1.1保证数据安全的一般方法在一般计算机系统中,安全措施是逐级设置的,数据库系统也不例外。一般是进入翻统时,要对用户的身份进行鉴定,进入系统后,还要根据情况对数据的存取权限加以控制1.用户标识与系统鉴定DBMS都要提供一定的方式供用户标识自己。在存取数据库的数据之前,用户首先自我标识,系统对用户的标识进行核定,通过鉴定后,方提供数据库的使用权。常用的标志识方法是用户名和口令字。2.存取权限的控制用户被获准使用数据库之后,还要根据预定的用户权限进行存取控制,如某个用户只能读哪些数据库表,某个用户只能写哪些数据库表等。6.1.2VisualFoxpro系统中的安全措施在VisualFoXPro系统中,没有提供这样的安全措施,编程者可以使用通过程序实认6.2数据库的完整性完整性是指保证数据库数据的正确性和有效性。为了维护数据库数据的完整性,DBMS必须提供一种机制,用来检查数据库中的数据是否满足规定的条件,这个条件在数据系统中称为完整性约束条件。6.2.1完整性规则。完整性规则可分为两大类:域完整性规则和关系完整性规则。域完整性规则涉及湖定属性(域流给出的某一候选值是否可以接受的问题。关系完整性规则主要涉及数据之的联系约束。(l)域完整性规则域完整性规则实际上就是值的约束,是对数据的限制。(2)关系完整性规则。关系完整性规则是关于数据之间联系的约束。数据之间的联系包括:同一个关系的不同属性之间可以有一定的联系,从而满足一定的约束条件;一个关系的属性的值集与另一个关系中某属性值的子集的联系。6.2.2VisualFoxPro系统的完整性措施VisualFoxPro使用字段级和记录级有效性检验以及设置参考完整性来维护数据库表的完整性,这些有效性设置方法都可以实现域完整性约束和关系完整性约束。(l)字段组有效性检验在“表设计器”中的字段验证框的规则文本框中可以输入某字段的约束条件,如XB房段的约束条件可以设置为:XB=’男’ORXB=’女’。或者使用CREATETABLE语句的SETCHECK于句设置字段的约束条件。(2)记录级有效性检验;使用触发器对数据库表记录操作进行有效性检验,有插入触发器、修改触发器和删除触发器三种。建立触发器命令如下:REATETRIGGERON<数据库表》[FORINSERT/FORUPDATE/FORDELETE]AS《函数>()在其中的<函数>中使用VisualFoxpro命令指定约束条件。>(3)设置参考完整性在数据库菜单中选择“编辑参考完整性”进人参考完整性生成器,其中包含“更新规则”、“删除规则”和“插入规则”三个选项卡,“更新规则”选项卡中指出当父表中的关键字值更改时,应用哪条规则,可选择以下三者之一:·级联用新的关键字值更新子表中的所有相关记录。·限制若子表中有相关记录则禁止更新。、·忽略允许更新,不管子表中的相关记录。“删除规则”选项卡中指出当父表中记录被删除时,应用哪条规则,可选择以下三者之一:·级联删除子表中的所有相关记录。”限制若子表中有相关记录则禁止删除。_·忽略允许删除,不管子表中的相关记录。“插入规则”选项卡中指出当于表中插入一个已有的记录时,应用哪条规则,可选择①以下二者之一:·限制若父表中没有匹配的关键字值,则禁止插入。·忽略允许插入。6.3数据库的并发控制并发控制主要涉及保证各个事务本身正确的问题。所谓事务是对数据库等操作或运算的一组命令。数据库系统是共享的多用户系统,对数据库的存取可能是并行的,所以,即使单个事务执行时所有的事务都是正确的,在并发的情况下,因为事务之间的互相干扰,然可能使总的结果不正确。6.3.1并发控制并发控制就是以正确的方式调度并发事务,使一个事务的执行不受其他事务的干扰。在数据库环境下,并发控制的主要方式是封锁机制,即加锁。基本的加锁有两类:排它锁和共享锁。(l)排它锁如果事务T对某个目标建立了排它锁,则不再允许任何其他事务T’对这个目标再加任何类型的锁,直至T释放其锁为止。(2)共享锁如果事务T对某个目标建立了共享锁,则另一个不同的事务了也可以对这个目标取得共享锁,但不能取得排它锁,直到对它的所有共享锁都释放为止。6.3.2死锁及避免死锁的办法.死锁是这样的一种情况,其中两个或多个事务同时处于等待状态,其中的每一个在它能够进行之前都等待另一个释放锁。在数据库中解决死锁的常用方法有:(l)要求每个事务一次就将所有要使用的数据全部加锁,否则就不能执行。(2)预先规定一个封锁顺序,所有的事务都必须按这个顺序对数据执行封锁。(3)不采取任何措施来预防死锁的发生,而是采用某种方法诊断系统中是否有死锁,如果发现死锁就设法解除。在VisualFoxpro中提供了自动加锁和人工加锁的机制避免死锁的发生。6.4数据库恢复在数据库系统中,恢复的基本含义是恢复数据库本身。也就是说,在发生某种故障使数据库当前的状态已经不再正确时,把数据库恢复到已知为正确的某一状态。目前数据库系统中最常用的两种恢复方法是转储和登记日志文件。6.4.1转储转储是周期性地把整个数据库复制到存档用的存储器上。这些备用的数据文件称为后援副本,当数据库遭到破坏后就可以利用后援副本恢复数据库。当前数据库只能恢复到转储时的状态。转储是十分耗费时间和资源的。6.4.2日志文件日志文件是用来记录每一次对数据库更新活动的文件,目的是为数据库的恢复保留详的数据。1.登记日志文件每次修改数据库时,在一个叫做运行日志的特殊数据集中记下一个记录,包括事务的化事务终止以及对数据库的插入、修改、删除等,还包括被修改项目的旧值和新值等。2.恢复事务利用日志恢复事务分两步:(l)从头扫描日志文件,找出哪些事务在故障发生时已经结束,哪些事务尚未结束。(2)对尚末结束的事务进行撤消(UNDO)处理,对己结束的事务进行重做(REDO)处理。.UNDO处理方法是反向扫描日志文件,对每个UNDO事务的更新操作执行反操作。即旧经插入的新记录执行删除,对已经删除的记录执行插入,恢复修改过的数据。REDO处理方法是正向扫描日志文件,重新执行登记的操作。利用转储和周志文件可以有效地恢复数据库。基本题6一、单项选择题1.下面哪个不是数据库系统必须提供的数据控制功能一。A安全性B.可移植性C.完整性D、并发控制答案:B2.保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。这是指数据的——。A.安全性B.完整性C.并发控制D.恢复答案:A3.数据库的是指数据的正确性和相容性。A安全性B.完整性C.并发控制D.恢复答案:B4.在数据系统中,对存取权限的定义称为——。A命令B.授权C.定义D.审计答案:B