数据库原理及应用期末考试复习题库+2017(1)(3) 下载本文

一、 选择题

1、DB、DBMS和DBS三者之间的关系是( B )

(A) DB包括DBMS和DBS (B) DBS包括DB和DBMS (C) DBMS包括DB和DBS (D)不能相互包括

2、DBMS通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的( D ) (A)可靠性(B)一致性 (C)完整性(D)安全性

3、E-R图是数据库设计的工具之一,它适用于建立数据库的( A ) (A)概念模型(B)逻辑模型 (C)结构模型(D)物理模型

4、SELECT语句使用关键字( A )可以把重复行屏蔽掉。 (A) DISTINCT (B) UNION (C) UNIQUE (D) TOP

5、SQL Server数据库是由文件组成的。下列关于数据库所包含的文件的说法中,正确的是( D ) (A)一个数据库默认将数据文件及日志文件归于主文件组 (B)一个数据库只能包含一个主要数据文件和一个日志文件

(C)一个数据库可包含多个次要数据文件,但只能包含一个日志文件 (D)一个数据库可包含多个次要数据文件和多个日志文件 6、SQL Server提供的单行注释语句的注释符是( B ) (A)’/*’(B)’--’ (C)’*/’(D)’//’ 7、SQL与C语言处理记录的方式是不同的。当将SQL语句嵌入到C语言程序时,为协调两者而引入( C ) (A)堆(B)栈

(C)游标(D)聚簇

8、SQL语言的一次查询的结果是一个( D ) (A)数据项(B)记录 (C)元组(D)表

9、SQL语言具有两种使用方式,分别称为交互式SQL和( C ) (A)编译式SQL (B)解释式SQL (C)嵌入式SQL (D)过程化SQL 10、SQL语言是( C )语言。 (A)层次数据库(B)网络数据库 (C)关系数据库(D)非数据库

11、SQL语言是关系数据库的标准语言,它是( B ) (A)过程化的(B)非过程化的 (C)格式化的(D)导航式的

12、X→Y,当下列( D )成立时,称为平凡函数依赖。 (A)X→Y;(B)Y→X; (C)X→Y=?;(D)都不正确。 13、按所使用的数据模型来分,数据库可分为( A )三种类型。 (A)层次、关系和网状(B)网状、环状和链状 (C)大型、中型和小型(D)独享、共享和分时

14、保护数据库,防止未经授权的或不合法的使用造成的数据泄露、更改破坏。这是指数据库的( A ) (A)安全性(B)完整性 (C)并发控制(D)恢复

15、表示事务执行成功的语句是( A )

- 1 -

(A) COMMIT (B) GO

(C) ROLLBACK (D) RETURN

16、不能激活触发器执行的事件是( A ) (A) SELECT (B) UPDATE (C) INSERT (D) DELETE

17、不是实体联系模型中的概念是( D ) (A)实体(B)属性(C)联系(D)数据表 18、层次模型不能直接表示( C ) (A)1:1联系(B)1:N联系

(C)M:N联系(D)1:1和1:N联系

19、从E-R模型向关系模型转换时,一个M:N联系转换为关系模式时,该关系模式的码是( C ) (A) N端实体的码 (B) M端实体的码

(C) M端实体的码与N端实体的码的组合 (D)重新选取其他属性

20、从一个数据库文件中取出满足某个条件的所有记录的操作是( A ) (A)选择(B)连接 (C)投影(D)复制

21、当关系模式R(A,B)已属于3NF,下列说法中( B )是正确的。 (A)它一定消除了插入异常和删除异常 (B)仍存在一定的插入和删除异常 (C)一定属于BCNF (D) A和C都是

22、当局部E-R图合并成全局E-R图时可能出现冲突,不属于合并冲突的是( B ) (A)属性冲突(B)语法冲突 (C)结构冲突(D)命名冲突

23、根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项( B ) (A)只存在一对多的实体关系,以图形方式来表示。

(B)以二维表格结构来保存数据,在关系表中不允许有重复行存在。 (C)能体现一对多、多对多的关系,但不能体现一对一的关系。 (D)关系模型数据库是数据库发展的最初阶段。

24、根据数据库规范化理论,下面命题中正确的是( D )

(A)若R∈2NF,则R∈3NF (B)若R∈1NF,则R不属于BCNF (C)若R∈3NF,则R∈BCNF (D)若R∈BCNF,则R∈3NF 25、关系规范化中的插入操作异常是指( D )

(A)不该删除的数据被删除(B)不该插入的数据被插入

(C)应该删除的数据未被删除(D)应该插入的数据未被插入 26、关系规范化中的删除操作异常是指( A )

(A)不该删除的数据被删除(B)不该插入的数据被插入

(C)应该删除的数据未被删除(D)应该插入的数据未被插入

27、关系模式分解的无损连接和保持函数依赖两个特性之间的联系是( D ) (A)前者成立蕴涵后者成立(B)后者成立蕴涵前者成立 (C)同时成立,或者同时不成立(D)没有必然的联系 28、关系模式中,满足2NF的模式,( D ) (A)可能是1NF (B)必定是BCNF (C)必定是3NF (D)必定是1NF

- 2 -

29、关系数据库的规范化理论指出:关系数据库中的关系应满足一定的要求,最起码的要求是达到1NF,即满足( D )

(A)每个非主属性都完全依赖于主属性(B)主属性唯一标识关系中的元组 (C)关系中的元组不可重复(D)每个属性都是不可再分的

30、关系数据库规范化是为解决关系数据库中( A )问题而引入的。 (A)插入、删除和数据冗余 (B)提高查询速度

(C)减少数据操作的复杂性

(D)保证数据的安全性和完整性

31、关系数据库规范化是为解决关系数据库中( A )问题而引入的。 (A)插入异常、删除异常和数据冗余;(B)提高查询速度;

(C)减少数据操作的复杂性; (D)保证数据的安全性和完整性。 32、关系数据库设计理论中,起核心作用的是( C ) (A)范式(B)模式设计(C)函数依赖(D)数据完整性. 33、关系数据库中的码是指( D ) (A)能唯一决定关系的字段 (B)不可改动的专用保留字 (C)关键的很重要的字段

(D)能唯一标识元组的属性或属性集合 34、关系数据模型( D )

(A)只能表示实体间的1:1联系(B)只能表示实体间的1:n联系 (C)只能表示实体间的m:n联系(D)可以表示实体间的上述三种联系

35、关系数据模型是目前最重要的一种数据模型,它的三个要素分别是( B ) (A)实体完整性、参照完整性、用户自定义完整性 (B)数据结构、关系操作、完整性约束 (C)数据增加、数据修改、数据查询 (D)外模式、模式、内模式

36、关系运算以关系代数为理论基础,关系代数的最基本操作是并、差、笛卡尔积和( C ) (A)投影、连接(B)连接、选择 (C)选择、投影(D)交、选择

37、关于数据库设计的正确描述是( B ) (A)进行数据模型的设计

(B)在DBMS的支持下,进行数据模型和应用程序设计 (C)开发应用程序 (D)设计开发DBMS

38、规范化关系模式的任何属性( A ) (A)不可再分(B)可以再分

(C)命名在关系模式上可以不唯一(D)上述都不正确

39、规范化过程主要为克服数据库逻辑结构中的插入异常,删除异常以及( C )缺陷。 (A)数据的不一致性(B)结构不合理 (C)冗余度大(D)数据丢失

40、规范化理论是关系数据库进行逻辑设计的理论依据。根据这个理论,关系数据库中的关系必须满足:其每一属性都是( B )

(A)互不相关的(B)不可分解的(C)长度可变的(D)互相关联的 41、函数依赖理论可以消除数据库的( A )

(A)插入异常、删除异常、更新异常和数据冗余(B)插入异常 (C)删除异常(D)查询异常

- 3 -

42、侯选码中的属性称为( B ) (A)非主属性(B)主属性 (C)复合属性(D)关键属性 43、后备副本的用途是( C ) (A)安全性保障(B)一致性控制 (C)故障后的恢复(D)数据的转储

44、假设关系模式R(A,B)属于3NF,下列说法中( B )是正确的。 (A)R一定消除了插入和删除异常(B)R仍可能存在一定的插入和删除异常 (C)R一定属于BCNF(D)A和C都是

45、将弱实体转换成关系时,弱实体的主码( C ) (A)由自身的候选关键字组成(B)由父表的主码组成 (C)由父表的主码和自身的候选关键字组成(D)不确定 46、将一个关系从2NF规范到3NF,目的是消除( B )

(A)非主属性对码的部分函数依赖(B)非主属性对码的传递函数依赖

(C)主属性对码的部分和传递函数依赖(D)非平凡且非函数依赖的多值依赖 47、能消除多值依赖引起的冗余的是( C ) (A) 2NF (B) 3NF (C) 4NF (D) BCNF

48、区别不同实体的依据是( B ) (A)名称(B)属性(C)对象(D)概念

49、如果想找出关系R的属性A上为空的那些元组,则条件子句应该为( C ) (A) WHERE A=NULL (B) WHERE A==NULL (C) WHERE A IS NULL (D) WHERE A NOT IS NULL 50、如果一个关系属于3NF,则它( A ) (A)必然属于2NF (B)必然属于4NF (C)可能不属于2NF (D)必然属于BCNF

51、如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是( D ) (A)一个是DELETE,一个是SELECT (B)一个是SELECT,一个是DELETE (C)两个都是UPDATE (D)两个都是SELECT

52、如下图所示,两个关系R1和R2,它们进行( D )运算后得到R3。 (A)交(B)并

(C)笛卡尔积(D)连接

R1 R2 R3

A a c d B 1 2 1 C x y y D 1 2 5 E n M j A a d c B 1 1 2 C x y y E M m i m k m i m i n j 53、若关系模式R∈3NF,则下面最正确的说法是( C )

(A)某个非主属性不传递依赖于码(B)某个非主属性不部分依赖于码

