预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第8章数据库保护及SQLServer的数据库保护技术DBMS必须提供统一的数据保护功能,以保护数据库中数据的安全可靠及正确有效。8.1数据库的安全性及SQLServer的安全管理DBMS1.静态级约束 1)对数据类型的约束。 2)对数据格式的约束。 3)对取值范围或取值集合的约束。 4)对空值的约束。 5)其他约束。 6)实体完整性约束。 7)参照完整性约束。 8)函数依赖约束。2.动态级约束 1)修改列定义时的约束。 2)修改列值时的约束。3.完整性控制机制的功能及执行约束 (1)完整性控制机制应具有的功能 1)定义完整性功能,提供定义完整性约束条件的机制。 2)检查完整性功能,检查用户发出的操作请求,看其是否违背了完整性约束条件。 3)控制完整性功能,监视数据操作的整个过程,如果发现有违背了完整性约束条件的情况,则采取一定的动作来保证数据的完整性。(2)立即执行约束和延迟执行约束 有关数据操作语句执行完后立即进行完整性检查为立即执行约束;在整个事务执行结束后再进行完整性检查为延迟执行约束。5.实现参照完整性要考虑的几个问题 (1)外码能够接受空值的问题 (2)在被参照关系中删除元组的问题 (3)在参照关系中插入元组时的问题(4)修改关系的主码问题 a.不允许修改主码。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。 b.允许修改主码。允许修改关系主码,但必须保证主码的惟一性和非空,否则拒绝修改。 (5)修改表时被参照关系的问题。 a.级联修改。如果要修改被参照关系中的某个元组的主码值,则参照关系中相应的外码值也作相应的修改。 b.拒绝修改。如果参照关系中,有外码值与被参照关系中要修改的主码值相同的元组,则拒绝修改。 c.置空值修改。修改被参照关系的元组,并将参照关系中相应元组的外码值置空值。2.SQLServer数据完整性的两种方式 (1)声明数据完整性 声明数据完整性通过在对象定义中定义、系统本身自动强制来实现。声明数据完整性包括各种约束、缺省和规则。 (2)过程数据完整性 过程数据完整性通过使用脚本语言(主语言或Transact-SQL)定义,系统在执行这些语言时强制完整性实现。3.SQLServer实现数据完整性的具体方法 (1)SQLServer约束的类型(2)数据完整性约束的实现1)创建规则CREATERULE CREATERULExb_rule AS @xb=‘男’OR@xb=‘女’ 2)绑定规则 SP_BINDRULExb_rule,‘学生表.性别’ 3)解除绑定 SP_UNBINDRULE‘学生表.性别’ 4)删除默认 DROPRULExb_rule2.实体完整性的实现3.参照完整性的实现并发操作带来的数据不一致性1.丢失修改2.不可重复读3.读“脏”数据8.3.2封锁及封锁协议1.活锁和死锁 (1)活锁 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。 解决活锁的方法是采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。 (2)死锁 多事务交错等待的僵持局面称为死锁。 解决死锁有两类方法:一是采用一定措施来预防死锁的发生;二是采用一定手段定期诊断系统中有无死锁,若有则解除之。预防死锁通常有两种方法: 1)一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。 2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。2.SQLServer的数据备份或恢复策略 (1)使用完全备份的策略:将最近一次的备份恢复。 (2)在完全备份基础上使用事务日志备份的策略。 备份步骤是: 定期进行完全备份,例如一天一次或两天一次。 2)更频繁地进行事务日志备份,如一小时一次或两小时一次等。 数据库恢复步骤是: 1)用最近一次完全备份恢复数据库。 2)用最近一次完全备份之后创建的所有事务日志备份,按顺序恢复完全备份之后发生在数据库上的所有操作。(3)同时使用三种备份的策略: 在同时使用数据库完全备份和事务日志备份的基础上,再以增量备份作为补充。 数据备份操作顺序: 1)定期执行完全备份,例如一天一次或两天一次等。 2)进行增量备份,如四小时一次或六小时一次等。 3)进行事务日志备份,如一小时一次或两小时一次等。 恢复数据库顺序: 1)用最近一次的完全备份恢复数据库。 2)用最近一次的增量备份恢复数据库。 3)用在最近一次的完全备份之后创建的所有事务日志备份,按顺序恢复最近一次完全备份之后发生在数据库上的所有操作。要求掌握的作业 P2861、5、7、10、11、12、31-38、 41、43、44、47、48T1的修改被T2覆盖了!T1前后读到不一致的数据T2读到错误的数据