数据库系统原理复习题(九)——综合练习(简答题)
1.设教学管理数据库模式如下:
学生关系模式:S(SNO, SNAME, AGE, SDEPT)
学习关系模式:SC(SNO, CNO, SCORE)
课程关系模式:C(CNO, CNAME,TNAME)
其中SDEPT是学生所在系,TNAME是教师姓名。写出符合下列要求的SQL语句:
(1)检索软件工程系全体学生的姓名和学号;
(2)统计每一门课程的平均成绩;
(3)查询教过‘王林’同学的教师名;
(4)定义表S (8分)
答:
(1):select SNO, SNAME from S where SDEPT ='软件工程系';
(2):select AVG(SCORE),CNO from SC group byCNO;
(3):select TNAME from S,SC,C where SNAME ='王林' and S.SNO = SC.SNO and SC.CNO = C.CNO;
(4):create table S(
SNO int,
SNAME varchar(20),
AGE int,
SDEPT varchar(30),
primary key (SNO)
);
参考答案:
设教学管理数据库模式如下:
学生关系模式:S(SNO, SNAME, AGE, SDEPT)
学习关系模式:SC(SNO, CNO, SCORE)
课程关系模式:C(CNO, CNAME,TNAME)
其中SDEPT是学生所在系,TNAME是教师姓名。写出符合下列要求的SQL语句:
(1)检索软件工程系全体学生的姓名和学号;
Select sno,sname From S
Where Sdept=’软件工程系’;
(2)统计每一门课程的平均成绩;
Select Cno,Avg(SCORE) From SC
GroupBy Cno;
(3)查询教过‘王林’同学的教师名;
Select Tname from s,c,sc
where s.sno=sc.sno and sc,cno=c.cno andsname=’王林’
(4)定义表S
CREATE TABLE S
(SNO CHAR(2) Primary Key,
SNAME VARCHAR(8),
AGEINT,
SDEPT VARCHAR(8) );
当前状态:已作答
2.请完成下列关于数据库设计的概念设计和逻辑设计:
设有一教学管理数据库,其涉及到的实体集有:学生、课程、教师、班级。
(1)给每个实体设计3个属性,并标出键码。
(2)假如每门课程只有一位任课教师;每位教师只上一门课程。而其他的语义以我校现实为准,确定实体集之间的联系集类型,完成该数据库的概念设计(画出ER图)。
(3)将该E-R图转换为等价的关系模型表示的数据库逻辑结构。 (8分)
答:
(1):学生:学号、姓名、年龄、性别、班级号(主键:学号外键:班级表的班级号)
课程:课程号、课程名、任课老师、学分(主键:课程号)
教师:工号、姓名、部门、年龄、性别(主键:工号)
班级:班级号、班级名、班级人数、班级班主任(主键:班级号)
参考答案:
(1)2分 (2)5分,其中:实体集2分,联系集3分
(3)3分
班级(班号,专业,系别) 学生(学号,姓名,班号)
课程(课程号,课程名,学分)教师(教师号,姓名,单位,课程号)
选修(学号,课程号,成绩)
当前状态:已作答
3.设有关系模式R(U,F), 其中:
U={A, B, C, D, E, P}, F={A->C, C->D,B->C,DE->C, CE->A}
(1)求出R的所有候选关键字;
(2)R是第几范式?为什么?
(3)将R分解为具有无损连接性,并保持依赖的3NF。 (10分)
答:
(1):BDE ABE
(2):R是2NF, 因为存在非主属性传递依赖。
(3):R1 {ABCDE} A->C, C->D, B->C,DE->C
R2 P
参考答案:
(1)BEP
(2)1NF,因为B->C是2NF违例(存在非主属性部分函数依赖码的情况)
(3)将R分解为具有无损连接性,并保持依赖的3NF.
按照算法分解得:6个模式如下
(A,C) (C,D) (B,C) (E,D,C) (C,E,A) (B,E,P)
(A,C) 是 (C,E,A)的属性子集,因此可以合并:
(C,E,A) 函数依赖集:{CE->A, A->C} 3NF
同理:
(C,D)是 (E,D,C)的属性子集,因此可以合并:
(E,D,C) 函数依赖集:{DE->C, C->D} 3NF
简化后:4个模式
(B,C) (E,D,C) (C,E,A) (B,E,P)
当前状态:已作答
4.设有三个关系及其实例如下:
S表
学号Sno 姓名Sname 性别Ssex 所在系Sdept
95001 张玲 女 计算机
95002 黎明 男 软件工程
95003 王燕 女 软件工程
95004 钱勇 男 电子工程
95005 刘扬 女 软件工程
C表
课程号Cno 课程名Cname
1 数学
2 数据结构
3 操作系统
4 C语言
5 数据库
R表
学号Sno 课程号Cno 成绩Grade
95001 1 92
95001 2 88
95001 4 95
95002 4 75
95004 4 80
95004 2 65
95002 3 78
95001 3 80
分别回答下列问题:
(1) 写出代数表达式 ?S.sno,Sname(? Ssex=’女’ (S)) 的结果关系;
(2) 写出代数表达式 ?S.sno,Sname(S ∞(? Grade<80(R))) 的结果关系;
(3) 写出代数表达式 ?Sname,Cname,Grade(? Sno=’95001’ (S)∞R∞C)) 的结果关系;
(8分)
答:
(1):
95001 张玲
95003 王燕
95005 刘扬
(2):
95002 黎明
95004 钱勇
(3):
张玲数学 92
张玲数据结构 88
张玲 C语言 95
参考答案:
(1)
学号 姓名
95001张玲
95003王燕
95005刘扬
(2)
学号 姓名
95002黎明
95004钱勇
(3)
姓名 课程名 成绩
张玲 数学 92
张玲 数据结构 88
张玲 C语言 95
张玲 操作系统 80
当前状态:已作答
5.试述数据库设计过程。 (8分)
分为6个步骤,依次为:需求分析概念结构设计 逻辑结构设计 物理结构设计 数据库实施 数据库运行和维护。
参考答案:
这里只概要列出数据库设计过程的六个阶段: 1) 需求分析 2) 概念结构设计 3) 逻辑结构设计 4) 数据库物理设计 5) 数据库实施 6) 数据库运行和维护这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、数据库运行和维护。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
当前状态:已作答
6.已知关系R(A,B,C,D,E,F),关系S(E,F)。关系实例如下:
R: S:
A B C D E F E F
z a e f x y x y
x b c d z y z y
z a e f z y
x b c d x y
x a e f y z
y a e f z x
(1) 给出∏B,C,D(σA=E(R))的运算结果(4分)
(2) 给出 S X S的运算结果(4分)
(3) 给出 R ∞ S的运算结果 (4分)
(8分)
答:
(1):{a,e,f} {b,c,d}
(2):{x,y,x,y} {x,y,z,y} {z,y,x,y} {z,y,z,y}
(3):{z,a,e,f,x,y} {x,b,c,d,x,y} {z,a,e,f,z,y} {x,b,c,d,x,y}
参考答案:
(1)<br />
B C D<br />
B C d<br />
(2) SXS的运算结果为:<br />
E F E F<br />
X y x Y<br />
X y z Y<br />
Z y x Y<br />
Z y z Y<br />
(3)<br />
A B C D E F<br />
Z a e f x Y<br />
X b c d z Y<br />
Z a e f z Y<br />
X b c d x Y<br />
<br />
当前状态:已作答
7.设有三个关系及其实例如下:
S表
学号Sno 姓名Sname 性别Ssex 所在系Sdept
95001 张玲 女 计算机
95002 黎明 男 软件工程
95003 王燕 女 软件工程
95004 钱勇 男 电子工程
95005 刘扬 女 软件工程
C表
课程号Cno 课程名Cname
1数学
2数据结构
3操作系统
4C语言
5数据库
R表
学号Sno 课程号Cno 成绩Grade
950011 92
950012 88
950014 95
950024 75
950044 80
950042 65
950023 78
950013 80
分别回答下列问题:
(1) 写出代数表达式 S.sno,Sname (Ssex=’女’ (S)) 的结果关系;
(2) 写出代数表达式 S.sno,Sname(S ∞( Grade<80(R))) 的结果关系;
(3) 写出代数表达式 Sname,Cname,Grade( Sno=’95001’ (S)∞R∞C)) 的结果关系;
(8分)
答:
(1):
95001 张玲
95003 王燕
95005 刘扬
(2):
95002 黎明
95004 钱勇
(3):
张玲数学 92
张玲数据结构 88
张玲 C语言 95
参考答案:
(1)
学号 姓名
95001 张玲
95003 王燕
95005 刘扬
(2)
学号 姓名
95002 黎明
95004 钱勇
(3)
姓名 课程名 成绩
张玲 数学 92
张玲 数据结构 88
张玲 C语言 95
张玲 操作系统 80
当前状态:已作答
8.设有如下实体:
学生:学号、单位、姓名、性别、年龄
课程:编号、课程名、开课单位
教师:教师号、姓名、性别、职称
单位:单位名称、电话
上述实体中存在如下联系:
(1)一个学生可选修多门课程,一门课程可为多个学生选修;
(2)一个教师可讲授多门课程,一门课程可为多个教师讲授;
(3)一个单位可有多个教师,一个教师只属于一个单位。
试完成如下工作:
(1)分别设计学生选课和教师任课两个局部信息的结构E-R 图。
(2)将上述设计完成的E-R图合并成一个全局E-R图。
(3)将该全局E-R图转换为等价的关系模型表示的数据库逻辑结构。
(8分)
答:ER图画在纸上。
参考答案:
(3)
学生(学号,单位,姓名,性别,年龄)
课程(编号,课程名,开课单位)
教师(教师号,姓名,性别,职称,单位)
单位(单位名称,电话)
讲授(教师号,课程号)
选修(学号,课程号)
当前状态:已作答
9.设有关系模式R(U,F), 其中:
U={A, B, C, D, E}, F={A->C, C->D,B->C,CE->A}
(1) 求出R的所有候选关键字
(2) R是第几范式?为什么?
(3)给出R的保持函数依赖并无损连接的3NF分解?
(8分)
答:
(1):ABE
(2):2NF 存在传递依赖
(3):R1 AB A->C B->C
R2 DCE C->D CE->A
参考答案:
(1)BE是R的唯一关键字。
(2)R是第1范式,因为B->C,B是主属性,但不是关键字,C是非主属性,有非主属性部分依赖关键字的函数依赖存在。
(3)保持函数依赖的3NF分解{ACE,BC,CD}
R的保持函数依赖并无损连接的3NF分解{ACE,BC,CD,BE}
当前状态:已作答
10.设教学管理数据库模式如下:
学生关系模式:S(SNO, SNAME, AGE, SEX, SDEPT)
学习关系模式:SC(SNO, CNO, SCORE)
课程关系模式:C(CNO, CNAME, CDEPT, TNAME)
试用SQL的查询语句表示下列查询:
(1)检索年龄大于21岁的男生的学号、姓名;
(2)检索电子系学生选修的计算机系开设的课程名和任课教师;
(3)检索“C语言”课程的成绩在90分以上的学生学号、姓名、年龄;
(4)检索LI老师教过的课程名和开课系名。 (8分)
答:
(1):select SNO, SNAME from S where SEX = '男' and AGE> 21;
(2):select CNAME,TNAME from SC,S,C whereCDEPT = '计算机系' and SDEPT = '电子系' and SC.SNO = S.SNO and C.CNO = SC.CNO;
(3):select SNO, SNAME, AGE from SC,S,Cwhere CNAME = 'C语言' and SCORE >= 90 and SC.SNO = S.SNO and C.CNO = SC.CNO;
(4):select CNAME,CDEPT from C,SC whereTNAME = 'LI老师' and C.CNO = SC.CNO;
参考答案:
(1)SELECT SNI,SNAME FROMS WHERE SEX='男' ANDAGE>21;
(2)SELECT CNAME,TNAME FROM C WHERE CDEPT='计算机系' AND CNOIN
(SELECT CNO FROM S INNER JOIN SC ON S.SNO=SC.SNO WHERE SDEPT='电子系');
(3)SELECT SNO,SNAME,AGE FROM S WHERE SNO IN
(SELECT SNO FROM C,SC WHERE SC.CNO=C.CNO AND CNAME='C语言'ANDSCORE>=90);
(4)SELECT CNAME,CDEPT FROM C WHERE TNAME='LI';
当前状态:已作答
11.设教学管理数据库模式如下:
学生关系模式:S(SNO, SNAME, AGE, SEX, SDEPT)
学习关系模式:SC(SNO, CNO, SCORE)
课程关系模式:C(CNO, CNAME, CDEPT, TNAME)
其中:SNO是学号;SNAME是学生姓名;SDEPT是学生所在系;CNO是课程号;CNAME 是课程名;CDEPT是课程所在系;TNAME 是任课教师;SCORE是成绩;
试用SQL语句表示下列操作:
(1) 查询“刘”老师所教的计算机系的课程名;
(2) 检索学号为S3学生所学课程的课程名与任课老师名;
(3) 往基本表S中插入一个学生元组('S5','DING', 18, '计算机系');
(4) 统计每门课程的最高成绩。 (10分)
答:
(1):select CNAME from C where CDEPT = '计算机系' andTNAME = '刘';
(2):select CNAME,TNAME from S, SC, C whereSNO = 'S3' and SC.SNO = SC.SNO and SC.CNO = C.CNO;
(3):insert into S values('S5', 'DING', 18,'计算机系');
(4):select MAX(SCORE),CNO from SC group byCNO;
参考答案:
设教学管理数据库模式如下:
(1)SELECT CNAME FROM C WHERE CDEPT='计算机系' AND TNAME='刘';
(2)SELECT CNAME,TNAME FROM C WHERE CNO IN
(SELECT CNO FROM SC WHERE SNO='S3');
(3)INSERT INTO S(SNO, SNAME, AGE, SDEPT)
VALUES('S5', 'DING', 18, '计算机系');
(4) SELECT CNO,MAX(SCORE) FROM SC
GROUP BY CNO;
当前状态:已作答
12.试述如何进行事务故障的恢复? (8分)
由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改
事务故障的恢复由系统自动完成,不需要用户干预
事务故障的恢复步骤
1. 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
2. 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”(Befor Image, BI)写入数据库。
插入操作,“更新前的值”为空,则相当于做删除操作
删除操作,“更新后的值”为空,则相当于做插入操作
若是修改操作,则用BI 代替 AI(After Image)
3. 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
4. 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。
参考答案:
事务故障的恢复步骤是:
(1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
(2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。
(3)继续反向扫描日志文件,做同样处理。
(4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
当前状态:已作答