(C)所有非主属性都不传递依赖于码(D)所有非主属性都不部分依赖于码

54、若关系模式R中的属性全是主属性,则R的最高范式等级至少是( C ) (A) 1NF (B) 2NF (C) 3NF (D) BCNF

- 4 -

55、若事务T对数据R已加了S锁,则其他事务对数据R( A ) (A)可以加S锁不能加X锁(B)不能加S锁可以加X锁 (C)可以加S锁也可以加X锁(D)不能加任何锁

56、若事务T对数据R已加了X锁,则其他事务对数据R( D ) (A)可以加S锁不能加X锁(B)不能加S锁可以加X锁 (C)可以加S锁也可以加X锁(D)不能加任何锁

57、若事务在检查点之后开始执行,在故障点之前已提交,则系统恢复时对该事务执行( A ) (A) REDO操作(B) UNDO操作 (C) RESTART操作(D) NULL操作

58、若属性X函数依赖于属性Y时,则属性X与属性Y之间具有( B ) (A)一对一联系(B)一对多联系 (C)多对一联系(D)多对多联系

59、若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非正常方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为( B ) (A)事务故障(B)系统故障 (C)介质故障(D)运行故障

60、设F是关系模式R的FD集,如果对F中每个非平凡的FD:X→Y,都有X是R的超码,则( C ) (A) R属于2NF,但不一定属于3NF (B) R属于3NF,但不一定属于BCNF (C) R属于BCNF,但不一定属于4NF (D) R属于4NF

61、设关系R的度为20,关系S的度为30。如果关系T是R与S的广义笛卡尔积,即:T=R×S,则关系T的度为( D )

(A)10 (B)20 (C)30 (D)50

62、设计性能较优的关系模式称为规范化,规范化主要的理论依据是( A ) (A)关系规范化理论(B)关系运算理论 (C)关系代数理论(D)数理逻辑理论

63、设学生关系S(SNO,SNAME,SSEX,SAGE,SDEPT)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,关系R(SNO,CNO,SSEX,SAGE,SDEPT,SCORE)的主键为SNO和CNO,关系R满足( A )

(A)1NF (B)2NF (C)3NF (D)都不对

64、设学生关系模式为:学生(学号,姓名,年龄,性别,平均成绩,专业),则该关系模式的主键是( C ) (A)姓名;(B)学号,姓名;(C)学号; (D)学号,姓名,年龄.

65、设有关系R(A,B,C)和S(B,C,D),下列各关系代数表达式不成立的是( C ) (A)ПA(R) ПD(S) (B)R S (C)R∪S (D)ПB(R)∩ПB(S)

66、设有关系R(书号,书名),如果要检索书名中至少包含4个字母,且第3个字母为M的图书,则SQL查询语句中WHERE子句的条件表达式应写成( C ) (A)书名 LIKE ‘%_ _M%’(B)书名 LIKE ‘_ _M%’ (C)书名 LIKE ‘_ _M_%’(D)书名 LIKE ‘_%M_ _’

67、设有关系W(工号,姓名,工种,定额),将其规范化到第三范式正确的答案是( C ) (A)W1(工号,姓名),W2(工种,定额);

(B)W1(工号,工种,定额),W2(工号,姓名); (C)W1(工号,姓名,工种),W2(工种,定额); (D)以上都不对.

68、设有关系WORK(ENO,CNO,PAY),主码为(ENO,CNO),按照实体完整性规则( D ) (A)只有ENO不能取空值(B)只有CNO不能取空值

(C)只有PAY不能取空值(D) ENO与CNO都不能取空值

- 5 -

69、设有关系表R(如下表所示),该关系的主码是( B )

R a 1 1 1 2 3 1 b 1 2 3 1 2 4 c 2 1 2 1 1 2

(A)a (B)(a,b) (C)(b,c) (D)(a,c)

70、设有关系模式R ( A,B,C,D ),F是R上成立的FD集,F = { A→B,C→D },则F+中左部为BC的函数依赖有( C ) (A) 2个(B) 4个 (C) 8个(D) 16个

71、设有关系模式R(A,B,C,D),F是R上成立的FD集,F={ A→B,B→C,C→D,D→A },则F+中,左部为C的函数依赖有( D ) (A) 2个(B) 4个 (C) 8个(D) 16个

72、设有关系模式R(S,D,M),其函数依赖集F={S→D,D→M},则关系模式R的规范化程度最高达到( B )

(A)1NF (B)2NF (C)3NF (D)都不正确

73、设有两个事务T1、T2,其并发操作如下图所示,下面评价正确的是( D )

(A)该操作不存在问题(B)该操作丢失

(C)该操作不能重复读(D)该操作读’脏’数据

74、设有两个事务T1、T2,其并发操作如下图所示,下面评价正确的是( B )

(A)该操作不存在问题(B)该操作丢失

(C)该操作不能重复读(D)该操作读’脏’数据

- 6 -

75、设有两个事务T1、T2,其并发操作如下图所示,下面评价正确的是( C )

(A)该操作不存在问题(B)该操作丢失

(C)该操作不能重复读(D)该操作读’脏’数据

76、设有属性A,B,C,D,以下表示中不是关系的是( C ) (A) R(A)(B) R(A,B,C,D) (C) R(A×B×C×D)(D) R(A,B)

77、使用数据库技术来处理一个实际问题时,对数据描述经历的过程是( B ) (A)定义、描述、实现(B)概念设计、逻辑设计、物理设计

(C)结构设计、表设计、内容设计(D)逻辑设计、结构设计、表设计 78、事务(Transaction)是一个( C ) (A)程序(B)进程

(C)操作序列(D)完整性规则 79、事务的执行次序称为( C ) (A)过程(B)步骤 (C)调度(D)优先级

80、事务对DB的修改,应该在数据库中留下痕迹,永不消逝。这个性质称为事务的( A ) (A)持久性(B)隔离性 (C)一致性(D)原子性

81、数据库的( B )是指数据的正确性和相容性。 (A)安全性(B)完整性 (C)并发控制(D)恢复

82、数据库的层次模型应满足的条件是( C )

(A)允许一个以上的结点无双亲,也允许一个结点有多个双亲 (B)必须有两个以上的结点

(C)有且仅有一个结点无双亲,其余结点都只有一个双亲 (D)每个结点有且仅有一个双亲

83、数据库的概念模型独立于( A ) (A)具体的机器和DBMS (B) E-R图 (C)信息世界(D)现实世界

84、数据库的逻辑结构设计任务是把( C )转换为与所选用的DBMS支持的数据模型相符合的过程。 (A)逻辑结构(B)物理结构 (C)概念结构(D)层次结构

85、数据库的网状模型应满足的条件是( A )

(A)允许一个以上的结点无双亲,也允许一个结点有多个双亲 (B)必须有两个以上的结点

(C)有且仅有一个结点无双亲,其余结点都只有一个双亲 (D)每个结点有且仅有一个双亲

- 7 -

86、数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的( B )过程,包括确定数据库在物理设备上的存储结构和存取方法。 (A)逻辑结构(B)物理结构 (C)概念结构(D)层次结构

87、数据库概念设计的E-R方法中,用属性描述实体的特征,属性在E-R图中,用(D )表示。 (A)矩形(B)四边形 (C)菱形(D)椭圆形

88.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括( C ) (A)数据字典、应用程序、数据库后备副本 (B)数据字典、应用程序、审计档案 (C)日志文件、数据库后备副本

(D)数据字典、应用程序、日志文件 89、数据库恢复的主要依据是( D ) (A) DBA (B) DD (C)批处理文件(D)事务日志

90、数据库类型的划分依据是( B ) (A)记录形式(B)数据模型

(C)数据联系(D)存取数据方法

91、数据库设计中,确定数据库存储结构,即确定关系、索引、聚簇、日志、备份等数据的存储安排和存储结构,这是数据库设计的( D)

(A)需求分析阶段(B)逻辑设计阶段 (C)概念设计阶段(D)物理设计阶段

92、数据库完整性约束的建立需要使用DBMS提供的( A ) (A)数据定义语言(B)数据操纵语言 (C)数据查询语言(D)数据控制语言

93、数据库物理设计完成后,进入数据库实施阶段,在下述工作中,一般不属于实施阶段的工作是( B ) (A)建立库结构(B)扩充功能(需求分析阶段) (C)加载数据(D)系统调试

94、数据库系统的数据独立性体现在( B ) (A)不会因为数据的变化而影响到应用程序

(B)不会因为数据存储结构与数据逻辑结构的变化而影响应用程序 (C)不会因为存储策略的变化而影响存储结构

(D)不会因为某些存储结构的变化而影响其他的存储结构 95、数据库系统是在( A )的基础上发展起来的。 (A)文件系统(B)应用程序系统 (C)数据库管理系统(D)编译系统

96、数据库系统与文件系统的主要区别是( B ) (A)数据库系统复杂,而文件系统简单。

(B)文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决。 (C)文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件。 (D)文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量。 97、数据流图DFD使用的时机是( D ) (A)概念结构设计阶段(B)逻辑结构设计阶段 (C)可行性分析阶段(D)需求分析阶段

98、数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( C ) (A)数据库设计(B)数据通信 (C)数据定义(D)数据维护

- 8 -

99、为了考虑安全性,每个部门的领导只能存取本部门员工的档案,为此DBA应创建相应的( C ) (A)表(table) (B)索引(index) (C)视图(view) (D)游标(cursor)

100、为了使属性在各元组上取值唯一,在建立基本表时应使用保留字( A ) (A) UNIQUE (B) COUNT (C) DISTINCT (D) UNION

101、为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字( A ) (A) UNIQUE (B) COUNT (C) DISDINCT (D) UNION

102、为数据表创建索引的目的是( A ) (A)提高查询的检索性能(B)创建唯一索引 (C)创建主键(D)归类

103、五种基本关系代数运算是( A )

