第四章作业
1. 什么是数据库安全性?
答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2. 试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有:
(1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如 C2 级中的自主存取控制(DAC),B1级中的强制存取控制(MAC)。
(3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审 计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、时间和内容等。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
3. 什么是数据库中的自主存取控制和强制存取控制方法。
答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用 户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别 的用户才能存取某一个密级的数据对象。
4. 今有两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用SQL的grant和revoke语句(加上视图机制)完成以下授权定义或者存取控制功能:
(1) 授予用户王明对上述两个表的SELECT权限
GRANT SELECT ON 职工,部门 TO 王明;
(2) 授予用户李勇对上述两个表的INSERT和DELETE权限
GRANT INSERT,DELETE ON 职工,部门 TO 李勇;
(3) 授予用户刘星对职工表的SELECT权限和对工资字段的UPDATE权限
GRANT SELECT,UPDATE(工资) ON 职工 TO 刘星;
(4) 授予用户张欣创建表的权限
GRANT ALTER TABLE ON 职工,部门 TO 张新;
(5) 授予用户对上述两个表的所有权限,并具有转授给他人的权力。
GRANT AIL PRIVILIGES ON 职工,部门 TO 周平
WITH GRANT OPTION;
(6) 用户杨兰只能查看每个部门职工的最高工资、最低工资、平均工资,但不能查看每个职工的工资。
CREATE VIEW 部门工资 AS
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM 职工,部门
WHERE 职工.部门号=部门.部门号
GROUP BY 职工.部门号;
GRANT SELECT ON 部门工资
TO 杨兰;
(7) 撤销用户李勇对上述两个表的INSERT和DELETE权限
REVOKE SELECT ON 职工,部门 FROM 王明;
REVOKE INSERT,DEIEIE ON 职工,部门 FROM 李勇;
(8) 撤销用户刘星对职工表的SELECT权限和对工资字段的UPDATE权限
REVOKE SELECT,UPDATE ON 职工 FROM 刘星;
(9) 撤销用户张欣创建表的权限
REVOKE ALTER TABIE ON 职工,部门 FROM 张新;
第五章作业
1. 什么是数据库的完整性
数据库的完整性是指数据的正确性和相容性。
2. 什么是数据库的完整性约束条件
完整性约束条件是指数据库中的数据应该满足的语义约束条件。
5. 数据库在实现参照完整性时需要考虑哪些方面?
RDBMS在实现参照完整性时需要考虑以下几个方面:
(1)外码是否可以接受空值。
(2)删除被参照关系的元组时的考虑,这时系统可能采取的作法有三种:
1)级联删除(CASCADES)
2)受限删除(RESTRICTED);
3)置空值删除(NULLIFIES)。
(3)在参照关系中插入元组时的问题,这时系统可能采取的作法有:
1)受限插入;
2)递归插入。
(4)修改关系中主码的问题。一般是不能用UPDATE语句修改关系主码的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。如果允许修改主码,首先要保证主码的惟一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。
第七章 数据库设计作业
1. 试述数据库设计过程。
(1)需求分析;
(2)概念结构设计;
(3)逻辑结构设计;
(4)数据库物理设计;
(5)数据库实施;
(6)数据库运行和维护。
2. 什么叫数据抽象?
数据抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。
3. 为什么要视图集成?视图集成的方法是什么?
在对数据库系统进行概念结构设计时一般采用自底向上的设计方法,把繁杂的大系统解子系统。首先设计各个子系统的局部视图,然后通过视图集成的方式将各子系统有机地融合起来,综合成一个系统的总视图。这样,设计清晰,由简到繁。由于数据库系统是从整体角度看待和描述数据的,因此数据不在面向某个应用而是整个系统。因此必须进行视图集成,使得数据库能被全系统的多个用户、多个应用共享作用。 一般来说,视图集成可以有两种方式:
(1)多个分E-R图一次集成;
(2)逐步集成,用累加的方式一次集成两个分E-R图
无论采用哪种方式,每次集成局部E-R图时都需要分两步走:
(1)合并,解决各分E-R图之间的冲突,将各分E-R图合并起来生成初步E-R图; (2)修改和重构,消除不必要的冗余,生成基本E-R图。
4. 现有一个学校信息系统。
该学校有多个系,描述系的信息有:系编号、系名
每个系有多名教师,描述教师的信息有:教师编号、教师名、研究领域。每个教师只能属于一个系,一个系可以有多个老师。
每个系都有一个教师作为系主任,每个教师只能在一个系当系主任
每个系有多个班级,描述班级的信息有:班级编号、班级名、专业,每个班级只属于一个系。
每个班级有多个学生,每个学生只能属于一个班级。描述学生的信息有:学号、姓名、年龄、性别。
每个班级都有一个学生担任班长,一个学生只能在一个班级担任班长。
有的学生担任指导员,一个指导员可以管理多个学生,每个学生只能有一个指导员。
一个系可以有多门课程,每门课可以在多个系开课。描述课程的信息有:课程编号、课程名、学时、学分
一个教师可以讲多门课,一门课可以被多个教师讲。一个学生可以选择多门课,一门课可以被多个学生学。但当一个学生选定一门课时,就有一个确定的老师。一个学生选定的每一门课程都有一个成绩。
要求:
(1) 画出ER图
(2) 将其转换为关系模式,并规范化到3NF。
(3) 指出每个关系模式的主码和外码。
第九章 查询优化
1. 试述查询优化的一般准则和主要步骤
查询优化的总目标是选择有效的策略,求给定关系表达式的值,值得查询代价较小,因为查询优化的搜索空间有时非常大,实际系统选择的策略不一定是最优的,而是较优的。(1)计算广义笛卡尔积(2)做选择操作(3)做投影操作
2. 简述选择、连接等关系代数操作的实现算法。
代数优化策略是通过对关系代数表达式的等价变换来提高查询效率。所谓关系代数表达上司的等价是指用相同的关系代替两个表达式中相应的关系得到的结果是相同的。
第十章 数据库恢复
1. 试述事务的概念及事务的四个特性。恢复技术可以保证事务的哪些特性?
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,只一个不可分割的工作单位。
事务具有4个特性:原子性,一致性,隔离性和持续性,这4 个特性简称ACID特性。恢复技术可以保证事务的原子性,一致性与持续性。
2. 数据库运行中可能产生的故障有哪几类?
事物内部故障;系统故障;介质故障;计算机病毒。
3. 数据库恢复的基本技术有哪些?对每种技术做简要的描述
恢复机制涉及的两个关键问题是:如何建立冗余数据,以及如何利用这些冗余数据实施数据库恢复。建立冗余数据最常用的技术是数据转储和登记日志文件。通常在一个数据库系统中,这两种方法是一起使用的。
数据转储是数据库恢复中采用的基本技术。所谓转储即数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。这些备用的数据成为后备副本或后援副本。
日志文件是用来记录事务对数据库的更新操作的文件。不同数据库系统采用的日志文件格式并不完全一样。概括起来日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。
4. 给出不同故障的恢复策略和方法。
事务故障是指事务在运行至正常重点前被终止,这时恢复子系统应利用日志文件撤销此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统恢复的步骤是:
(1)反向扫描日志文件,查找该事务的更新操作。
(2)对该事务的更新操作执行逆操作,即将日志目录中“更新前的值”写入数据库。这样,如果记录中是插入操作,则相当于做删除操作(因此时“更新前的值”为空);若记录中的是删除操作,则做插入操作;若是修改操作,则相当于修改前置代替修改后的值。
(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
(4)如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。
系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。系统恢复的步骤是:
(1)正相扫描日志文件(即从头扫描日志文件),找出在故障发生之前已经提交的事务。将其事务标识计入重做队列。同事找出故障发生时尚未完成的食物,将其事务标识记入撤销队列。
(2)对撤销队列中的各个事务进行撤销处理。进行撤销处理的方法是,反向扫描日志文件,对每个撤销事务的更新操作执行逆操作,即将日志记录中“更新前值”写入数据库。
(3)对重做队列中的各个失误进行重做处理。对重做处理的方法是:正向扫描日志文件,最每个崇左市五重新执行日志文件登记的操作,即将日志文件中“更新后的值”写入数据库。
发生介质故障后,磁盘上的物理数据和日志文件被破坏,这是最严重的一种故障,恢复方法是重装数据库,然后崇左已完成的事物。
(1)装入最新的数据库后备副本,是数据库恢复到最近一次转储时的一致性状态。对于动态转储的数据库副本,还需同时装入转储开始时刻的日志文件副本,利用恢复系统故障的方法,才能将数据库恢复到一致性状态。
(2)装入相应的日志文件副本,重做已完成的事务。即首先扫描日志文件,找出故障发生时已提交的事务的标识,将其计入重做队列;然后正向扫描日志文件。对重做队列中的所有事物进行重做处理。即将日志记录中“更新后的值”写入数据库。
5. 具有检查点的恢复技术有什么特点?
这种技术在日志文件中增加一类新的记录——检查点记录,增加一个重新开始文件,并让恢复子系统在登录日志文件期间动态的维护日志。使用检查点方法可以改善恢复效率。
第十一章 并发控制
1.并发操作有什么优点?但可能会产生哪几种数据不一致?
为了保证施工,数据库管理系统需要对兵法操作进行正确调度。 并发操作带来的数据不一致性包括丢失修改、不可重复读和读“脏”数据。
2.什么是封锁及锁协议?
封锁就是事务T在对某个数据对象例如表、记录等操作之前,现象系统发出请求没对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。
在运用X锁和S锁这两种基本封锁对数据对象甲所示,还需要约定一些规则。例如,何时申请X锁或S锁、持锁时间、和实施方等。这些规则成为封锁协议。
3.什么是死锁、活锁?相应的解决方法是什么?
T2有可能永远等待,这就是活锁。T1在等待T2,二T2又在等待T1的局面,T1和T2两个事务永远不能劫数,形成死锁。避免活锁的简单方法是采用先来先服务的策略。目前解决数据库中死锁问题主要有两类方法,一类方法是采取一定措施来预防死锁的发生。另一类方法是允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之
4.什么样的并发调度是正确的?怎样得到正确的并发调度?
串行调度是正确的。执行结果等价于串行调度的调度也是正确的。这样的调度叫做可串行化调度。可串行性是并发事务正确调度的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。
5.简单介绍多粒度封锁和意向锁的概念。
多粒度封锁协议允许多粒度树中的每个结点被独立的加锁。对一个结点加锁意味着这个节点的所有后裔结点也被加以同样类型的锁。
意向锁的含义是如果对一个结点加意向锁,则说明该节点的下层结点正在被加锁;对仁义结点加锁是,必须先对它的上层结点加意向锁。