Java教程

数据库原理题型 - 问答题

本文主要是介绍数据库原理题型 - 问答题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

问答题


情报

三 问答题(共20分,共3题)
内容在第6章、第10章、第11章

分析:

  • 理论上属于每章各一道
  • 第六章 - 关系数据理论
  • 第十章 - 数据库恢复技术
  • 第十一章 - 并发控制

A组

第六章

1.简述主码、候选码、超码之间的区别。

主码:从多个候选码中任意选出一个,即为主码。
候选码:是最小的超码,他们的任意真子集都不能称为超码。
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集合中唯一的标识一个实体。

2.假设某商业集团数据库中有一关系模式 R 如下:
R(商店编号,商品编号,数量,部门编号,负责人),如果规定:

  • 每个商店的每种商品只在一个部门销售;
  • 每个商店的每个部门只有一个负责人;
  • 每个商店的每种商品只有一个库存数量。

试回答下列问题:
(1) 根据上述规定,写出关系模式 R 的基本函数依赖;

(商店编号,商品编号) →部门编号
(商店编号,部门编号) →负责人
(商店编号,商品编号) →数量

(2) 找出关系模式 R 的码,即超码的最小集;

R的候选码是 (商店编号,商品编号) 

(3) 试问关系模式 R 最高已经达到第几范式?为什么?

因为R中存在着非主属性“负责人”对候选码 (商店编号、商品编号)的传递函数
依赖,所以R属于2NF,R不属于3NF。

3.设有关系模式R(A,B,C,D,E,F),其函数依赖集为:F={E→D,C→B,CE→F,B→A},请回答如下问题:
(1) 找出关系模式R的码,即超码的最小集;

超码最小集合是:CE,因为其他属性函数依赖于CE;

(2) R最高属于第几范式,为什么?

R最高属于1NF,因为非主属性A、B、D均部分函数依赖于码CE。

4.设有一个学习关系模式R如下:
R(C,T,S,N,G),其中C代表课程号,T代表教师的职工号,S代表学生号,N代表学生的姓名,G代表成绩。他们之间的语义有:

  • 每一门课由一名教师讲授;
  • 每个学生选修的每门课只有一个成绩;
  • 学生的学号可以唯一确定一个学生;

根据题意,请回答以下问题:
(1)写出关系模式中存在的函数依赖关系。

F={ C—>T;(S,C)—>G;S—>N }

(2)求该关系模式的码,即超码的最小集合。

(S,C)

(3)R属于第几范式,说明理由。

R属于第一范式,因为存在非主属性对码的部分函数依赖,
属性T和属性N对码(S,C)是部分函数依赖。

第十章

1.什么是事务,事务有哪些特性?

事务是DBMS的基本工作单位,它是用户定义的一组逻辑一致的程序序列。
它是一个不可分割的工作单位,其中包含的所有操作,要么都执行,要么都不执行。
事务具有四个特性:原子性、一致性、隔离性、持续性。

2.事务的COMMIT语句和ROLLBACK语句的功能是什么。

COMMIT是表示提交,就是提交事务的所有操作。
具体地说,就是将事务中的所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
ROLLBACK指的是回滚,即是在事务的运行过程中,发生了某种故障,事务不能继续,撤销该事务对数据库的所有更新操作。

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

答:把对数据库的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只能完成了一个。
如果先写了数据库的修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。
如果先写了日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。
所以为了安全,一定要先写日志文件,然后写数据库的修改。

4.数据库运行的过程中,某个存储了数据的磁盘扇区坏了。针对这类故障,请写出相应的恢复策略与方法(假设你拥有某个时刻T的数据库的海量静态转储副本,并拥有T时刻到故障发生时刻的日志文件副本)。

答:存储了数据的磁盘扇区坏了属于介质故障,介质故障的恢复方法如下:
(1)装入最新的数据库后备副本(离故障发生时刻最近的转储副本,这里是时刻T的数据库的海量静态转储副本),使数据库恢复到最近一次转储时的一致性状态。
(2)装入转储结束时刻的日志文件副本(T时刻到故障发生时刻的日志文件副本)。
(3)启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。

5.系统掉电属于什么数据库故障,简述系统重新启动后的恢复步骤。