(A)∪,—,×,π和σ(B)∪,—,∞,π和σ (C)∪,∩,×,π和σ(D)∪,∩,∞,π和σ 104、下列不属于并发操作带来的问题是( D ) (A)丢失修改(B)读脏数据 (C)不可重复读(D)死锁

105、下列关于“数据库三级模式结构”的叙述中,哪一条是不正确的?( C ) (A)视图是外模式

(B)模式是数据库中全体数据的逻辑结构和特征的描述 (C)一个数据库可以有多个逻辑模式 (D)一个数据库只有一个内模式

106、下列关于SQL语言中索引(Index)的叙述中,哪一条是不正确的?( A ) (A)索引是外模式

(B)一个基本表上可以创建多个索引 (C)索引可以加快查询的执行速度

(D)系统在存取数据时会自动选择合适的索引作为存取路径 107、下列关于视图的说法中错误的是( C ) (A)视图是从一个或多个基本表导出的表,它是虚表 (B)视图可以被用来对无权用户屏蔽数据

(C)视图一经定义就可以和基本表一样被查询和更新 (D)视图可以用来定义新的视图

108、下列关于数据结构基本概念的叙述中,哪一条是不正确的?( C )

(A)数据是采用计算机能够识别、存储和处理的方式,对现实世界的事物进行的描述 (B)数据元素(或称结点、记录等)是数据的基本单位 (C)一个数据元素至少由两个数据项组成 (D)数据项是有独立含义的数据最小单位

109、下列模型中数据抽象级别最高的是( A ) (A)概念模型(B)逻辑模型 (C)外部模型(D)物理模型

110、下列哪种关系运算不要求:“R和S具有相同的属性个数,并且每对相对应的属性都具有相同的域”?( D )

(A)R∪S (B)R∩S (C)R-S (D)R×S

- 9 -

111、下列说法错误的是( D )

(A)一个基本表可以跨一个或多个存储文件 (B)一个存储文件可以跨一个或多个基本表

(C)每个存储文件与外部存储器上一个物理文件对应 (D)每个基本表与外部存储器上一个物理文件对应

112、下列四项中,不属于数据库系统特点的是( C ) (A)数据共享(B)数据完整性

(C)数据冗余度高(D)数据独立性高

113、下面关于自然连接与等值连接的各个叙述中,不正确的是( B ) (A)自然连接是一种特殊的等值连接

(B)自然连接要求两个关系中具有相同的属性组,而等值连接不必 (C)两种连接都可以只用笛卡尔积和选择运算导出

(D)自然连接要在结果中去掉重复的属性,而等值连接则不必

114、下面哪个不是数据库系统必须提供的数据控制功能( B ) (A)安全性(B)可移植性 (C)完整性(D)并发控制

115、下述SQL命令的短语中,不是定义属性上约束条件的是( D )

(A) NOT NULL短语(B)UNIQUE短语(C)CHECK短语(D)HAVING短语 116、现要查找缺少学习成绩(G)的学生学号(Sno)和课程号(Cno),相应的SQL语句 SELECT Sno,Cno

FROM SC WHERE

中WHERE后正确的条件表达式是( D ) (A)G=0 (B)G<=0

(C)G=NULL (D)G IS NULL

117、限制输入到一列或多列值的范围,使用( A )约束。 (A) CHECK (B) PRIMARY KEY (C) FOREIGN KEY (D) UNIQUE

118、消除了部分函数依赖的1NF的关系模式必定是( B )

(A)1NF (B)2NF (C)3NF (D)4NF

119、消除了非主属性对码的部分函数依赖的1NF的关系模式,必定是( B ) (A) 1NF (B) 2NF (C) 3NF (D) 4NF

120、选项中关于视图的说法错误的是( B ) (A)视图是一种虚拟表 (B)视图中也保存有数据

(C)视图也可由视图派生出来

(D)视图的内容来源于一个SQL的SELECT查询 121、选项中删除表的语句是( A ) (A) DROP (B) ALTER (C) UPDATE (D) DELETE

122、学生表S(id,name,sex,age,dept_id,dept_name),存在函数依赖是id,name,sex,age,dept_id; dept_id,dept_name, S满足( B )

(A)1NF (B)2NF (C)3NF (D)都不正确 123、要保证数据库的数据独立性,需要修改的是( C ) (A)模式与外模式(B)模式与内模式

(C)三级模式之间的两层映射(D)三层模式

- 10 -

124、要修改表的结构,应使用SQL语言的命令( C ) (A) UPDATE TABLE (B) MODlFY TABLE (C) ALTER TABLE (D) CHANGE TABLE 125、一个关系只有一个( D )

(A)候选码(B)外码(C)超码(D)主码

126、已知关系R和S如下表所示:试对R和S进行交运算,其结果的元组数应是( B )

R

A a1 a2 B b2 b2 C c1 c2 S

A a2 a2 B f b2 C g c2 a3 b1 c1 a3 f g (A)0 (B)1 (C)4 (D)6

127、以下哪一条属于关系数据库的规范化理论要解决的问题?( A ) (A)如何构造合适的数据库逻辑结构 (B)如何构造合适的数据库物理结构 (C)如何构造合适的应用程序界面

(D)如何控制不同用户的数据操作权限

128、用于数据库恢复的重要文件是( C ) (A)数据库文件(B)索引文件 (C)日志文件(D)备注文件

129、由局部E-R图生成初步E-R图,其主要任务是( D ) (A)消除不必要的冗余(B)消除属性冲突 (C)消除结构冲突和命名冲突(D)B和C 130、有12个实体类型,并且它们之间存在着15个不同的二元联系,其中4个是1:1联系类型,5个是1:N联系类型,6个M:N联系类型,那么根据转换规则,这个ER结构转换成的关系模式有( B ) (A) 17个(B) 18个 (C) 23个(D) 27个

131、有关系模式R(S,T,C,D,G),根据语义有如下函数依赖集:F={(S,C)->T,C->D,(S,C)->G,T->C)。关系模式R的候选关键码( D ) (A)仅有1个,为(S,C) (B)仅有1个,为(S,T) (C)有2个,为(S,C)和(T) (D)有2个,为(S,C)和(S,T)

132、有学生关系:学生(学号,姓名,年龄),对学生关系的查询语句如下: SELECT 学号 FROM 学生

WHERE年龄>20 AND 姓名 LIKE‘%伟’ 如果要提高查询效率,应该建索引的属性是(C) (A)学号(B)姓名

(C)年龄(D) (学号,姓名)

133、在DB恢复时,对已经提交但更新未写入磁盘的事务执行( B ) (A) UNDO处理(B) REDO处理

(C) ROLLBACK处理(D) ABORT处理

134、在SQL Server 中删除触发器用( B )

(A)ROLLBACK (B)DROP (C)DELALLOCATE (D)DELETE 135、在SQL语言的SELECT语句中,对投影操作进行说明的是哪个子句( A ) (A)SELECT (B)FROM (C)WHERE (D)ORDER BY

- 11 -

136、在SQL语言中,DELETE语句的作用是( D) (A)删除基本表(B)删除视图

(C)删除基本表和视图(D)删除基本表和视图的元组

137、在SQL语言中,数值函数COUNT(列名)用于( C ) (A)计算元组个数(B)计算属性的个数

(C)对一列中的非空值计算个数(D)对一列中的非空值和空值计算个数 138、在SQL语言中,用于测试列值非空的短语是( C ) (A) IS NOT EMPTY (B) NOT UNIQUE (C) IS NOT NULL (D) NOT EXISTS

139、在SQL中,由于对视图的修改最终要转换为对基本表的修改,因此下列只有哪种视图是可以修改的?( A )

(A)行列子集视图(B)带表达式视图(C)分组视图(D)连接视图

140、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(1D),使用关键字(2A)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3B)

⑴(A)SELECT,INTO (B)SELECT,FROM (C)SELECT,GROUP (D)仅SELECT ⑵(A)DISTINCT (B)UNION (C)ALL (D)TOP

⑶(A)JOIN (B)UNION (C)INTO (D)LIKE

141、在T-SQL中,批处理中调用存储过程所使用的命令是( A ) (A) EXEC (B) SET

(C) USE (D) DECLARE

142、在关系代数的专门关系运算中,从表中取出指定的属性的操作称为( B ) (A)选择(B)投影 (C)连接(D)扫描

143、在关系代数的专门关系运算中,从表中选出满足某种条件的元组的操作称为( A ) (A)选择(B)投影 (C)连接(D)扫描

144、在关系代数的专门关系运算中,将两个关系中具有共同属性值的元组连接到一起构成新表的操作称为( C )

(A)选择(B)投影

(C)连接(D)笛卡尔积

145、在关系代数中,从两个关系的笛卡尔积中选取它们属性间满足一定条件的元组的操作称为( D ) (A)并(B)选择(C)自然连接(D)θ连接

146、在关系规范化中,分解关系的基本原则是( B ) I、实现无损连接;

II、分解后的关系相互独立; III、保持原有的依赖关系。

(A)I和II;(B)I和III; (C)I;(D)II。

147、在关系模式设计时,每个关系模式应只对应于( A )

(A)一个实体类型或一个联系类型(B)一个实体类型和一个联系类型 (C)多个实体类型(D)多个联系类型

148、在关系数据库设计中,设计关系模式是( C )的任务。 (A)需求分析阶段(B)概念设计阶段 (C)逻辑设计阶段(D)物理设计阶段

149、在关系数据库系统中,当合并两个关系时,用户程序可以不变。这是( C )

- 12 -

(A)数据的物理独立性(B)数据的位置独立性 (C)数据的逻辑独立性(D)数据的存储独立性

150、在关系数据库中,索引(index)是三级模式结构中的( B ) (A)概念模式(B)内模式(C)模式(D)外模式

151、在关系数据库中,要求基本关系中所有的主属性上不能有空值,其遵守的约束规则是( C ) (A)数据依赖完整性规则(B)用户定义完整性规则; (C)实体完整性规则(D)上述都不正确。

