文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
答:数据库实现阶段主要有以下三项工作: 建立实际DB结构;装入试验数据调试应用程序;装入实际数据进入试运行状态。 7.18 数据库系统投入运行后,有哪些维护工作?
答:DBS投入运行以后,就进入运行维护阶段。其主要工作有四项: 维护DB的安全性与完整性及系统的转储和恢复; DB性能的监督、分析与改进; 增加DB新功能; 改正运行中发现的系统错误。
8.2 试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?
答:① 事务的原子性,是指一个事务对DB的所有操作,是一个不可分割的工作单元。原子性是由DBMS的事务管理子系统实现的。事务的原子性保证了DBS的完整性。 ② 事务的一致性,是指数据不会因事务的执行而遭受破坏。事务的一致性是由DBMS的完整性子系统实现的。事务的一致性保证数据库的完整性。 ③ 事务的隔离性,是指事务的并发执行与这些事务单独执行时结果一样。事务的隔离性是由DBMS的并发控制子系统实现的。隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。 ④ 事务的持久性,是指事务对DB的更新应永久地反映在DB中。持久性是由DBMS的恢复管理子系统实现的。持久性能保证DB具有可恢复性。 8.3事务的COMMIT语句和ROLLBACK语句各做什么事情? 答:COMMIT语句表示事务执行成功地结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。 ROLLBACK语句表示事务执行不成功地结束(应该“回退”),此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。
8.5“检查点机制”的主要思想是什么?COMMIT语句与检查点时刻的操作如何协调? 答:“检查点机制”的主要思想是在检查点时刻才真正做到把对DB的修改写到磁盘。在DB恢复时,只有那些在最后一个检查点到故障点之间还在执行的事务才需要恢复。 事务在COMMIT时,事务对DB的更新已提交,但对DB的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。因此事务的真正结束是在COMMIT后还要加上遇到检查点时刻。
8.6 什么是UNDO操作和REDO操作?为什么要这样设置? 答:UNDO和REDO是系统内部命令。 在DB恢复时,对于已经COMMIT但更新仍停留在缓冲区的事务要执行REDO(重做)操作,即根据日志内容把该事务对DB修改重做一遍。 对于还未结束的事务要执行UNDO(撤消)操作,即据日志内容把该事务对DB已作的修改撤消掉。 设置UNDO和REDO操作,是为了使数据库具有可恢复性。 8.7什么是“运行记录优先原则”?其作用是什么?
答:写一个修改到DB中和写一个表示这个修改的登记记录到日志文件中是两个不同的操作,后者比前者重要,后者应先做。这就是运行记录优先原则。其作用是保证DBS具有可恢复性。
8.8数据库恢复的基本原则是什么?具体实现方法是什么? 答:恢复的基本原则是“冗余”,即数据重复存储。
6文档来源为:从网络收集整理.word版本可编辑.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
为了做好恢复工作,在平时应做好两件事:定时对DB进行备份;建立日志文件,记录事务对DB的更新操作。
8.9数据库的并发操作会带来哪些问题?如何解决?
答:如果不加控制,数据库的并发操作会带来三个问题:丢失更新问题、依赖于未提交更新的问题和不一致分析问题。
解决并发操作带来的问题,可以使用封锁技术和时标技术。
8.10为什么DML可以单独提供解除S封锁的命令,而不单独提供解除X封锁的命令? 答:为防止由事务的ROLLBACK引起丢失更新操作,X封锁必须保留到事务终点,因此DML不提供专门的解除X锁的操作,即解除X锁的操作合并到事务的终点去做。而在未到事务终点时,执行解除S锁的操作,可以增加事务并发操作的程度,但对DB不会产生什么错误的影响,因此DML可以提供专门的解除S锁的的操作,让用户使用。 8.12死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?
答:在DBS运行时,死锁状态是我们不希望发生的,因此死锁的发生本身是一件坏事。但是坏事可以转换为好事。如果我们不让死锁发生,让事务任意并发做下去,那么有可能破坏中的数据,或使用户读了错误的数据。从这个意义上讲,死锁的发生是一件好事,能防止错误的发生。在发生死锁后,系统的死锁处理机制和恢复程序就能起作用,抽取某个事务作为牺牲品,把它撤消,做ROLLBACK操作,使系统有可能摆脱死锁状态,继续运行下去。
8.13 试叙述“串行调度”与“可串行化调度”的区别。 答:如果多个事务依次执行,则称事务串行调度。 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。 8.15什么是数据库的完整性?DBMS的完整性子系统的主要功能是什么?
答:DB中完整性是指数据的正确性、有效性和相容性,防止错误的数据进入DB。 DBMS完整性子系统的主要功能有两点:监督事务的执行,并测试是否违反完整性规则;若有违反现象,则采取恰当的操作。
8.16完整性规则由哪几个部分组成?SQL中的完整性约束有哪些? 答:完整性规则由三部分组成:触发条件,约束条件和ELSE子句。 SQL中把完整性约束分成三大类:域约束。基本表约束和断言。
8.17参照完整性规则在SQL中可以用哪几种方法实现?删除参照关系的元组时,对依赖关系有哪些影响?修改参照关系的主键值时,对依赖关系有哪些影响?
答:参照完整性规则,在SQL中可以用外键子句、检查子句、断言等三种方式实现。
删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一: RESTRICT方式、CASCADE方式和SET NULL方式。 修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。
8.18 试对SQL中检查约束(CHECK子句)和断言两种完整性约束进行比较,各说明什么对象?何时激活?能保证数据库的一致性吗?
答:检查子句主要用于对属性值、元组值加以限制和约束。断言实际上是一种涉及面广的检查子句,用CREATE语句来定义。 这两种约束都是在进行插入或修改时激活,进行检查。 检查子句只在定义它的基本表中有效,而对其他基本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。 而断言能保证完整性约束彻底实现。
7文档来源为:从网络收集整理.word版本可编辑.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
8.19设教学数据库的关系如下:
S(SNO,SNAME,AGE,SEX) SC(SNO,CNO,GRADE) C(CNO,CNAME,TEACHER)
试用多种方法定义下列完整性约束:
⑴ 在关系S中插入的学生年龄值应在16~25岁之间。
⑵ 在关系SC中插入元组时,其SNO值和CNO值必须分别在S和C中出现。
⑶ 在关系C中删除一个元组时,首先要把关系SC中具有同样CNO值的元组全部删去。
⑷ 在关系S中把某个SNO值修改为新值时,必须同时把关系SC中那些同样的SNO值也修改为新值。
解:这里每个约束用一种方式定义。 (1)用检查子句定义:
CHECK(AGE BETWEEN 16 AND 25); (2)在关系SC的定义中,用外键子句定义: FOREIGN KEY(SNO) REFERENCES S(SNO); FOREIGN KEY(CNO) REFERENCES C(CNO); (3)在关系SC的定义中,用外键子句定义: FOREIGN KEY(CNO) REFERENCES C(CNO) ON DELETE CASCADE;
(4)在关系SC的定义中,用外键子句定义: FOREIGN KEY(SNO) REFERENCES S(SNO) ON UPDATE CASCADE;
8.20 在教学数据库中的关系S、SC、C中,试用SQL的断言机制定义下列两个完整性约束:
⑴ 每位教师开设的课程不能超过10门。 (2)不允许男同学选修WU老师的课程。 (3)每门课程最多50名男同学选修
(4)学生必须在选修Maths课后,才能选修其他课程。 (5)每个男学生最多选修20门课程。
解:⑴ 每位教师开设的课程不能超过10门。
CREATE ASSERTION ASSE5 CHECK (10>=ALL(SELECT COUNT(CNO)
FROM C
GROUP BY TNAME))
(2)不允许男同学选修WU老师的课程。 CREATE ASSERTION ASSE2 CHECK
(NOT EXISTS ( SELECT *
FROM SC
WHERE CNO IN (SELECT CNO
FROM C
WHERE TNAME=’WU’
AND SNO IN (SELECT SNO
FROM C
8文档来源为:从网络收集整理.word版本可编辑.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
WHERE SEX=’男’)));
(3)每门课程最多50名男同学选修
CREATE ASSERTION ASSE3 CHECK
(50>=ALL(SELECT COUNT(SC.SNO)
FROM S, SC
WHERE S.SNO=SC.SNO AND SEX=’ 男’
GROUP BY CNO));
(4) 学生必须在选修Maths课后,才能选修其他课程。
这个约束可用下列形式表达:
“不存在一个学生的选课,这个学生没学过Maths课”。 这样就能很容易地写出断言:
CREATE ASSERTION ASSE4 CHECK (NOT EXISTS( SELECT SNO
FROM SC X
WHERE NOT EXISTS
(SELECT *
FROM SC Y, C
WHERE Y.CNO=C.CNO AND Y.SNO=X.SNO
AND CNAME=’Maths’)));
(5)每个男学生最多选修20门课程。
CREATE ASSERTION ASSE5 CHECK (20>=ALL(SELECT COUNT(CNO)
FROM S, SC
WHERE S.SNO=SC.SNO AND SEX=’男’
GROUP BY S.SNO));
8.21 什么是数据库的安全性?有哪些级别的安全措施?
答:DB的安全性是指保护DB,防止不合法的使用,以免数据的泄密、更新或破坏。为了保护DB,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:环境级、职员级、OS级、网络级、DBS级。(解释略) 8.24 SQL的视图机制有哪些优点?
答:SQL的视图机制使系统具有三个优点:数据安全性,逻辑独立性和操作简便性。 8.25 SQL2中的用户权限有哪几类?并做必要的解释。 答:SQL2中的用户权限有六类:SELECT、INSERT、DELETE、UPDATE、REFERENCES和USAGE. 10.3什么是对象联系图?图中,椭圆、小圆圈、单箭头(→)、双箭头(→→)、双线箭头(?)、双向箭头(←→)这些结构各表示什么含义?
答:描述类型定义间嵌套和递归联系的图称为对象联系图。图中,每个对象可以有若干属性,属性的类型可以是基本数据类型、元组类型或集合类型,而元组或集合是以指针形式(引用类型)实现。 对象联系图中椭圆表示对象类型(相当于实体类型);小圆圈表示属性是基本数据类型,单箭头(→)表示属性值是单值;双箭头(→→)表示属性值是多值;双线箭头(=>)表示对象类型之间的子类与超类联系(从子类指向超类);双向箭头(?)表示两个属性之间值的联系为逆联系。
10.4面向对象的类型系统有哪三部分组成?每一部分又有哪些数据类型?
9文档来源为:从网络收集整理.word版本可编辑.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
答:面向对象的类型系统基本数据类型、复合类型和引用类型三部分组成。
基本数据类型有整型、浮点型、字符、字符串型、布尔型和枚举型等五种。 复合类型有行类型、数组类型、列表类型、包类型和集合类型等五种。 引用类型只要一种。
10.5在ORDB中有哪些基本数据类型?有哪些复合数据类型? 答:基本数据类型有整型、浮点型、字符串型和日期型等。
复合类型有结构类型、数组类型、多集类型和集合类型等四种。 10.6 ORDB中,子表和超表应满足哪两个一致性要求? 答:(1)超表中每个元组最多可以与每个子表中的一个元组对应。
(2)子表中每个元组在超表中恰有一个元组对应。 10.7 图13.11是有关教师(Faculty)、系(Department)和系主任(Director)信息的对象联系图。
(1)试用ORDB的定义语言,定义这个数据库。
(2)试用ORDB的查询语言,分别写出下列查询的SELECT语句: ① 检索精通俄语(Russian)的教师工号和姓名。
② 检索复旦大学出访过瑞士(Switzerland)并且精通日语(Japanese)的系主任。 解:(1)CREATE TYPE MyString char varying; CREATE TABLE department(university MyString,
dname MyString,
staff setof(ref(faculty)), dire ref(director));
CREATE TABLE faculty(fno integer,
fname MyString
languages setof(MyString), countries setof(MyString), works_for ref(department));
CREATE TABLE director(dno integer) Under faculty; (2)① SELECT fno, fname
FROM faculty
WHERE ‘Russian’ in languages; ② SELECT D.dno, D.fname FROM director as D WHERE D.works_for.university=’Fudan University’ AND ‘Switzerland’ in D.countries AND ‘Japanese’ in D.languages;
10.8 图13.12是有关学生(student)和学习(study)信息的对象联系图。
图13.12 对象联系图
(1)试解释这个对象联系图。
(2)试用ORDB的定义语言,定义这个数据库。
(3)试用ORDB的查询语言,分别写出下列查询的SELECT语句: ① 检索每个学生的学习课程和成绩。
② 检索至少有一门课程的求学地与籍贯在同一城市的学生学号和姓名。
10文档来源为:从网络收集整理.word版本可编辑.