答:系统掉电、操作系统死机属于系统故障
系统在重新启动后的数据库恢复步骤为:
(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。
(2)对撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。
(3)对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库

6.某数据库管理系统具有检查点的恢复技术,如图1所示,T1、T2、T3、T4、T5、T6表示运行的事务,线条的左边为事务的开始时间,线条的右端为事务预计的结束时间。假设系统在tb时刻建立了一个检查点,但系统经过短暂的一些时间后在tf时刻发生了系统故障,当数据库管理系统重新启动时,请回答哪些事务将撤消,哪些事务将重做,并说明理由。
在这里插入图片描述

答:需要撤消的事务有:T5、T6;需要重做的事务有:T3、T4。
事务T1、T2在检查点之前已经完成,并且数据已经更新到数据库,因此不需要重做;
事务T3、T4在检查点之前并未完成,但在系统故障点之前已经完成,因此需要重做;事务T5、T6在发生系统故障的时候尚未完成,因此必须撤消。

第十一章

1.简述数据库系统中活锁和死锁的含义。避免活锁的简单方法是什么。

在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

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

答:可串行化的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化的调度。

3.设T1、T2、T3是如下的3个事务
T1:A:=A+2; T2:A:=A2; T3:A:=AA; (AA2)
设A的初值为0,若这三个事务允许并行执行,则可有多少种可能的正确结果。请一一列举出来。

答: 三个事务串行执行有6种组合
当串行执行的顺序为T1-T2-T3,执行结果等于16;
当串行执行的顺序为T1-T3-T2,执行结果等于8;
当串行执行的顺序为T2-T1-T3,执行结果等于4;
当串行执行的顺序为T2-T3-T1,执行结果等于2;
当串行执行的顺序为T3-T1-T2,执行结果等于4;
当串行执行的顺序为T3-T2-T1,执行结果等于2。

【分析】:
冲突可串行化:一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务的次序可以得到另一个调度Sc‘,如果Sc’是串行化的,称调度Sc是冲突可串行化调度。
一个调度是冲突可串行化的,一定是可串行化的调度。


4.已知有三个事务的一个调度R3(B)R1(A)W3(B)R2(B)R2(A)W2(B)R1(B)W1(A),试问该调度是否是冲突可串行化调度?为什么。

答:该调度是冲突可串行化调度,理由如下:
R1(A)和W3(B)是不冲突操作,交换位置可得:
R3(B)W3(B)R1(A)R2(B)R2(A)W2(B)R1(B)W1(A) 
R1(A)和R2(B)、R2(A)、W2(B)均为不冲突操作,交换位置可得:
R3(B)W3(B)R2(B)R2(A)W2(B)R1(A)R1(B)W1(A),这是一个串行调度。
通过交换不冲突操作可以得到一个串行调度,所以调度R3(B)R1(A)W3(B)R2(B)R2(A)W2(B)R1(B)W1(A)是冲突可串行化的调度。

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

答:两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
1)在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;
2)在释放一个封锁之后,事务不再申请和获得任何其他封锁。
“两段”的含义是,事务分为两个阶段:第一阶段是获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。

B组

3、试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

答:关系模型的完整性规则是对关系的某种约束条件。
关系模型中可以有3类完整性约束:实体完整性、参照完整性和用户定义的完整性。
实体完整性规则:主属性不能取空值。
参照完整性规则:外部码要么取空值,要么等于被参照关系中的某个主码值。
参照关系中外部码可以为空,表示该属性的值尚不确定。但前提条件是外部码本身不是所在关系的主属性。

1、简述事务概念及四个特性。

事务是恢复和并发控制的基本单位。
事务的特性(ACID特性) 
A:原子性(Atomicity) 
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 
B:一致性(Consistency) 
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 
C:隔离性(Isolation) 
一个事务的执行不能被其他事务干扰。 
D:持续性/永久性(Durability) 
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 

3.简述数据库系统中活锁和死锁的含义。避免活锁的简单方法是什么?

在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。
当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

5.简述数据库的完整性规则的三个组成部分,并对这三个部分进行描述。

关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

  1. 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。
  2. 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为(给出类似定义即可):
    · 或者取空值(F的每个属性值均为空值);
    · 或者等于S中某个元组的主码值。
  3. 用户定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。

3.什么是日志文件?简述日志文件恢复事务的过程。(6分)
答:日志文件是用来记录事务对数据库的更新操作的文件。
恢复事务的过程:
(1)反向扫描文件日志,查找该事务的更新操作;
(2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库;
(3)继续反向扫描文件日志,查找该事务的其它更新操作,并做同样处理;
(4)如此处理下去,直至读到该事务的开始标记,事务故障恢复就完成了。


4.设有关系模式R(A,B,C,D),数据依赖集F={A→B,B→A,AC→D,BC→D,AD→C,BD→C,A→→CD,B→→CD}。(12分)
(1)求R的主码;
答:候选码为AC、BC、AD、BD。可选其中一个为主码。
(2)R是否为4NF?为什么?
答:不服从4NF。在多值依赖中,决定属性中不包含码。
(3)R是否为BCNF?为什么?
答:不服从BCNF。在函数依赖中,决定属性中不包含码。
(4)R是否为3NF?为什么?
答:服从3NF。该模式中不存在非主属性。


这篇关于数据库原理题型 - 问答题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!