152、在事务依赖图中,如果两个事务的依赖关系形成一个循环,那么就会( B ) (A)出现活锁现象(B)出现死锁现象 (C)事务执行成功(D)事务执行失败

153、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。在这几个阶段中,数据独立性最高的是( A )阶段。 (A)数据库系统(B)文件系统 (C)人工管理(D)数据项管理

154、在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是( D ) (A)外模式(B)内模式 (C)存储模式(D)模式

155、在数据库的三级模式结构中,模式/内模式映像( A )

(A)只有1个(B)只有2个(C)由系统参数确定(D)可以有任意多个 156、在数据库恢复时,对尚未完成的事务执行( B ) (A) UNDO操作(B) REDO操作

(C) COMMIT操作(D) ROLLBACK操作

157、在数据库系统中,提供数据与应用程序间物理独立性的是( B ) (A)外模式/模式映像(B)模式/内模式映像 (C)外模式/内模式映像(D)子模式/模式映像

158、在数据库中,产生数据不一致的根本原因是( C ) (A)数据存储量过大(B)缺乏数据保护机制 (C)数据冗余(D)缺乏数据安全性控制

159、在数据库中,下列说法( A )是不正确的。 (A)数据库避免了一切数据的重复

(B)若系统是完全可以控制的,则系统可确保更新时的一致性 (C)数据库中的数据可以共享 (D)数据库减少了数据冗余

160、在数据库中存储的是( C ) (A)数据(B)数据模型

(C)数据以及数据之间的联系(D)信息

161、在数据库中可以创建和删除表、视图、索引,可以修改表。这是因为数据库管理系统提供了( A ) (A)数据定义功能(B)数据操纵功能 (C)数据维护功能(D)数据控制功能

162、在下面的数据库表中,若学生表的主码是学号,系别表的主码是系别号,用SQL语言不能执行的下面操作是:( B ) 学生表

学号 001 005 006 010 姓名 李红 王明 王芳 张强 年龄 19 20 18 20 系别号 01 01 02 03 系别表

系别号 01 02 03 系别名称 数学系 中文系 计算机系 - 13 -

(A)从学生表中删除行(’005’,’王明’,20,’01’) (B)将行(’005’,’王山’,19,’04’)插入到学生表中 (C)将学号为’001’的年龄改为18 (D)将学号为’010’的系别号改为’04’

163、自然连接是构成新关系的有效方法。一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的( D ) (A)元组(B)行 (C)记录(D)属性

三、简述题

1.试述数据、数据库、数据库管理系统、数据库系统的概念。

答:(1)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。 (2)数据库(DaBase,简称DB):数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 (3)数据库系统(DataBase Sytem,简称DBS):数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。 (4)数据库管理系统(DataBase Management Sytem,简称DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。 2.什么是基本表?什么是视图?两者的区别和联系是什么?

答:基本表是实际存储在数据库中的二维表,它是本身独立存在的表,在SQL中一个关系就对应一个表。视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。视图是从一个或几个基本表(或视图)中导出的表,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。

3.什么是数据的独立性?如何保证数据库系统的数据独立性?

答:数据独立性是数据库系统的一个最重要的目标之一。它能使数据独立于应用程序。 数据独立性包括数据的物理独立性和逻辑独立性。

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

4. 数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。 数据的完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。数据的安全性是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 5.DBMS的完整性控制机制应具有哪些功能?

答: DBMS的完整性控制机制应具有三个方面的功能: 1) 定义功能:即提供定义完整性约束条件的机制。

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

3) 违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据完整性。 6. 试述关系模型的完整性规则。什么情况下外码不可以为空?

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

1) 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。

- 14 -

2) 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

? 或者取空值(F的每个属性值均为空值); ? 或者等于S中某个元组的主码值。

3) 用户定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。

在参照完整性中,外部码属性的值可以为空,它表示该属性的值尚未确定。但前提条件是该外部码属性不是其所在关系的主属性。

7.数据模型的组成要素有哪些? 答:(1)数据结构,数据结构是描述数据库的组成对象以及对象之间的联系。(2)数据操作,数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作以及有关的操作规则。(3)数据的完整型约束条件,数据的完整性约束条件是一组完整性规则。 8.试述SQL语言的特点。 答:(1)综合统一:集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体; (2)高度非过程化:SQL只要提出“做什么”,无须了解存取路径;

(3)面向集合的操作方式:操作对象、查找结果可以是元组的集合,一次插入、删除、更新操作的对象可以是元组的集合;(4)以同一种语法结构提供多种使用方式;(5)语言简洁,易学易用。 9. 试述SQL的定义、功能分类及核心动词。

答:结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是关系数据库的国际标准语言。 数据查询:SELECT (查询出数据,也可用于变量赋值)

数据定义(表/视图/查询/存储过程/自定义函数/索引/触发器等):CREATE (创建)、DROP(删除)、ALTER(修改)

数据操作:INSERT(插入)、UPDATE(更新)、DELETE(删除) 数据控制:GRANT(授权)、REVOKE(回收权限) 10.DBMS的完整性控制机制应具有哪些功能? 答:应具有三方面的功能:

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

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

3) 如果发现用户的操作请求违背了完整性约束条件,则采取一定的动作来保证数据的完整性。 11.什么是数据库的审计功能,为什么要提供审计功能?

答:审计功能是指 DBMS的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。 因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能, DBA可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

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

答:文件系统与数据库系统的区别是:文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。

文件系统与数据库系统的联系:文件系统与数据库系统都是计算机系统中管理数据中管理数据的软件。 13. 试述数据库设计过程的各个阶段上的设计描述。 答:各阶段的设计要点如下:

1) 需求分析:准确了解与分析用户需求(包括数据与处理)。

2) 概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。 3) 逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。

4) 数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

5) 数据库实施:设计人员运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立

- 15 -

数据库,编制与调试应用程序,组织数据入库,并进行试运行。

6) 数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。 14. 试述数据库设计过程中结构设计部分形成的数据库模式。 答:数据库结构设计的不同阶段形成数据库的各级模式,即:

在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E-R图;

在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后在基本表的基础上再建立必要的视图(View),形成数据的外模式;

在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。

概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是DBMS支持的模式,属于数据模型的层次。可以在DBMS中加以描述和存储。 15. 试述数据库概念结构设计的重要性和设计步骤。

答:数据库概念结构设计的重要性是:数据库概念设计是整个数据库设计的关键,将在需求分析阶段所得到的应用需求首先抽象为概念结构,以此作为各种数据模型的共同基础,从而能更好地、更准确地用某一 DBMS实现这些需求。设计步骤为:概念结构的设计方法有多种,其中最经常采用的策略是自底向上方法,该方法的设计步骤通常分为两步:第 1步是抽象数据并设计局部视图,第2步是集成局部视图,得到全局的概念结构。 16.试述数据库设计过程中结构设计部分所形成的数据库模式。

答:数据库结构设计的不同阶段形成数据库的各级模式,即: (1)在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,就是E-R图; (2)在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图(View),形成数据的外模式; (3)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。 17.视图集成的方法是什么?

答:一般说来,视图集成可以有两种方式: (1)多个分 E-R图一次集成;(2)逐步集成,用累加的方式一次集成两个分 E-R图。 无论采用哪种方式,每次集成局部 E-R图时都需要分两步走:

(1)合并。解决各分E-R图之间的冲突,将各分E-R图合并起来生成初步E-R图。 (2)修改和重构。消除不必要的冗余,生成基本E-R图。 18. 什么是索引?建立索引的基本原则是什么?

答:索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是关系数据库的内部实现技术,属于内模式的范畴,CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引。

选择索引存取方法的一般规则:

(1)如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引) (2)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引

(3) 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引 19.试述RDBMS查询优化的一般准则。 答:查询优化的一般准则是: (1)选择运算应尽可能先做;

(2)把投影运算和选择运算同时进行;

(3)把投影同其前或其后的双目运算结合起来执行;

(4)把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算; (5)找出公共子表达式; (6) 选取合适的连接算法。

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

答:各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下: 1) 把查询转换成某种内部表示,通常用的内部表示是语法树。

2) 把语法树转换成标准(优化)形式。即利用优化算法,把原始的语法树转换成优化的形式。 3) 选择低层的存取路径。

4) 生成查询计划,选择代价最小的。

- 16 -

21. 什么是游标?简述嵌入式SQL中引入游标的过程。

答:游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。SQL语言是面向集合的,主语言是面向记录的,一组主变量一次只能存放一条记录,用户可以逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

(1)先用游标定义语句DECLARE CURSOR将 SQL 游标与 SELECT 语句相关联。(2)用OPEN语句打开游标,执行 SELECT 语句,游标处于活动状态,此时游标指向查询结果第一个元组之前。(3)每执行一次FETCH语句,游标指向下一个元组,并把其值送到共享变量,供程序处理。如此重复,直至所有查询结果处理完毕。(4)最后用CLOSE语句关闭游标。关闭的游标可以被重新打开,与新的查询结果相联系,但在没有被打开前,不能使用。

22.简述事务的定义及其所具有的ACID特性。

答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。

1) 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 2) 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 3) 隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 4) 持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。 23.事务的COMMIT语句和ROLLBACK语句的功能是什么? 答:COMMIT语句表示事务执行成功地接结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。

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

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

答:日志文件是用来记录事务对数据库的更新操作的文件,目的是进行事务故障恢复、系统故障恢复、协助后备副本进行介质故障恢复。日志文件中记载了事务开始标记、事务结束标记以及事务对DB的插入、删除和修改的每一次操作前后的值。

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

25.数据库在运行过程中可能产生的故障有哪几类? 答:(1)事务故障:事务在运行过程中由于种种原因,如输入数据的错误,运算溢出,违反了某些完整性限制,某些应用程序的错误,以及并行事务发生死锁等,使事务未能运行到正常中指点之前就被撤消了,这种情况称为’事务故障’。 (2)系统故障:系统鼓掌是指系统在运行过程中,由于某些原因,如OS和DBMS代码错误,操作员操作事务。特定类型的硬件错误(CPU故障),突然停电等造成系统停止运行,致使事务在执行过程中以非控方式中指。这时。内存中的信息丢失,而存储在外存储上的数据未受影响,这种情况称为’系统故障’。

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

