当前位置:首页 > 数据库系统原理习题解答
习题5——SQL语言
5.1 名词解释
基本表——是实际存储在数据库中的表。
视图——是由若干基本表和视图构成的表的定义。 实表——(略)。
虚表——在创建一个视图时,只是把视图的定义存储在数据字典中,而不存储视图定义的数据,在用户使用视图时才去求对应的数据。因此,视图被称为“虚表”。
相关子查询—— 连接查询—— 嵌套查询——
导出表——是执行了查询时产生的表。 临时视图——
交互式SQL——SQL语言在终端交互方式下使用,称为交互式SQL。 嵌入式SQL——SQL语言在语言的程序中使用,称为嵌入式SQL。 游标——是一个与某一查询结果相联系的符号名,是一个指针。 卷游标——可推进也可后退的游标。
5.2 试叙述SELECT语句的关系代数特点和元组演算特点。 答:
5.7 预处理方式对于嵌入式SQL的实现有什么重要意义? 答:
5.8 在主语言的程序中使用SQL语句有哪些规定?
答:①、在程序中要区分SQL语句和主语言语句。 ②、允许嵌入的SQL语句引用主语言的程序变量。
③、SQL的集合处理方式与主语言的单记录处理方式之间的协调。
5.9 SQL的集合处理方式和主语言单记录处理方式间如何协调? 答:通过游标机制,将集合操作转换成单记录处理方式。
5.10 嵌入式SQL语句何时不必涉及到游标?何时必须涉及到游标?
答:在执行INSERT、DELETE、UPDATE语句时和已知SELETE语句查询结果肯定是单元组时,可以不涉及游标。
当SELETE语句查询结果为多个元组时必须涉及到游标。
5.12 什么是存储过程?使用存储过程后,系统具有什么特点?
答:存储过程是使用SQL语句和流程控制语句编写的模块,存储过程经编译和优化后存储在数据库服务器端的数据库中,使用时调用即可。
使用存储过程具有以下优点: 1) 提高运行速度;
2) 增强了SQL的功能和灵活性;
3) 可以降低网络的通信量; 4) 减轻了程序编写工作量; 5) 间接实现安全控制功能
5.13 什么是SQL/PSM?这个标准中有哪些流程控制语句?
答:SQL/PSM是SQL标准的一部分,它指定了如何编写持久存储模块,提供流程控制语句来表示过程处理的应用逻辑。
有三种流程控制语句:顺序执行、条件分支语句、循环语句。
习题6——数据库管理
6.1 名词解释
事务——是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。不论发生何种情况,DBS必须保证事务能正确、完整地执行。
数据库的一致性——事务运行结果必须保证数据库从一个一致性状态进入另一个一致性状态。
数据库的可恢复性——DBMS系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态的能力。
并发操作——多个事务同时对同一数据进行操作。
封锁——是一个与数据项有关的变量,相对于该数据项上可能的操作而言,锁描述了该数据项的状态。
X锁——排它型封锁。如果事务T对某个数据R实现了X锁,那么在T对R解锁前,不允许其它事务对R加任何类型的锁。
S锁——共享型封锁。如果事务T对某个数据R实现了S锁,仍允许其它事务对R加S锁,但R的所有S锁解除前,不允许任何事务对R加X锁。
调度——事务的执行次序。
串行调度——多个事务依次执行。
并发调度——利用分时的特点,同时处理多个事务。
可串行化调度——在每个事务在各种调度中语句的先后顺序不变的情况下,如果一个并发调度的执行结果与某一串行调度的执行结果等价,则这个并发调度称为可串行化调度。否则是不可串行化调度。
6.2 事务的COMMIT语句和ROLLBACK语句各做什么事情?
答:COMMIT语句提交事务对数据库的所有更新并释放X锁;
ROLLBACK语句撤销事务对数据库的所有更新,使数据库恢复到事务执行前的状态,并释放X锁。
6.3 试述事务的四个性质,并说明每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?
答:事务的四个性质ACID:
原子性:一个事务对数据库的所有操作,是一个不可分隔的工作单元。不会因事务交叉执行造成数据库的错误。
一致性:一个事务独立执行的结果,就保证数据库的一致性。数据不会因事务的执行而遭受破坏。
隔离性:多个事务并发执行时,系统保证这些事务先后单独执行时的结果一样。
持久性:一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。
6.4 典型的数据库恢复策略是什么?
答:P154(略)。
6.5 DBS中有哪些类型的故障?哪些破坏了数据库,哪些没有但使其中的某些数据变得不正确?
答:事务故障(可以预期的事务故障、非预期的事务故障)、系统故障、介质故障。
都破坏了数据库,事务故障和系统故障使其中的某些数据变得不正确。
6.6 “检查点机制”的主要思想是什么?
答:DBMS定时设置检查点,在检查点时刻才真正做到把对DB的修改写到磁盘,并在日志文件中写入一条检查点记录(以便恢复时使用)。当DB需要恢复时,根据日志文件仅对检查后的事务进行REDO、UNDO恢复操作。检查点机制大大减少了DB的恢复时间。
6.7 什么是UNDO和REDO操作?为什么要这样设置?
答:REDO处理的方法是:正向扫描日志文件,根据重做队列的记录对每一个重做事务重新实施对数据库的更新操作。
UNDO处理的方法是:反向扫描日志文件,根据撤销队列的记录对每一个撤销队列的记录的更新操作执行逆操作。
6.8 COMMIT操作和检查点操作有些什么联系?你认为应该如何恰当协调这两种操作才有利于DB的恢复? 答:(略)。
6.9 数据库的并发操作会带来哪些问题?如何解决?
答:丢失数据更新问题、读脏数据问题、不可重复读问题。 通过加X锁、S锁解决。
6.10 使用X锁和S锁时各有哪些操作?X锁和S锁间是如何协调的? 答:(略)。
6.11 为什么X锁需保留到事务终点,而S锁可随时解除?
答:在一个事务对数据加上X锁后,并且对数据进行了修改,如果过早地解锁,有可能使其它事务读取了未提交的数据(且随后被退回),引起丢失其它事务更新。因此X锁的解除应合并到事务的结束(COMMIT和ROLLBACK)操作中。
S锁只允许读数据,所以S锁可以随时解除。
6.12 什么是封锁的粒度?封锁粒度的大小对并发系统有什么影响?
答:封锁的粒度——封锁对象的大小。
封锁粒度与系统的并发度和并发控制的开销密切相关。封锁粒度越大、并发度越小、系统开销越小;封锁粒度越小、并发度越高、系统开销越大。
6.13 在封锁技术中,封锁协议可分哪三个级别?各解决了并发调度中的什么问题?
答:一级封锁协议:事务在修改数据前加X锁,直到事务结束才释放。解决了丢失数据更新问题。
二级封锁协议:事务在修改数据前加X锁,直到事务结束才释放。事务在读数据前加S锁,读完数据后立即释放S锁。解决了丢失更新问题、读脏数据问题。
三级封锁协议:事务在修改数据前加X锁,直到事务结束才释放。事务在读数据前加S
共分享92篇相关文档