致性的副本,因为在备份开始到结束期间,数据库中无任何事务运行,数据的一致性也就不会受到任何影响。但由于备份是个耗时的工作,备份期间不允许事务运行将会影响数据库的使用,降低数据库的可用性。动态备份期间允许对数据库进行操作,它可以克服静态备份的缺点,但由于备份期间允许对数据库进行修改,所以得到的副本不能保证数据的一致性。
9.日志文件有什么作用?记录日志的原则是什么?
参考答案:日志是一个与数据库文件分开的文件。它存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退等数据库变化。
日志文件可以用来进行事务故障恢复和系统故障恢复,并结合备份进行介质故障恢复。具体作用包括:
(1)事务故障和系统故障的恢复必须要利用日志文件,利用日志文件对发生故障的事务进行撤销(UNDO)处理;对故障发生时未完成的事务进行撤销(UNDO)处理,而对已经提交的事务要进行重做(REDO)处理。
(2)在动态备份中,必须建立日志文件,备份和日志文件综合起来才能够有效地恢复数据库。
(3)在静态备份中,也可以建立日志文件。重装备份后能够将数据库恢复到备份时刻的正确状态,然后利用日志文件,把已完成的事务进行重做(REDO)处理,对故障发生时尚未完成的事务进行撤销(UNDO)处理。
日志的记录要遵循两条原则:
(1)必须严格的按照并发事务的执行次序记录。 (2)必须先记录日志,后写数据库。
10.SQL Server中有哪几种恢复模式?哪几种备份类型?
参考答案:三个恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。 简单恢复模式不备份事务日志,简单恢复模式可最大程度地减少事务日志的管理开销。如果数据库损坏,则简单恢复模式将面临极大的工作丢失风险。完全恢复模式是默认的恢复模式。在该模式下,需要对事务日志进行手工管理。该模式的优点是可以恢复到数据库失败或者指定的时间点上。缺点是,如果不进行管理,事务日志将会快速增长,消耗磁盘空间。大容量日志恢复模式类似于完整恢复模式,但其不同的是,一些将产生大量日志记录的操作的记录会被精简。
SQL Server中的备份主要分为以下四种类型:
(1)完整备份:指对数据库进行完整的备份,包括所有的数据以及数据库对象。 (2)事务日志备份:指对数据库中发生的事务进行备份,包括从上次正确备份之后,到目前为止所有已经完成的事务,但必须配合完整备份才能进行数据库恢复。
(3)差异备份:指将最近一次完整备份以来所做的数据库修改进行备份。
(4)文件(组)备份:只备份数据库中的个别文件(组),要求在数据库设计时就要考虑到,将某些表分到文件(组),备份时单独进行备份。
11.编写两个事务并使它们并发执行。在第一个事务中,先从读者表Patron中查询“学生”读者的信息,等待30秒后再次查询“学生”读者的信息;另一个事务将PatronID为S0120080201的读者的类型由“学生”修改为“教师”。要求:保证第一个事务中的两次查
询结果一致。
参考代码如下:
USE TSG GO
BEGIN TRAN T1
SELECT * FROM Patron WITH(HOLDLOCK) WHERE Type='学生'
WAITFOR DELAY '00:00:30'
SELECT * FROM Patron WITH(HOLDLOCK) WHERE Type='学生' COMMIT TRAN
USE TSG GO
BEGIN TRAN T2 UPDATE Patron SET Type ='教师'
WHERE PatronID ='S0120080201' COMMIT TRAN
第9章 关系数据库规范化理论
1.解释下列概念和术语:函数依赖、完全函数依赖、部分函数依赖、传递函数依赖、候选键、主键、外键、主属性、非主属性、1NF、2NF、3NF和BCNF。
参考答案:函数依赖:设关系模式R(U),是属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y,或Y函数依赖于X,记作X→Y。
完全函数依赖和部分函数依赖:在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X?,都有X??Y,则称Y完全函数依赖于X,记作:X???Y。若X→Y,Y不完全函数依赖于X,则称Y部分函数依赖于X,记作:X???Y。
传递函数依赖:在关系模式R(U)中,如果X→Y,Y→Z,且Y?X,Y?X,则称Z传递函
T数依赖于X,记作:X???Y。
F候选键:设K为R 中的属性或属性组合,若K???U(即K完全函数决定R的
FP全部属性U),则K为R的候选键(Candidate Key),简称键。
主键:若候选键多于一个,则选定其中的一个为主键(Primary Key)。
外键:关系模式R中属性或属性组X并非R的键,但X是另一个关系模式的键,则称X是R的外键(Foreign key),也称外码。
主属性和非主属性:包含在任何一个候选键中的属性,叫做主属性(Prime Attribute);不包含在任何候选键中的属性称为非主属性(Nonprime Attribute)或非键属性(Non-key Attribute)。
1NF:如果关系模式R,其所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记作R?1NF。
2NF:如果关系模式R?1NF,且R中的每一个非主属性都完全函数依赖于R的键,则R?2NF。
3NF:如果关系模式R?2NF,且R中的每一个非主属性都不传递函数依赖于R的键,则R?3NF。
BCNF:如果关系模式R?1NF,并且R中的任何一个非平凡的函数依赖X→Y(即Y?X),X必含有码,则R?BCNF。
2.现有一个关系模式:借阅(书号,书名,库存数,读者号,借期,还期),假如同一本书允许一个读者多次借阅,但不能同时对一种书借多本。请给出该关系模式的键。
参考答案:键为(书号,读者号,借期)。
3.设有一个反映工程及其所使用相关材料信息的关系模式:R(工程号,工程名,工程地址,开工日期,完工日期,材料号,材料名称,使用数量)。如果规定:每个工程和每种材料分别由工程号和材料号唯一标识;每个工程的地址、开工日期、完工日期唯一;不同工程的地址、开工和完工日期可能相同;工程名与材料名称均有重名;每个工程使用若干种材料,每种材料可应用于若干工程中,每个工程使用某种材料有一个使用数量。
(1)根据上述规定,写出模式R的基本函数依赖(FD)和候选键。 (2)判定R最高达到第几范式,并说明理由。
(3)将R规范到3NF。 参考答案:
(1)FD:工程号→工程名,工程号→工程地址,工程号→开工日期,工程号→完工日期,材料号→材料名称,(工程号,材料号)→使用数量;候选键:(工程号,材料号)。
(2)1NF,存在非主属性工程名、工程地址、开工日期、完工日期和材料名称部分函数依赖于键(工程号,材料号)。
(3)R1(工程号,工程名,工程地址,开工日期,完工日期); R2(材料号,材料名称);
R3(工程号,材料号,使用数量)。
4.给定一个选课关系模式SC (学号,姓名,年龄,班级,辅导员,课程名称,成绩,学分)。如果规定:学号唯一地标识一名学生,每名学生的姓名和年龄唯一,允许学生重名;一个班级包括若干学生,每个学生只属于一个班级;每个班级只有一个辅导员,一个辅导员可以负责多个班级;课程没有重名,每门课程对应一个学分,但不同的课程可能有相同的学分;每名学生可以选修多门课程,每门课程也可以供多名学生选修;一个学生选修一门课程有一个成绩。
(1)根据上述规定,写出关系模式SC满足的基本函数依赖(FD)和候选键。 (2)判定SC最高达到第几范式,并说明理由。
(3)如果SC不满足3NF,将其分解为满足3NF的模式集。 参考答案:
(1)FD:学号→姓名,学号→年龄,学号→班级,班级→辅导员,课程名称→学分,(学号,课程名称)→成绩;候选键:(学号,课程名称)。
(2)1NF,存在非主属性姓名、年龄、班级、辅导员和学分部分函数依赖于键(学号,课程名称)。
(3)S(学号,姓名,年龄,班级); CS(班级,辅导员);
CE(课程名称,学分)
SC(学号,课程名称,成绩)。
5.假设某旅馆业务规定,每个账单对应一个顾客,账单由发票号唯一标识,账单中包含一个顾客姓名、到达日期和顾客每日的消费明细,账单的格式如表9-2所示。
表9-2 旅馆账单格式
发票号 2344566 2344566 2344566 2344566
到达日期 2009-12-10 2009-12-10 2009-12-10 2009-12-10
顾客姓名 顾大局 顾大局 顾大局 顾大局
消费日期 2009-12-10 2009-12-10 2009-12-10 2009-12-11
项目 房租 餐费 电话费 餐费
金额 240.00 42.00 4.80 98.00
如果根据上述业务规则,设计一个关系模式:Bill(发票号,到达日期,顾客姓名,消费日期,项目,金额)。回答下列问题:
(1)结合账单格式给出关系模式Bill满足的基本函数依赖,并找出该模式的候选键。
(2)判断关系模式Bill满足的最高范式级别,并说明理由。 (3)如果关系模式Bill不满足BCNF,请将其规范化到高一级范式。 参考答案:
(1)FD:发票号→到达日期,发票号→顾客姓名,(发票号,消费日期,项目)→金额;候选键:(发票号,消费日期,项目)。
(2)1NF,存在非主属性到达日期、顾客姓名部分函数依赖于候选键(发票号,消费日期,项目)。
(3)B1(发票号,到达日期,顾客姓名);
B2(发票号,消费日期,项目,金额)。
6.设关系模式R(A, B, C, D)对应的一个关系r如表9-3所示。请给出r满足的基本函数依赖;如果r满足的函数依赖覆盖了所对应的关系模式R满足的全部函数依赖,请说明关系模式R最高满足哪一级范式。
参考答案:FD:D→A,AB→CD,BC→AD,BD→C,CD→B;
A a1 a1 a2 a1
表9-3 关系r的数据
B b1 b2 b1 b3
C c1 c2 c2 c1
D d2 d4 d1 d4
该模式不存在非主属性,而且D→A,D不含有码,因此R最高满足3NF。
7.给定一个关系模式PES(工程号,工程名,员工号,员工姓名,薪级,工资)。其中,工程号和员工号分别作为工程和员工的标识。表8-4所示是模式PES对应的一个关系实例。
(1)如果表9-4所示关系满足的函数依赖即为其对应关系模式PES所满足的函数依赖,那么请给出关系模式PES满足的基本函数依赖。
(2)试分析关系模式PES是否存在数据冗余问题,说明理由。
(3)分析关系模式PES是否存在插入和删除异常问题,并说明什么情况下可能发生。 (4)将PES分解为满足3NF的模式集。
表9-4 关系模式EPS的一个实例
工程号 201001 201001 201001 201002 201002
工程名 TPMS TPMS TEMPS TCT TCT
员工号 2004001 2002002 2001005 2004003 2004001
员工姓名 赵约翰 钱比利 孙凯文 孙凯文 赵约翰
薪级 A B C B A
工资 2000 3000 4000 3000 2000
参考答案:
(1)工程号→工程名,员工号→员工姓名,薪级→工资,(工程号,员工号)→薪级。 (2)存在数据冗余。一个工程有多少员工参加工程名就重复存储多少次;每个员工每参加一项工程,其姓名就重复存储一次;员工每参加参加一项工程,工资也会重复存储。
(3)存在插入异常,当工程没有开工时,没有员工参加工程,此时由于无法提供员工号,工程的名称等信息无法建立;同样如果一名员工没有参加任何工程,员工的信息也无法建立;当员工没有参加工程或工程没有开工时薪级工资信息也无法建立。存在删除异常,某个员工只参加一项工程,而由于某种原因需要退出该工程,当删除该员工参加此工程的记录时,连同员工的其它信息也会被删除;同样,如果某个工程只有一名员工参加,当删