(4)计算机病毒:计算机病毒是一种人为的故障和破坏,它是一种计算机程序,通过读写染有病毒的计算机系统中的程序和数据这些病毒可以迅速繁殖和传播,危害计算机系统和数据库。 26.怎样进行事务故障的恢复

答:事务故障是指事务在运行至正常终止点前被中止,这时恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统的恢复步骤是: (1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。

- 17 -

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

(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 (4)如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。 27.怎样进行系统故障的恢复?

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

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

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

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

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

进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中’更新后的值’写入数据库。 28.怎样进行介质故障的恢复?

答:发生介质故障后,磁盘上的物理数据和日志文件被破坏,恢复方法是重装数据库,然后重做已完成的事务。 (1)装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。对于动态转储的数据库副本,还须同时装入转储开始时刻的日志文件副本,利用恢复系统故障的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。

(2)装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。即: 首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。

然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中’更新后的值’写入数据库。 29. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。 (1)丢失修改(Lost Update):两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。

(2)不可重复读(Non-Repeatable Read):事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。

(3)读“脏”数据(Dirty Read):事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。

避免不一致性的方法和技术就是并发控制。最常用的并发控制技术是封锁技术。

也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 30.什么是封锁?基本的封锁类型有哪些?

答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。 封锁是实现并发控制的一个非常重要的技术。

基本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。

排它锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。 共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之

- 18 -

前不能对A做任何修改。

31.X封锁与S封锁有什么区别? 答:X锁与S锁的区别如图所示。 X锁 只允许一个事务独锁数据 获准X锁的事务可以修改数据 事务的并发度低 X锁必须保留到事务终点 解决’丢失更新’问题 S锁 允许多个事务并发S锁某一数据 获准S锁的事务只能读取数据,但不能修改数据 事务的并发度高,但增加了死锁的可能性 根据需要,可随时解除S锁 解决’读不一致性’问题 32.什么是活锁?试述活锁的产生原因和解决方法。 答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。

避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。 33.请给出检测死锁发生的方法,当发生死锁后如何解决死锁? 答:一般使用超时法或事务等待图法。 ①超时法

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

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

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

- 19 -

四、计算题

1.求关系运算结果:

3> 4

关系R A a1 a1 a2 a3 a4 a4 B b1 b2 b2 b3 b3 b4 C 3 6 5 11 4 7 关系S A a1 a2 a3 a4 B b1 b2 b3 b4 C 5 10 16 14 D 4 7 15 9 (1)R S(2)Π1,2,6,7 ( σ2=5(R×S) )

R.A R.B R.C S.A S.B S.C S.D a1 b2 6 a1 b1 5 4 a2 a3 a3 a3 a4 b2 b3 b3 b3 b4 5 11 11 11 7 a1 a1 a2 a4 a1 b1 b1 b2 b4 b1 5 5 10 14 5 4 4 7 9 4

R.A R.B S.C S.D a1 b1 5 4 a1 a2 a3 a4 a4 b2 b2 b3 b3 b4 10 10 16 16 14 7 7 15 15 9

2.求关系G和关系T自然连接及外连接的运算结果:

关系G

A B C

a1 b1 3

a1 b2 5

a2 b2 2

a3 b1 8

a4 b3 4

a4 b4 7

(1)自然连接:(2)左外连接: A a1 a2 a3 a4 B b1 b2 b1 b4 C 3 2 8 7 D d1 d1 d2 d1 E e1 e2 e2 e2 关系T B b1 b2 b2 b1 b4 C 3 4 2 8 7 D d1 d2 d1 d2 d1 E e1 e1 e2 e2 e2

A a1 a2 a3 a4 a1 a4 B b1 b2 b1 b4 b2 b3 C 3 2 8 7 5 4 D d1 d1 d2 d1 NULL NULL E e1 e2 e2 e2 NULL NULL

(3)右外连接:(4)全外连接:

- 20 -

A a1 a2 a3 a4 NULL B b1 b2 b1 b4 b2 C 3 2 8 7 4 D d1 d1 d2 d1 d2 E e1 e2 e2 e2 e1

A a1 a2 a3 a4 a1 a4 B b1 b2 b1 b4 b2 b3 C 3 2 8 7 5 4 D d1 d1 d2 d1 NULL NULL E e1 e2 e2 e2 NULL NULL e1 NULL b2 4 d2

3.设有一个数据库,包括以下一些基本资料:

零件表P 由零件代码(PNO)、零件名(PNA)、颜色(COL)、重量(WEI)组成; 供应情况表SPJ 由供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)组成,

表示某供应商供应某种零件的数量为QTY。

求Π SNO,PNO(SPJ)÷ Π PNO(σ COL= ‘红’(P))的结果,并描述其查询功能。

Π PNO(σ COL= ‘红’(P))结果:{P1,P3}

Π SNO,PNO(SPJ)中S1象集{P1,P2,P3}; S2象集{P1,P3}; S3象集{P1,P6}; Π SNO,PNO(SPJ)÷ Π PNO(σ COL= ‘红’(P))结果:{S1,S2} 功能是查询至少供应了所有红色零件的供应商号。

4.设有一个数据库,包括以下一些基本资料:

课程表C 由课程号(CNO)、课程名(CNA)、授课教师工号(TNO)、学分(CRE)组成; 选修情况表SC 由学生学号(SNO)、课程号(CNO)、成绩(GRA)组成。 求Π SNO , CNO(SC)÷ Π CNO(σ TNO = ‘ T4 ‘(C))的结果,并描述其查询功能。

Π CNO(σ TNO = ‘ T4 ‘(C))结果:{C4,C5}

Π SNO,PNO(SC)中S1象集{C1,C4,C5}; S2象集{C4,C6}; S3象集{C4,C5}; Π SNO , CNO(SC)÷ Π CNO(σ TNO = ‘ T4 ‘(C))结果:{S1,S3} 功能是查询至少选修了T4号老师教授的所有课程的学生学号。

5. 已知关系模式R(ABCD),F={A→B, B→C, D→B},求出属性集闭包A+,(AD)+和(BD)+,并给出一候选键。

解:A+=ABC, (AD)+ =ABCD, (BD)+ =BCD L:AD R:C LR:B N:空唯一候选键:AD

- 21 -

6.已知关系模式R, U={A,B,C,D,E,G}, F={AC→B, CB→D, A→BE,E→GC},求AB,BC,AC是否为关系R的候选码。

解:设K为R中的属性或属性组合。若KU,则K称为R的侯选码。 BC不是候选码,AB、AC是超码。

AB+=ABCDEG=U, AC+=ABCDEG=U, BC+=BCD,可以推出BC不是候选码; 进一步分析,A+=ABCDEG =U,即AB和AC都不是候选码的最小集,只是超码; 候选码应该是A。

7. 设有关系模式R(A,B,C,D,E)和R的函数依赖集F={ A→BC,CD→E,B→D,E→A },求R的所有候选码。

解:A,B,C,D,E都是LR类,并令Y=ABCDE。

A+=ABCDE B+=BD C+=C D+=D E+=EABCD 候选码有A、E,令Y=BCD BC+=ABCDE BD+=BD CD+=ABCDE BC、CD也为候选码 R的所有候选码有A、E、BC、CD。

8.设有关系模式R(U,F),其中:U={A,B,C,D,E,G},F={ BG→C,BD→E,DG→C,DAG→CB,AG→B,B→D },求F的最小依赖集Fmin。 解:

BG→C BG+=BGDEC 冗余 BD→E BD+=BDE

+

DG→C DG=DGC

+

DAG→C DAG=DAGBEC 冗余 DAG→B DAG+=DAGBEC 冗余 AG→B AG+=AGBCDE

+

B→D B=BDE 消除BD→E冗余属性可得B→E

Fmin={ B→E, DG→C , AG→B , B→D }

9.对如下关系R,指出是否存在多值依赖C→→HR? 为什么?

答:设R(U)是一个属性集U上的一个关系模式,X、Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关

上图关系中不存在多值依赖C→→HR。

根据定义,C对应X, (H,R)对应Y,则Z为(T,S,G)

当C取C1,(T,S,G)取(T1,S1,G1)时候,得(H,R)一组值{(H1,R1),(H2,R2)} 当C取C1,(T,S,G)取(T1,S2,G2)时候,得(H,R)一组值{(H1,R1)} 即与多值依赖定义矛盾。

若加一条元组(C1,T1,H2,R2,S2,G2)可满足C→→HR。

五、应用题

1.设有3个关系:

S(SNO,SNAME,AGE,SEX) SC(SNO,CNO,CNAME) C(CNO,CNAME,TEACHER)

试用关系代数表达式表示下列查询语句: 1)检索LIU老师所授课程的课程号和课程名。 ∏CNO,CNAME(σTEACHER=‘LIU’(C))

- 22 -

2)检索年龄大于23岁的男学生的学号和姓名。 ∏SNO,SNAME(σAGE>23∧SEX=‘男’(S))

3)检索学号为S3学生所学课程的课程名与任课教师名。 ∏CNAME,TEACHER(σSNO=‘S3’(SC∞C))

4)检索选修了LIU老师所授课程的女学生姓名。 ∏SNAME(σSEX=‘女’∧TEACHER=‘LIU’(S∞SC∞C)) 5)检索WANG同学不学的课程的课程名。

∏CNAME(C)-ΠCNAME(σSNAME=‘WANG’(S∞SC∞C)) 6)检索全部学生都选修的课程的课程号与课程名。

∏CNO,CNAME(C∞(πSNO,CNO(SC)÷πSNO(S)))

