第7章数据库保护习题解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

142第7章数据库保护习题解答一.简答题1.什么是数据库的安全性?什么是数据库的完整性?两者有什么联系和区别?数据库的安全性是指保护数据库防止不合法的使用,以免数据的泄漏、非法更改和破坏。数据库的完整性是指数据的正确性、有效性和相容性。完整性和安全性是两个不同的概念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出造成的无效操作和错误结果,而后者是防止数据库被恶意的破坏和非法的存取。当然,完整性和安全性是密切相关的。特别是从系统实现的方法来看,某一种机制常常既可以用于安全保护亦可用于完整性保证。2.列举你认为正确的一些完整性约束条件。1)静态列级约束静态列级约束是对一个列的取值域的说明,这是最常用也最容易实现的一类完整性约束,包括以下几方面:对数据类型的约束,包括数据的类型、长度、单位、精度等对数据格式的约束对取值范围或取值集合的约束。对空值的约束其他约束2)静态元组约束一个元组是由若干个列值组成的,静态元组约束就是规定元组的各个列之间的约束关系。3)静态关系约束在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有:实体完整性约束。参照完整性约束。实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,称为关系的两个不变性。函数依赖约束。大部分函数依赖约束都在关系模式中定义。统计约束。即字段值与关系中多个元组的统计值之间的约束关系。4)动态列级约束动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:修改列定义时的约束例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。2.修改列值时的约束修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工工资调整不得低于其原来工资,学生年龄只能增长等等。1435)动态元组约束动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条件。例如职工工资调整时新工资不得低于原工资+工龄*1.5,等等。6)动态关系约束动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。3.数据库恢复的基本技术有哪些?。恢复是把数据库从错误状态恢复到某一正确状态的功能,从而确保数据库的一致性。恢复的基本原理是冗余,即数据库中任一部分的数据可以根据存储在系统别处的冗余数据来重建。恢复的基本技术:数据转储和登记日志文件。4.简述数据库并发控制的基本思想。基于封锁的并发控制思想是:事务对数据操作前必须获得对该数据的锁,完成操作后在适当时候释放锁,当得不到锁时事务将处于等待状态。二.问答题1.为什么事务非正常结束时会影响数据库数据的正确性,请举一例说明之。事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。则可以定义一个事务T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。2.举例说明若对数据库的并发操作不加控制则会造成哪些后果?常见并发操作一致性问题包括:丢失的修改、不可重复读、读脏数据。丢失修改下面我们先来看一个例子,说明并发操作带来的数据的不一致性问题。考虑飞机订票系统中的一个活动序列:甲售票点(甲事务)读出某航班的机票余额A,设A=16.乙售票点(乙事务)读出同一航班的机票余额A,也为16.甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.结果明明卖出两张机票,数据库中机票余额只减少1。归纳起来就是:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。不可重复读不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。144例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了。事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读)读脏数据读脏数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为脏数据,即不正确的数据。3.设银行数据库有两个用户账户甲和乙,现要把一笔金额amount从账户甲转到账户乙,请写出两账户间资金转换的事务处理程序。BegintransactionRead(账户甲余额temp);Temp=temp-amount;Write(temp);If(temp0){Print“资金不足,不能转账”;Rollback;}Else{Read(账户乙余额temp2);Temp2=temp2+amount;Write(temp2);Commit;}Endtransaction4.设T1,T2,T3是如下的三个事务:T1:A=A+2;T2:A=A*2;T3:A=A**2;设A的处值为0,要求完成如下各题。(1)若这三个事务允许并发执行,则有多少种可能的正确结果,请全部列举出来;T1RT1WT2RT2WT3RT3W结果:16T1RT1WT3RT3WT2RT2W结果:8T2RT2WT1RT1WT3RT3W结果:4145T2RT2WT3RT3WT1RT1W结果:2T3RT3WT2RT2WT1RT1W结果:2T3RT3WT1RT1WT2RT2W结果:4(2)请给出一个可串行化的调度,并给出执行结果;T1RT1WT2RT2WT3RT3W结果:16(3)请给出一个非串行化的调度,并给出执行结果;T1RT1WT2RT3RT2WT3W结果:4(丢失更新)(4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化的调度;T1RT1WT2RT2WT3RT3W(5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。T1RT1WT2RT3RT2WT3W5.试述实现数据库安全性控制的常用方法和技术。实现数据库安全性控制的常用方法和技术有:1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC);3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。6.请读者自己定义二个相关的关系模式,并用SQLServer系统的完整性机制进行定义和设置。教师(教师编号,教师姓名,性别,出生年月,部门编号,职称)部门(部门编号,部门名称,主管)CreateTable教师(教师编号char(6)notnullprimarykey,教师姓名varchar(50)notnull,性别char(2),出生年月datetime,146部门编号char(4),职称varchar(10),Constraintck_性别check(性别in(“男”,”女”)),Constraintfk_教师_部门foreignkey(部门编号)references部门(部门编号))CreateTable部门(部门编号char(4)notnullprimarykey,部门名称varchar(50)notnull,主管varchar(50))

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功