不允许为空(NULL),且主键值必须唯一。
UNIQUE:强制限定某列的值具有唯一性,即限定表中不能有两行包含相同的非空值,一个表可以有多个UNIQUE约束。
36、下列关于完整性约束的叙述中,正确的是( CD )。 A、一个表可以有多个PRIMARY KEY约束 B、在任何情况下PRIMARY KEY约束都可以被删除 C、一个表可以有多个UNIQUE约束
D、使用NULL/NOT NULL可以设定某列的值允许为空值或不允许为空值 ★考核知识点: 基本表的创建、修改与删除 附1.1.36(考核知识点解释):
PRIMARY KEY:设定表的主键,所为主键值用来唯一标识表中行的一列或几列,主键不允许为空(NULL),且主键值必须唯一。一个表只能有一个PRIMARY KEY约束。而且当PRIMARY KEY约束由另一表的FOREIGN KEY约束引用时,不能删除PRIMARY KEY约束;要删除它,必须先删除FOREIGN KEY约束。
UNIQUE:强制限定某列的值具有唯一性,即限定表中不能有两行包含相同的非空值,一个表可以有多个UNIQUE约束。
NULL/NOT NULL:设定某列的值允许为空值或不允许为空值。 37、下列关于索引的叙述中,正确的是( ABD )。 A、使用索引可以加快数据检索速度
B、使用ORDER BY和GROUP BY子句进行查询时,可以显著减少分组和排序的时间 C、当对基本表中的数据进行增加、删除和修改操作时,使用索引可以加快数据的维护速度
D、一个基本表上可以创建多个非聚集索引 ★考核知识点: 索引的创建与删除 附1.1.37(考核知识点解释):
建立适当的索引可以大大加快查询数据的速度,提高系统性能。第一,通过在基本表上创建一个或多个索引,可以为系统提供多种存取路径,从而加快数据检索速度。第二,通过创建唯一性索引,可以保证每一行数据的唯一性。第三,在使用ORDER BY和GROUP BY子句进行查询时,可以显著减少分组和排序的时间。第四,当多表间具有一定完整性参考约束时,可以利用索引加速表和表之间的连接速度。
虽然增加索引具有如此多的优点,但如果随意创建索引则可能降低系统整体性能。第一,系统创建和维护索引要消耗时间;第二,索引本身也需要占用存储空间,比如聚
集索引需要很大的存储空间;第三,当对基本表中的数据进行增加、删除和修改操作时,系统要对索引进行动态维护,从而降低了数据的维护速度。
非聚集索引与书籍中的索引目录类似,索引和数据分别存储在不同地方,索引带有指针指向数据的存储位置,因此一个基本表允许创建多个非聚集索引。 38、下列关于视图的叙述中,错误的是( BC )。
A、视图是关系数据库系统提供给用户的一种以多角度观察和访问数据库中数据的重要方式
B、视图中存放实际数据,因此可以和基本表一样被查询、修改、删除 C、所有视图都可以进行更新操作 D、可以在一个视图上再定义视图 ★考核知识点: 视图
附1.1.38(考核知识点解释):
视图是关系数据库系统提供给用户的一种以多角度观察和访问数据库中数据的重要方式。视图是从一个或几个基本表(或视图)导出的表,是一个逻辑表。数据库中只存储视图的定义,而不存放数据。视图一旦被定义,可以和基本表一样被查询、删除,还可以在一个视图上再定义视图,但对视图的更新操作有一定的限制。 39、下列关于关系模式规范化的叙述中,正确的是( AD )。 A、学生(学号,姓名,系别)属于第三范式
B、属于第二范式的关系模式不存在插入异常,只存在删除异常 C、满足第二范式的关系模式不存在删除异常,只存在插入异常 D、属于第三范式的关系模式不存在插入异常和删除异常 ★考核知识点: 关系模式的规范化 附1.1.39(考核知识点解释):
(1)第一范式(1NF)
如果关系模式R(U)中每个属性都是不可分割的数据项,则称R属于第一范式,记作R∈1NF。
(2)第二范式(2NF)
设有R(U)∈1NF,且其每一个非主属性完全函数依赖于码,则称R(U) 满足2NF,记作R∈2NF。
要讨论R是否属于第二范式,不但要确定R的属性,还要确定R的所有函数依赖。此时一个关系模式R可由三元组确定,记为R(U,F),其中U为R的属性集,F为R的函数依赖。
例如,关系模式教学1((学号, 姓名, 系别, 系主任, 课程号, 成绩),(学号→姓名,学号→系别,学号→系主任,系别→系主任,(学号,课程号)→成绩))。
为了使教学1属于2NF,需要将其分解,以消除非主属性对码的部分依赖。可以将教学1分解成两个关系模式:
教学11(学号, 姓名, 系别, 系主任) 教学12(学号, 课程号, 成绩) 仍存在插入异常和删除异常。 (3)第三范式(3NF)
若关系模式R(U)∈2NF,且每个非主属性都不传递依赖于码则称R属于第三范式,记为R∈3NF。
关系模式教学11存在系主任对学号的传递依赖,所以不属于第三范式,将它分解为: 教学111(学号,姓名,系别) 教学112(系别,系主任) 消除了插入异常和删除异常。
40、下列故障类型中,可能会破坏数据库的故障包括( CD )。 A、事务故障
B、系统故障
C、介质故障
D、计算机病毒
★考核知识点: 故障的类型 附1.1.40(考核知识点解释):
对于事务故障,数据库的恢复子系统要能够在不影响其他事务运行的情况下,强行让事务回滚(ROLLBACK),以撤销该事务对数据库已经作出的任何修改,从而恢复数据库到正确的状态。
对于系统故障,数据库的恢复子系统要能够在系统重新启动后,一方面对所有非正常终止的事务强行回滚(ROLLBACK),还需要重做(REDO)所有已提交的事务,从而将数据库真正恢复到一致状态。
介质故障不仅影响正在存取这部分数据的所有事务,而且会破坏全部或部分物理数据库,因此虽然发生概率较小,但是破坏性最大。
计算机病毒是一种人为的破坏性程序,它可以像生物病毒一样繁殖、传播,并造成对包括数据库在内的计算机系统的破坏。 41、数据库恢复的实现技术主要包括( AB )。 A、定期数据转储
B、建立日志文件
C、采用良好的防毒、杀毒工具
D、编写应用程序时考虑可能发生的故障并采取相应的预防措施
★考核知识点: 恢复的实现技术 附1.1.41(考核知识点解释):
实现恢复的基本原理很简单,就是“冗余”,即数据的重复存储。当数据库任一部分遭到破坏或者不正确时,可以通过存储在系统其他位置的冗余数据进行数据重建。建立冗余数据最常用的技术是定期数据转储和建立日志文件。
42、事务在运行过程中,系统写入日志文件中的操作包括对数据库的( ABC )。 A、插入操作
B、修改操作
C、删除操作
D、查询操作
★考核知识点: 恢复的实现技术 附1.1.42(考核知识点解释):
一般日志文件的记录内容包括:执行操作的事务标识;操作类型(插入、删除或修改);操作对象;更新前数据的旧值(对插入操作,此项为空);更新后数据的新值(对删除操作,此项为空);更新日期和时间。
43、为了保证数据库的可恢复性,在建立日志文件时必须遵循的原则包括( ABD )。 A、记录的次序严格按并发事务执行的时间次序 B、必须先写日志文件,后写数据库 C、必须先写数据库,后写日志文件
D、必须将数据库的所有更新操作记录到日志文件中 ★考核知识点: 恢复的实现技术 附1.1.43(考核知识点解释):
日志文件是记录事务对数据库的更新操作的文件。事务在运行过程中,系统把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作都作为一条记录写入日志文件中。为了保证数据库的可恢复性,在建立日志文件时必须遵循:(1)记录的次序严格按并发事务执行的时间次序。(2)必须先写日志文件,后写数据库。 44、必须使用日志文件的情况包括( ABC )。 A、事务故障恢复
B、系统故障恢复
C、动态转储方式下的数据库恢复 D、静态转储方式下的数据库恢复 ★考核知识点: 恢复的实现技术 附1.1.44(考核知识点解释):
日志文件的使用包括:
(1)事务故障恢复和系统故障恢复时必须使用日志文件。
(2)在动态存储方式中必须建立日志文件,后备副本和日志文件配合使用才能有效地恢复数据库。
(3)在静态存储方式中,也可以使用日志文件。当使用后备副本恢复数据库到存储结束时刻的正确状态后,利用日志文件,可以把已经完成的事务进行重做(REDO)处理,对因故障未能完成的事务进行撤销(UNDO)处理。 45、下列关于系统故障恢复的描述,正确的是( AC )。 A、从日志文件开头向后扫描
B、从日志文件最后向前扫描
C、需要建立撤销队列,并对该队列中的每个事务做撤销处理
D、既有BEGIN TRANSACTION记录也有COMMIT记录的事务应放入撤销队列中 ★考核知识点: 恢复的策略方法 附1.1.45(考核知识点解释):
系统故障的恢复实在系统重新启动时自动完成的,无需用户干预,恢复步骤是: (1)从日志文件开头向后扫描,找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION记录,而没有COMMIT记录),将它们的事务标记送入撤销(UNDO)队列。同时找出故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将它们的事务标记送入重做(REDO)队列。
(2)对撤销队列中的各个事务进行撤销(UNDO)处理,即从后向前扫描日志文件,对每个UNDO事务的更新操作执行逆操作。
(3)对重做队列中的各个事务进行重做(REDO)处理,即从前向后扫描日志文件,对每个REDO事务重新执行日志文件记录的操作。
46、要解决对数据库并发操作所带来的读“脏数据”问题,可以采用( BC )。 A、一级封锁协议 C、三级封锁协议 ★考核知识点: 封锁
附1.1.46(考核知识点解释):
在一级封锁协议中,如果仅仅是读数据而不对其进行修改,则不需要加锁,所以它不能保证可重复读和不读“脏数据”。
使用二级封锁协议除了可以防止丢失修改,还可以防止读“脏数据”。在二级封锁协议中,由于读完数据后即可解除S锁,因此不能保证可重复读。
使用三级封锁协议不仅可以防止丢失修改和读“脏数据”,还能够防止不可重复读。 47、在数据库中解决死锁问题可以( ABC )。 A、使用一次封锁法预防死锁发生 B、使用顺序封锁法预防死锁发生
C、定期诊断系统中是否发生死锁,若有则撤销某个事务来解除之
B、二级封锁协议 D、都可以