7)检索至少选修了LIU老师所授全部课程的学生学号。

∏SNO,CNO(SC)÷∏CNO(σTEACHER=‘LIU’(C))

2.设有下列四个关系模式:

S(SNO,SNAME,CITY)

P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY)

SPJ(SNO,PNO,JNO,QTY)

其中,供应商表S由供应商号(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成,记录各个供应商的情况;零件表P由零件号(PNO)、零件名称(PNAME)、零件颜色(COLOR)、零件重量(WEIGHT)组成,记录各种零件的情况;工程项目表J由项目号(JNO)、项目名(JNAME)、项目所在城市(CITY)组成,记录各个工程项目的情况;供应情况表SPJ由供应商号(SNO)、零件号(PNO)、项目号(JNO)、供应数量(QTY)组成,记录各供应商供应各种零件给各工程项目的数量。分别用关系代数和SQL语言完成下列查询: 1)求供应工程项目号为J1工程零件的供应商号SNO

∏SNO(σJNO=‘J1’(SPJ))

SELECT SNO FROM SPJ WHERE JNO=‘J1’; 2)求供应工程项目号为J1工程零件号为P1的供应商号SNO

∏SNO(σJNO=‘J1’∧PNO=‘P1’(SPJ))

SELECT SNO FROM SPJ WHERE JNO=‘J1’ AND PNO=‘P1’; 3)求供应工程项目号为J1工程红色零件的供应商号SNO

∏SNO(σJNO=‘J1’∧COLOR=‘红’(SPJ∞P))

SELECT SNO FROM SPJ,P WHERE SPJ.PNO=P.PNO AND P.COLOR=‘红’AND JNO=‘J1’; 4)求没有使用天津供应商生产的红色零件的工程号JNO

∏JNO(SPJ)-∏JNO(σcity=‘天津’∧COLOR=‘红’(SPJ∞P∞S)) SELECT JNOFROM JWHERE JNO NOT IN (

SELECT JNOFROM JSP, S, P WHERE JSP.SNO=S.SNOAND JSP.PNO=P.PNO AND S.CITY=‘天津’AND P.COLOR=‘红’);

5)求至少用了S1供应商所供应的全部零件的工程号JNO(本题不需要用SQL语言完成)

∏JNO,PNO(SPJ)÷∏PNO(σSNO=‘S1’(SPJ))

3.设有两个关系模式:

职工(职工号,姓名,性别,年龄,职务,工资,部门号) 部门(部门号,部门名称,经理名,地址,电话) 依据此关系回答下面问题:

(1)试用关系代数表达式查询’销售部’女职工的职工号和姓名。 π职工号,姓名(σ部门名称=‘销售部’?性别=‘女’(职工∞部门))

(2)试用SQL语句将年龄大于60岁的’策划部’的职工工资上调1000元。 UPDATE 职工

SET 工资=工资+1000

WHERE 年龄>60 AND 部门号=

(SELECT 部门号 FROM 部门 WHERE 部门名称=‘策划部’ (3)试用SQL语句统计每个部门的人数。 SELECT部门号,COUNT(职工号) FROM 职工

GROUP BY 部门号

- 23 -

(4)试用SQL语句检索’人事部’姓’王’的职工姓名和年龄,按年龄降序排列。 SELECT 姓名,年龄 FROM 职工

WHERE 姓名 LIKE ‘王%’ AND 部门号=

(SELECT 部门号FROM 部门WHERE 部门名称=‘人事部’) ORDER BY 年龄 DESC;

(5)试用SQL语句定义一个包含姓名、性别、工资、职务和部门名称的视图IS_A。 CREATE VIEW IS_A(姓名,性别,工资,职务,部门名称) AS SELECT 姓名,性别,工资,职务,部门名称 FROM 职工,部门

WHERE职工.部门号=部门.部门号;

4.已知有如下三个关系: 学生(学号,姓名,专业)

项目(项目号,项目名称,报酬) 参加(学号,项目号,工时)

其中,报酬是指参加该项目每个工时所得报酬。 依据此关系回答下面问题:

(1)试用关系代数表达式查询’王明’同学所参加项目的名称。 π项目名称(σ姓名=‘王明’(学生∞参加∞项目))

(2)试用SQL语句将报酬最高的项目名称前加上’重点:’前缀。 UPDATE 项目

SET 项目名称=‘重点:’+项目名称

WHERE 报酬=(SELECT MAX (报酬)FROM 项目)

(3)试用SQL语句查询报酬大于800元(包括800元)的项目名称。 SELECT 项目名称 FROM 项目

WHERE 报酬>=800

(4)试用SQL语句查询每个专业所有学生参加各个项目所获得的总报酬。 SELECT 系别号,SUM(报酬*工时) FROM 学生,项目,参加

WHERE 学生.学号=参加.学号AND 项目.项目号=参加.项目号 GROUP BY 专业

(5)试用SQL命令创建视图IS_A,该视图包含的属性有:学号,姓名和项目名称。 CREATE VIEW IS_A(学号,姓名,项目名称) AS

SELECT 学生.学号,姓名,项目名称 FROM 学生,项目,参加

WHERE 学生.学号=参加.学号AND 项目.项目号=参加.项目号 (6)在项目表的项目号字段上按降序建立聚簇索引。

CREATE CLUSTERED INDEX a1ON 项目(项目号DESC);

5.设有一个S-T数据库,包括STUDENTS,COURSES,REPORTS三个关系模式,

学生表STUDENTS (学号SNO,姓名SNAME,生日SBIRTH,性别SSEX,所在系SDEPT); 课程表COURSES (课程号CNO,课程名CNAME,先行课PRE_CNO,学分CREDITS); 学生选课表REPORTS (学号SNO,课程号CNO,成绩GRADE); 试用SQL语言完成如下操作:

(1)按如下要求创建REPORTS表;

表名 列名 数据类型 宽度 约束 外码 SNO VARCHAR 3 主码

外码 REPORTS CNO VARCHAR 20

取值在0~100之间 GRADE INT

CREATE TABLE REPORTS

( SNOVARCHAR(3) REFERENCES STUDENTS(SNO),

- 24 -

CNOVARCHAR(20) REFERENCES COURSES(CNO), GRADEINT CHECK (GRADE BETWEEN 0 AND 100), PRIMARY KEY(SNO,CNO) );

(2)将CS系学号为S17的学生张立(生日98-10-16)的记录录入STUDENTS表; INSERT INTO STUDENTS

VALUES(’S17’,’张立’, ’1998-10-16’,NULL,’CS’);

(3)将刘晨选修C03号课程的记录从REPORTS表中删除; DELETE FROM REPORTS WHERE CNO=’C03’

AND SNO=(SELECT SNO FROM STUDENTS WHERE SNAME=’刘晨’); (4)将生日在1990年7月1日以前的学生的SDEPT字段置为空值;

UPDATE STUDENTSSET SDEPT=NULL WHERE SBIRTH<'1990-7-1'; (5)创建S_G视图,查询平均分在90分以上的学生学号; CREATE VIEW S_G AS

SELECT SNO FROM REPORTS

GROUP BY SNO HAVING AVG(GRADE)>90; 试用关系代数表达式完成如下操作:

(6)查询至少选修了S16号学生选修的全部课程的学生学号; ∏SNO,CNO(REPORTS)÷∏CNO(σSNO=‘S16’(REPORTS))

(7)在STUDENTS表的SNAME上按降序建立唯一索引a1; CREATE UNIQUE INDEX a1 ON STUDENTS(SNAMEDESC);

(8)为“U1”用户授予COURSES表上更新记录的权限,并允许其传播此权限; GRANT UPDATE ON COURSES TO U1 WITH GRANT OPTION ; (9)修改COURSES表,将PRE_CNO字段设置为外码。

ALTER TABLE COURSES ADD FOREIGN KEY(PRE_CNO) REFERENCES COURSES(CNO);

6.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式,

供应商表S(供应商代码SNO,供应商姓名SNAME,供应商状态STATUS,所在城市CITY); 零件表P(零件代码PNO,零件名PNAME,颜色COLOR,重量WEIGHT); 工程项目表J(工程项目代码JNO,工程项目名JNAME,所在城市CITY);

供应情况表SPJ(供应商代码SNO,零件代码PNO,工程项目代码JNO,供应数量QTY); 试用SQL语言完成如下操作: (1)按如下要求创建S表;

表名 列名 数据类型 宽度 约束

主码 SNO VARCHAR 3

唯一 SNAME VARCHAR 20 S 限在集合{10,20,30}中取值 STATUS INT 默认值为“北京” CITY VARCHAR 10

CREATE TABLE S ( SNOVARCHAR(3) PRIMARY KEY, SNAME VARCHAR(20) UNIQUE,

STATUS INT CHECK (STATUS IN(10,20,30)), CITY VARCHAR(10) DEFAULT ’北京’ ); (2)将P1号零件的重量增加5,颜色改为蓝色; UPDATE P

SET WEIGHT=WEIGHT+5,COLOR=’蓝’ WHERE PNO=’P1’;

(3)写出与下列表达式等价的SELECT查询语句; ΠJNO(σCITY='上海'(SSPJ)) SELECT JNO FROM S,SPJ

WHERE S.SNO=SPJ.SNO AND CITY=’上海’; (4)查询没有使用上海产的零件的工程号; SELECT JNO FROM J WHERE JNO NOT IN (SELECT JNOFROM JSP, S

WHERE JSP.SNO=S.SNOAND CITY=’天津’);

- 25 -

(5)在J表的JNO上按降序建立聚簇索引a1。

CREATE CLUSTERED INDEX a1 ON J (JNO DESC);

7. 设一个图书借阅管理数据库中包括三个关系模式: 图书(图书编号,书名,作者,出版社,单价) 读者(借书证号,姓名,性别,单位,地址)

借阅(借书证号,图书编号,借阅日期,归还日期,备注)

(1)试用关系代数查询价格在50到60元之间的图书编号和图书名称。

Π 图书编号, 书名(σ单价≥50∧单价≤60(图书))

(2)试用关系代数表达式查询“张三”借阅“C语言”的日期和归还日期。 Π 借阅日期, 归还日期(σ姓名=‘张三’∧书名=‘C语言’(图书借阅读者))

(3)试用SQL语言查询价格在50到60元之间的图书编号和图书名称。 SELECT 图书编号, 书名 FROM 图书

WHERE 单价 BETWEEN 50 AND 60

(4)试用SQL语言查询有备注信息的借阅记录。 SELECT * FROM 借阅

WHERE 备注 IS NOT NULL

(5)试用SQL语言查询“张三”借阅“C语言”的日期和归还日期。

SELECT 借阅日期, 归还日期 FROM 图书,借阅,读者

WHERE 图书.图书编号=借阅.图书编号 AND 读者.借书证号=借阅.借书证号 AND

姓名=‘张三’ AND 书名=‘C语言’

(6)试用SQL语句统计每个出版社的书目数量和平均单价。

SELECT COUNT(图书编号) 书目数量,AVG(单价) 平均单价 FROM 图书

GROUP BY 出版社

(7)试用SQL语言查询借阅过“家”或“童年”或“飘”的读者的借书证号。

SELECT 借书证号 FROM 借阅,图书

WHERE图书.图书编号=借阅.图书编号 AND

书名 IN (‘家’,‘童年’, ‘飘’)

(8)试用SQL语言查询没有借阅过“家”、“童年”、“飘”的读者的借书证号。

SELECT 借书证号 FROM 借阅,图书

WHERE图书.图书编号=借阅.图书编号 AND 书名 NOT IN (‘家’,‘童年’, ‘飘’)

(9)试用SQL语句检索借阅过名字中包含“数据库”三个字的图书,且姓“张”的读者的姓名和借书证号,并按借书证号降序排列。

SELECT 姓名, 读者.借书证号 FROM 图书,借阅,读者

WHERE 图书.图书编号=借阅.图书编号 AND 读者.借书证号=借阅.借书证号 AND

书名 LIKE ‘%数据库%’ AND 姓名 LIKE ‘张%’ ORDER BY 读者.借书证号 DESC

(10)试用SQL语句将“机械工业出版社”的书籍单价降低5%。

UPDATE 图书

SET 单价=单价*0.95

WHERE 出版社=‘机械工业出版社’

(11)试用SQL语句将“张三”借阅“C语言”的记录删除。

DELETE FROM借阅

WHERE 借书证号=(SELECT 借书证号 FROM 读者 WHERE 姓名=‘张三’)

- 26 -

AND 图书编号=

(SELECT 图书编号 FROM 图书 WHERE 书名=‘C语言’)

(12)建立读者“张三”借阅名为“李四”的作者的图书的视图ST,包含书名、单价、借阅日期和归还日期。

CREATE VIEW ST AS

SELECT 书名,单价,借阅日期, 归还日期 FROM 图书,借阅,读者

WHERE 图书.图书编号=借阅.图书编号 AND 读者.借书证号=借阅.借书证号 AND

姓名=‘张三’ AND作者=‘李四’

(13)将“S1”用户在“借阅”关系上查询记录的权限级联收回。

REVOKE SELECT ON借阅FROM S1 CASCADE ; (14)修改“借阅”表,将“备注”字段删除。

ALTER TABLE 借阅 DROP COLUMN 备注;

五、综合题

1.根据下列给出的关系模式和函数依赖集,指出该关系模式是第几范式?并说明理由。 1)R(X,Y,Z)码:XY F={XY→Z}

