Debug客栈
做一个爱分享的程序猿
Debug客栈
数据库复习题 考试题库(简答题)

友情提示:此篇文章大约需要阅读 15分钟48秒,不足之处请多指教,感谢你的阅读。订阅本站

1.什么是基本表?什么是视图?两者的区别和联系是什么?

基本表是实际存储在数据库中的二维表,它是本身独立存在的表,在SQL中一个关系就对应一个表。

视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。

区别:视图是从一个或几个基本表(或视图)中导出的表,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。

2.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?

数据与程序的物理独立性是指当数据库的存储结构改变,将模式/内模式映象作相应改变,使模式保持不变,从而应用程序不必改变。

数据与程序的逻辑独立性是指当模式改变时,将外模式/模式的映象作相应改变,使外模式保持不变,从而应用程序不用修改。

3.简述事务所具有的ACID特性。

事务的ACID特性是:

原子性:事务是一个不可分割的单位。

一致性:事务对数据库操作的结果是将数据库从一个一致性状态变为另一个一致性状态。

 隔离性:多个事务的并发执行不互相干扰。

 持续性:事务一旦提交,它对数据库中数据的改变就是永久性的。

4.登记日志文件时为什么必须先写日志文件,后写数据库?

把数据的修改写到数据库和把对数据的修改操作写到日志文件是两个不同的操作,在两个操作之间可能会发生故障如果先写了数据库修改,而在日志文件中没有登记这个修改,在恢复的时候就无法恢复这个修改了;如果先写日志,但没有修改数据库,按日志恢复时只是多执行一次撤消操作,并不影响数据库的正确性,为了安全,一定要先写日志文件。

5.DBMS的完整性控制机制应具有哪些功能?

应具有三方面的功能:

(1)定义功能,提供定义完整性条件的机制

(2)检查功能,检查用户发出的操作请求是否违背了完整性约束条件。

(3)如果发现用户的操作请求违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

6.什么是数据字典?数据字典的作用是什么?

数据字典是系统中各类数据描述的集合

作用:供DBMS在处理数据存取时快速查找有关对象的信息,供DBA查询掌握系统的运行情况,支持数据库设计和系统分析。

7.什么样的并发调度是正确的调度?

多个事务的并发执行的结果与按某一次序串行的执行它们时的结果相同,我们说这样的并发调度是可串行化的调度,如果一个调度是可串行化的,那么认为它是正确的调度。

8.试叙述事务的4个性质,并结实每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?

1)事务的原子性是指一个事务对DB的所以操作,是一个不可分割的工作单位。原子性是由DBMS的事务管理子系统实现的。事务的原子性保证了DBS的完整性。

2)事务的一致性是指数据不会因事务的执行而遭受破坏。事务的一致性是由DBMS的完整性子系统实现的。事务的一致性保证数据库的完整性。

3)事务的隔离性是指事务的并发执行与这些事务单独执行时结果一样。事务的隔离性是由DBMS的并发控制子系统实现的。隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。

4)事务的持久性,是指事务对DB的更新应永久地反映在DB中。持久性是由DBMS的恢复管理子系统实现的。持久性能保证DB具有可恢复性。

9.事务的COMMIT语句和ROLLBACK语句的功能是什么?

COMMIT语句表示事务执行成功地接结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。

ROLLBACK语句表示事务执行不成功地结束(应该“回退”)此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。

10.日志文件中记载了哪些内容?

日志文件中记载了事务开始标记、事务结束标记以及事务对DB的插入、删除和修改的每一次操作前后的值。

11.并发操作会产生几种不一致情况?用什么方法避免各种不一致的情况?

并发操作可能会产生丢失修改,不能重复读和读”脏”数据这三种不一致情况,采用封锁机制来进行并发控制,可避各种不一致情况。一级封锁协议可以避免丢失修改,二级封锁协议可以避免丢失修改和读”脏”数据,三级封锁协议可以避免丢失修改、不能重复读和读”脏”数据。

12.X封锁与S封锁有什么区别?

X锁与S锁的区别如图所示:

https://www.debuginn.cn/wp-content/uploads/2019/02/Screenshot_1-9.png

13.为什么要设立日志文件?

设立日志文件的目的,是为了记录对数库中数据的每一次更新操作,从而DBMS可以根据日志文件进行事务故障的恢复和糸统故障的恢复,并可结合后授副本进去介质故障的恢复。

14.怎样进行糸统故障的恢复?

系统故障造成数据库不一致状态的原因有两个,一是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。因此恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。

⑴ 正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION记录,无相应的COMMIT记录),将其事务标识记入撤消(UNDO)队列。

⑵ 对撤消队列中的各个事务进行撤消(UNDO)处理。

进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

⑶ 对重做队列中的各个事务进行重做(REDO)处理。

进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库。

15.怎样进行介质故障的恢复?

发生介质故障后,磁盘上的物理数据和日志文件被破坏,恢复方法是重装数据库,然后重做已完成的事务。具体地说就是:

⑴ 装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。对于动态转储的数据库副本,还须同时装入转储开始时刻的日志文件副本,利用恢复系统故障的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。

⑵ 装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。即:

首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。

然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。

16.数据库在运行过程中可能产生的故障有哪几类?

1)事物故障

事物在运行过程中由于种种原因,如输入数据的错误,运算溢出,违反了某些完整性限制,某些应用程序的错误,以及并行事物发生死锁等,使事物未能运行到正常中指点之前就被撤消了,这种情况称为“事物故障”。

