数据库技术基础模拟试题答案 下载本文

----- -- - - -- - -- - -- - -- - -- - -- : ---业---专 ---- - -- - -- - -- - -- - -- - -- : 级 年 线 - 封 : 院-学 密 - - -- - -- -: ---名--姓 ---- -- - -- - - -- - -- - -- - -- - -- - -: ---号---学--

-国防科技大学2008-2009学年春季学期 《数据库技术基础》考试参考答案

考试形式: 开卷 考试时间: 150 分钟 满分: 100 分。

题 号 一 二 三 四 五 六 七 八 九 总分 得 分 评阅人 注意:1、所有答题都须写在此试卷纸密封线右边,写在其它纸上一律无效。 2、密封线左边请勿答题,密封线外不得有姓名及相关标记。

得分 一、问答题(共3小题,每小题5分,共15分)

1、有如下查询Q1和Q2: Q1:SELECT * FROM R; Q2:(SELECT * FROM R)

INTERSECT (SELECT * FROM R);

Q1和Q2是否产生同样的结果,为什么?

答:如果R中有重复的记录时,Q1和Q2结果不一样。因为Q2中的INTERSECT是集合运算,去除了重复的记录。

2、比较完整性约束中的主键约束(PRIMARY KEY)和唯一性约束(UNIQUE),至少说明它们的两个不同之处。

答:每个表中只能有1个PRIMARY KEY属性或属性组,但是能够有多个UNIQUE属性;PRIMARY KEY属性或属性组不能为NULL,但UNIQUE属性可以为NULL。

3、什么是事务的ACID性质?

答:“A”表示“原子性”,即事务的操作要么全部被执行,要么全部不被执行; “I”表示“独立性”,每个事务的执行必须显现为如同没有其他事务在同时执行; “D”表示“持久性”,即一旦事务已经完成,则该事务对数据库的影响就永远不会消失;

“C”表示“一致性”,即要求事务的执行要保持数据库的一致性。 得分 TRUE (T)、FALSE (F)和UNKNOWN (U)作为变量X、Y和Z的全部可能取值,

二、填空题(共5小题,每小题1分,共5分)

用T、F和U填写下表。

解:

X Y Z (X AND Y) OR (NOT Z)

U U T T T U F F

F U F T

U U T U

U U U U

得分 三、解答题(共5小题,每小题4分,共20分)

考虑如下关系表,每个关系的主键用下划线标明。

employee(EID, name, salary, DNo)表示雇员ID、姓名、工资、所在的部门编号。

department(DNo, DeptName, MgrID)表示部门编号、部门名称和该部门的经理ID。

project(PNo, location, ProjName)表示项目的编号、地点、项目名称。

HourLog(EID, PNo, hours)表示雇员(EID)为项目(PNo)工作的小时数(hours)。

假定每个部门只有1个经理,每个雇员可以参加多个项目(包括0个),每个项

目至少有1个雇员参加,HourLog关系列出了雇员参加的项目的工作小时数。

----- -- - - -- - -- - -- - -- - -- - -- : ---业---专 ---- - -- - -- - -- - -- - -- - -- : 级 年 线 - 封 : 院-学 密 - - -- - -- -: ---名--姓 ---- -- - -- - - -- - -- - -- - -- - -- - -: ---号---学

---1、用关系代数表达查询:找出为一个项目工作时数超过

100的雇员的ID和姓名。

解:

?EID,Name(?hours?100(employee??hourlog))

2、用关系代数表达查询:找出没有参加任何项目的雇员的姓名。 解:

?Name(employee)??Name(employee??hourlog)

?Name(employee??(?EID(employee)??EID(hourlog)))

3、用SQL表达查询:找出是部门D10并且参加项目P345的雇员姓名和ID。解:

SELECT Name, Employee.EID FROM Employee, Hourlog

WHERE Employee.DNo = ‘D10’ AND

Employee.EID = Hourlog.EID AND Hourlog.PNo = ‘P345’;.

SELECT Name, EID FROM Employee

WHERE DNo = ’D10’ AND

EID IN (SELECT EID

FROM Hourlog

WHRERE PNo = ’P345’);.

4、用SQL表达查询:找出至少参加了2个项目的雇员的ID和姓名。 解:SELECT employee.EID, name

FROM employee, HourLog

WHERE employee.EID = HourLog.EID GROUP BY employee.EID, name HAVING COUNT(PNo) >= 2;