答:R∈BCNF 因为不存在非主属性对码的部分函数依赖和传递函数依赖,所以R∈3NF, 又因为所有的函数依赖的决定因素都是码,所以R∈BCNF。 2)R(X,Y,Z)码:XY和XZ F={Y→Z,XZ→Y}

答:R∈3NF因为不存在非主属性对码的部分函数依赖和传递函数依赖,所以R∈3NF,又因为所有的函数依赖的决定因素不都是码,所以R不是BCNF 。

3)R(X,Y,Z)码:X F={X→Y,X→Z}

答:R∈BCNF 因为不存在非主属性对码的部分函数依赖和传递函数依赖,所以R∈3NF,又因为所有的函数依赖的决定因素都是码,所以R∈BCNF。

4)R(X,Y,Z)码:WX F={X→Z,WX→Y}

答:R∈1NF 因为存在非主属性对码的部分函数依赖,所以R不属于2NF,所以R∈1NF。

2.设有商业销售记账数据库,一个顾客(顾客姓名,单位,电话号码)可以买多种商品,一种商品(商品名称,型号,单价)供应多个顾客。试画出对应的E-R图并将其转换为关系模式。 答:E-R图 M N 顾客 商品 销售 顾客 m n 单商品姓名 电单型 数量 价 名称 话位 号 根据E-R图转换的关系模式为:

顾客(顾客姓名,单位,电话号码) 商品(商品名称,型号,单价)

销售(顾客姓名,商品名称,型号,数量)

3. 设一个海军基地要建立一个舰队管理信息系统,它包括四个实体:

舰队:舰队名、基地地点;舰艇:舰艇号、舰艇名;

武器:武器号、武器名称、生产日期;官兵:官兵证号、姓名、出生日期、身份证号。

其中,一个舰队拥有多艘舰艇,一艘舰艇属于一个舰队;一艘舰艇安装多种武器,一种武器可安装于多艘舰

- 27 -

艇上,武器安装在舰艇上要记安装日期;一艘舰艇有多个官兵,一个官兵只属于一艘舰艇; (1)根据以上叙述,建立ER模型,要求标注联系类型。

(2)将ER模型转换成关系模型,要求标明每个关系模式的主码和外码。

舰队(舰队名,基地地点)

舰艇(舰艇号,舰艇名,舰队名) 武器(武器号,武器名称,生产日期)

官兵(官兵证号,姓名,出生日期,身份证号,舰艇号) 安装(舰艇号,武器号,时间)

4.已知某个研究所要建立一个项目管理信息系统,它包括三个实体:

科室有:科室编号,科室名;

职员有:工号,职员名,出生日期; 项目有:项目号,项目名称,开始日期。

其中:每个科室有多个职员,每个职员只在一个科室中,每个职员参加多种产品的研发,而每种产品的研发可由多个职员参加,每个职员参加某个项目都记录参加该项目的时间。 (1)根据以上叙述,建立ER模型,要求标注联系类型。

(2)将ER模型转换成关系模型,要求标明每个关系模式的主码和外码。

科室(科室编号,科室名)

职员(工号,职员名,出生日期,科室编号) 项目(项目号,项目名称,开始日期) 参与(工号,项目号,时间)

5.为体育部门建立数据库,其中包含如下信息:

运动队:队名、主教练,其中队名惟一标识运动队。 运动员:运动员编号、姓名、性别、年龄。 运动项目:项目编号、项目名、所属类别。

其中:每个运动队有多名运动员,每名运动员只属于一个运动队;每名运动员可以参加多个项目,每个项目可以有多个运动员参加。系统要记录每名运动员参加每个项目所得的名次、成绩以及比赛日期。 (1)根据以上叙述,建立ER模型,要求标注联系类型。

- 28 -

(2)将ER模型转换成关系模型,要求标明每个关系模式的主码和外码。

运动队(队名,主教练)

运动项目(项目编号,项目名,所属类别)

运动员(运动员编号,姓名,性别,年龄,队名) 参加(运动员编号,项目编号,名次,成绩,日期)

6.某商业集团数据库中有3个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。

若规定:商店与商品间存在“销售”关系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店每销售一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。 (1) 试画出E-R图,实体的属性可省;

月薪 商品 M 销售 N 商店 1 聘用 N 职工 月销售量 聘期

(2) 将E-R图转换成关系模式,并标出每个关系模式的主码和外码。 商店(商店编号,商店名,地址)

职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪) 商品(商品号,商品名,规格,单价) 销售(商店编号,商店号,月销售量)

7.某医院病房的信息管理系统中需要的信息如下:

科室:科室名,科室地址,科室电话病房:病房号,床位数量 医生:工作证号,姓名,职称,年龄病人:病历号,姓名,性别

若规定,一个科室有多个病房、多位医生,一个病房只属于一个科室,一个医生只属于一个科室,但可以负责多名病人的诊治;一名病人的诊治医生可以有多位,但只能入住一间病房。 (1) 试画出E-R图,实体的属性可省;

- 29 -

医生 N 销售 1 科室 1 聘用 N 病房 1 M 诊治 N 病人 N 入住

(2) 将E-R图转换成关系模式,并标出每个关系模式的主码和外码。

科室(科室名,科室地址,科室电话) 病房(病房号,床位数量,科室名) 医生(工作证号,姓名,职称,年龄,科室名) 病人(病历号,姓名,性别,病房号) 诊治(工作证号,病历号)

8.现有关系模式如下:

TEACHER(TNO,TNAME,DEPT,BNO,BNAME,BDATE,RDATE)。 TNO:教师编号TNAME:教师姓名DEPT:所在部门

BNO:图书编号BNAME:书名BDATE:借书日期RDATE:还书日期

若规定:教师编号是唯一的,教师编号函数确定教师姓名;教师只能在一个部门工作,一个部门有多名教师;图书编号是唯一的,图书编号函数确定书名;一名教师可以借多本图书,也可以反复借阅同本书,教师借阅图书时要登记借书日期和还书日期。

(1) 根据上述规定,写出关系模式TEACHER的基本函数依赖;

TNO -> (TNAME,DEPT) BNO -> BNAME

(TNO,BNO,BDATE) -> RDATE (2) 找出关系模式TEACHER的候选码; (TNO,BNO,BDATE)

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

因为存在非主属性(如TNAME,再如DEPT,又如BNAME)对于码的部分函数依赖, 所以未达到二范式,只属于一范式 (4) 如果TEACHER不属于3NF,请将TEACHER分解成3NF模式集。