2)系统故障

系统鼓掌是指系统在运行过程中,由于某些原因,如OS和DBMS代码错误,操作员操作事物。特定类型的硬件错误(CPU故障),突然停电等造成系统停止运行,致使事物在执行过程中以非控方式中指。这时。内存中的信息丢失,而存储在外存储上的数据未受影响,这种情况称为“系统故障”。

3)介质故障

系统在运行过程中,由于某种硬件故障,如磁盘损坏,磁头碰撞,或由于OS的某种潜在的错误。瞬间强磁场干扰,使存储在外存的数据部分损失或全部损失,称之为“介质故障”。

4)计算机病毒

计算机病毒是一种人为的故障和破坏,它是一种计算机程序,通过读写染有病毒的计算机系统中的程序和数据这些病毒可以迅速繁殖和传播,危害计算机系统和数据库。

17.怎样进行事务故障的恢复?

事务故障是指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统的恢复步骤是:

⑴ 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。

⑵ 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。这样,如果记录中是插入操作,则相当于做删除操作(因此时“更新前的值”为空)。若记录中是删除操作,则做插入操作,若是修改操作,则相当于用修改前值代替修改后值。

⑶ 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。

⑷ 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。

18.试述文件系统与数据库系统的区别和联系。

文件系统与数据库系统的区别是:

文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。

数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。

文件系统与数据库系统的联系:文件系统与数据库系统都是计算机系统中管理数据中管理数据的软件。

19.DBA的职责是什么?

1)决定数据库中的信息内容和结构

2)决定数据库的存储结构和存取策略

3)定义数据的安全性要求和完整性约束条件

4)监控数据库的使用和运行

5)数据库的改进和重组重构

20.试述查询优化的一般步骤。

把查询转换成某种内部表示

  • 把语法树转换成标准(优化)形式
  • 择低层的存取路径
  • 生成查询计划,选择代价最小的

21.数据库中为什么要有恢复子系统?它的功能是什么?

因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失。

功能:是把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态),这就是数据库的恢复。

22.数据库转储的意义是什么?常用的有几种方法?

数据转储是数据库恢复中采用的基本技术,所谓转储即DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。当数据库遭到破坏后可以将后备副本重新载入,将数据库恢复到转储时的状态。

转储可分为静态转储和动态转储。静态转储是在系统中无运行事务时进行的转储操作。动态转储是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。

转储还可分为海量转储和增量转储两种方式。

23.什么是日志文件?为什么要设立日志文件?

日志文件是用来记录事务对数据库的更新操作的文件。

目的是进行事物故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。

24.试述使用检查点方法进行恢复的步骤。

1)从重新开始文件中找到追后一个检查点记录在日志文件中的地址,由该地址在体制文件中找到最后一个检查点记录。

2)由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。

这里建立两个事务队列:

①UNDO-LIST:需要执行undo操作的事务集合;

②REDO-LIST需要执行redo操作的事务集合。

把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂时为空。

检查点开始正向扫描日志文件:

①如果有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列;

②如有提交的事务T j,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束;

4)对UNDO-LIST中的每个事务执行UNDO操作,对REDO-LIST中的每个事务执行REDO操作。

25.什么是数据库镜像?它有什么用途?

根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据恢复过去,即DBMS自动保证镜像数据与主数据的一致性。

用途:

1)一旦出现介质故障,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库恢复,不需要关闭系统和重装数据库副本。

2)在没有出现故障时,数据库镜像还可以并发操作。提高数据库的可用性。

26.请给出预防死锁的若干方法。

在数据库中,产生 死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。

预防死锁通常有两种方法:

1)一次封锁法。一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。

2)顺序封锁法。顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

27.请给出检测死锁发生的方法,当发生死锁后如何解决死锁?

一般使用超时法或事务等待图法。

① 超时法

如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但其不足也很明显。一是有可能误判死锁,事务因为其他原因使等待时间超过时限,系统会误认为发生了死锁。二是时限若设置得太长,死锁发生后不能及时发现。

②等待图法

事务等待图是一个有向图G=(T,U)。 T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2 ,则T1、T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地(比如每隔1分钟)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。

DBMS的并发控制子系统一旦检测到系统中存在死锁,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢复。

28.试述两段锁协议的概念。

所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。

1)在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;

2)在释放一个封锁之后,事务不再申请和获得对该数据的封锁。

所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。在这个阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这个阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。

29.什么是数据库的完整性约束条件?

答:完整性约束条件是指数据库中的数据应满足的语义约束条件。一般可以分为六类:

1)静态列级约束

2)静态元组约束

3)静态关系约束

  • 动态列级约束
  • 动态元组约束
  • 动态关系约束
https://www.debuginn.cn/wp-content/uploads/2019/02/002-2.jpg
赞赏
本文链接:https://www.debuginn.cn/348.html
本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可,转载请保留此文章链接
相关链接: 首页  |  引导页  |  赞助本站  |  @QQ  |  @微博  |  @Bilibili  |  @推特  |  @Github  |  阿里云活动
社会主义核心价值观: 富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善

发表评论

textsms
account_circle
email

Debug客栈

数据库复习题 考试题库(简答题)
1.什么是基本表?什么是视图?两者的区别和联系是什么? 基本表是实际存储在数据库中的二维表,它是本身独立存在的表,在SQL中一个关系就对应一个表。 视图是关系数据库系统提供给…
扫描二维码继续阅读
2018-07-07