R1(TNO,TNAME,DEPT) R2(BNO,BNAME) R3(TNO,BNO,BDATE, RDATE) 9.假设某商业集团数据库中有一关系模式R如下:

R (商店编号,商品编号,库存数量,部门编号,负责人) 每个商店的每种商品只在一个部门销售; 每个商店的每个部门只有一个负责人; 每个商店的每种商品只有一个库存数量。 (1) 根据上述规定,写出关系模式R的基本函数依赖;

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

- 30 -

(2) 找出关系模式R的候选码;

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

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

因为R中存在着非主属性’负责人’对候选码 (商店编号,商品编号)的传递函数依赖,所以R属于2NF,R不属于3NF。 (4) 如果R不属于3NF,请将R分解成3NF模式集。

R1 (商店编号,商品编号,库存数量,部门编号) R2 (商店编号,部门编号,负责人)

10. 设有一个记录各个球队队员每场比赛进球数的关系模式 R(队员编号,比赛场次,进球数,球队名,队长名)

如果规定每个队员只能属于一个球队,每个球队只有一个队长,要求: (1)写出关系模式R的基本函数依赖和主键。

(2)试说明R不是2NF模式的理由,并把R分解成2NF模式 (3) R分解成3NF模式,并说明理由。 参考解答: (1)基本的FD:

(队员编号,比赛场次) →进球数 队员编号→球队名 球队名→队长名

主键是 : (队员编号,比赛场次)

(2) 由于: 队员编号→球队名,即存在非主属性对主键的部分函数依赖, 所以 R 不是2NF 将R 分解为

R1={队员编号,比赛场次,进球数} , R2={队员编号,球队名,队长名} , R1, R2 都是2 NF 模式 (3) R1 是3 NF 模式

R2中: 队员编号→球队名,球队名→队长名

有队员编号→队长名,存在传递函数依赖, R2不是 3NF 将R2分解为:

R21(队员编号,球队名) , R22(球队名,队长名) 则R21, R22 均是 3NF

ρ={R1, R21, R22 }是一个3NF 的模式集.

11.假设为自学考试成绩管理设计了一个关系R(S#,SN,C#,CN,G,U),其属性的含义依次为考生号、姓名、课程号、课程名、分数和主考学校名称。

规定:每个学生学习一门课程只有一个分数;一个主考学校主管多门课程的考试,且一门课程只能属于一个主考学校管理;每名考生有唯一的考号,每门课程有唯一的课程号。

(1) 写出关系模式R基本的函数依赖集。 (2) 写出关系模式R的候选键。

(3) 关系模式R最高达到第几范式?为什么? (4) 将R规范化为3NF。 参考解答:

(1) F={(学号课程号)→G,课程号→U,学号→SN,课程号→CN} (2) (学号课程号)

- 31 -

(3) 最高达到第一范式,因为(学号课程号)是主键,但课程号→U,学号→SN,课程号→CN,即U, SN,CN这些非主属性均部分函数依赖于主键,所以只能达到第一范式。 (4) S (学号, SN)

C (课程号, CN, U) SC (学号,课程号, G)

12.设某人才市场数据库中有一个记录应聘人员信息的关系模式:

R(人员编号,姓名,性别,职位编号,职位名称,考试成绩)

如果规定:每人可应聘多个职位,每个职位可由多人应聘且必须参加相关考试,考试成绩由人员编号和职位编号确定。

(1) R最高达到第几范式?说明理由。 人员编号→(姓名,性别)

职位编号→职位名称(人员编号,职位编号)→考试成绩 主码为(人员编号,职位编号)

存在非主属性(姓名、性别、职位名称中任何一个)对于码的部分函数依赖,因此R为第一范式。 (2) 将R规范到3NF。

R1(人员编号,姓名,性别) R2(职位编号,职位名称)

R3(人员编号,职位编号,考试成绩)

13.设有一个反映工程及其所使用相关材料信息的关系模式:

R(工程号,工程名,工程地址,开工日期,完工日期,材料号,材料名称,使用数量)

每个工程的名称、地址、开工日期、完工日期唯一;每个工程使用若干种材料,每种材料可应用于若干工程中,但每个工程使用某种材料的数量一定。 (1) R最高达到第几范式?说明理由。

工程号→(工程名,工程地质,开工日期,完工日期) 材料号→材料名称,(工程号,材料号)→使用数量 主码为(工程号,材料号)

存在非主属性对于码的部分函数依赖,因此R为第一范式。 (2) 将R规范到3NF。

R1(工程号,工程名,工程地质,开工日期,完工日期) R2(材料号,材料名称)

R3(工程号,材料号,使用数量)

14.设关系模式R(学号,课程号,成绩,TNAME,TADDR),其属性分别表示学生学号、选修课程的编号,成绩、任课教师地址等意义。如果规定,每个学生每学一门课只有一个成绩;每门课只有一个教师任教;每个教师只有一个地址(此处不允许教师同名同姓)。

(1) 试写出关系模式R基本的函数依赖和候选键。 (2) 试把R分解成2NF模式集并说明理由。 (3) 试把R分解成3NF模式集,并说明理由。 解:

(1) F={(学号,课程号)→成绩,课程号→TNAME,TNAME→TADDR}

关系模式的侯选键是(学号,课程号)。

(2) 在原模式R中,TNAME不完全依赖于键(学号,课程号),不满足2NF,因此需进行分解为下列关系。

SC={学号,课程号,成绩} C={课程号,TNAME,TADDR}

- 32 -

SC中,成绩完全依赖于(学号,课程号),在C中,主属性是课程号,其他非主属性均完全依赖于课程号。因此这个分解是2NF模式。

(3) 上述两个模式,SC已是3NF,而在C中,TADDR传递依赖于课程号,因此还需分成两个模式:

C1(课程号,TNAME), T(TNAME,TADD)。 总共有三个模式。是第三范式了。

15.已知学生关系模式

S(Sno,Sname,SD,Sdname,Course,Grade)

其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。 (1)写出关系模式S的基本函数依赖和主码。

(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么? (3)将关系模式分解成3NF,并说明为什么? 参考解答:

(1)写出关系模式S的基本函数依赖和主码。 答: 关系模式S的基本函数依赖如下:

Sno→Sname,SD→Sdname,Sno→SD,(Sno,Course) →Grade 关系模式S的码为:(Sno,Course)。

(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么?

答: 原关系模式S是属于1NF的,码为(Sno,Course),非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于2NF。

消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成2NF如下: S1(Sno,Sname,SD,Sdname) S2(Sno,Course,Grade)

(3)将关系模式分解成3NF,并说明为什么? 答: 将上述关系模式分解成3NF如下:

关系模式S1中存在Sno→SD,SD→Sdname,即非主属性Sdname传递依赖于Sno,所以S1不是3NF。进一步分解如下:

S11(Sno,Sname,SD) S12(SD,Sdname) 分解后的关系模式S11、S12满足3NF。

对关系模式S2不存在非主属性对码的传递依赖,故属于3NF。所以,原模式S(Sno,Sname,SD,Sdname,Course,Grade)按如下分解满足3NF。

S11(Sno,Sname,SD) S12(SD,Sdname)S2(Sno,Course,Grade)

16.指出下列关系模式是第几范式 (1)R(X,Y,Z) FD={XY?Z}

其典型实例就是我们的SC(Sno,Cno,Grade) R(X,Y,Z)的主码为XY,非主属性为Z。

关系模式R(X,Y,Z)中不存在非主属性对码的部分函数依赖——>属于二范式 关系模式R(X,Y,Z)中不存在非主属性对码的传递函数依赖——>属于三范式 关系模式R(X,Y,Z)中起决定作用的只有码——>属于BC范式 故在函数依赖范围内,关系模式R(X,Y,Z)属于BC范式 (2)R(X,Y,Z) FD={ Y?Z, XZ?Y } R(X,Y,Z)的主码为XZ,非主属性为Y 属于第三范式:因为其中不存在非主属性;

但不属于BC范式:因为起决定作用的除了码以外还有非主属性(Y) (3)R(X,Y,Z) FD={ Y?Z, Y?X, X?YZ } R(X,Y,Z)的候选码为Y和X,非主属性为Z

- 33 -

不存在非主属性对码的部分函数依赖和传递函数依赖,故属于三范式 又,起决定作用的只有码,所以也是BC范式 (4)R(X,Y,Z) FD={ X?Y, X?Z } 典型实例Student(Sno,Sname,Ssex) R(X,Y,Z)的候选码为X,非主属性为Y和Z

不存在非主属性对码的部分函数依赖和传递函数依赖,故属于三范式 又,起决定作用的只有码,所以也是BC范式

(5)R(W,X,Y,Z) FD={ X?Z, WX?Y } 典型实例S_C( Sno,Cno, Grade,,Cname) R(W,X,Y,Z)的候选码为WX,非主属性为Y和Z 因为非主属性Z不是完全依赖于码(WX),而是依赖于码中的一部分(X), 所以存在非主属性对码的部分函数依赖,故没有达到二范式,仅属于一范式 (6)R(A,B,C,D) ,FD={B?D, AB?C } 典型实例S_C(Sno,Cno ,Grade,,Cname) R(W,X,Y,Z)的候选码为WX,非主属性为Y和Z 因为非主属性Z不是完全依赖于码(WX),而是依赖于码中的一部分(X), 所以存在非主属性对码的部分函数依赖,故没有达到二范式,仅属于一范式 (7)R(A,B,C) FD={ A?B, B?A, C?A } 典型实例:若规定一个系的学生都住在一个住处,一个住处也只能入住一个系,则典型实例为:S_Loc(Sdept, Sloc, Sno)

主码为C,非主属性为AB,

因存在非主属性(B)对码C的传递函数依赖,故不是三范式,最多是二范式 又,不存在非主属性对码的部分函数依赖,故属于二范式。

- 34 -