资源描述
(完整word版)数据库系统概论试题及答案(其它题)
数据库系统概论复习资料:
第一章
假设教学管理规定:
①一个学生可选修多门课,一门课有若干学生选修;
②一个教师可讲授多门课,一门课只有一个教师讲授;
③一个学生选修一门课,仅有一个成绩。
学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。
要求:根据上述语义画出ER图,要求在图中画出实体的属性并注明联系的类型;
成绩
教师编号
教师姓名
学生
选修
m
课程
教师
讲授
n
n
1
学号
姓名
课程号
课程名
解答:
第2章关系数据库
1、设有如下所示的关系S(S#,SNAME,AGE,SEX)、C(C#,CNAME,TEACHER)和SC(S#,C#,GRADE),试用关系代数表达式表示下列查询语句:
(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。
(2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。
(3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)。
(4)检索”李强”同学不学课程的课程号(C#)。
(5)检索至少选修两门课程的学生学号(S#)。
(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。
(7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。
(8)检索选修课程号为k1和k5的学生学号(S#)。
(9)检索选修全部课程的学生姓名(SNAME)。
(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。
(11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。
解:本题各个查询语句对应的关系代数表达式表示如下:
(1). ∏C#,CNAME(σTEACHER=‘程军’(C))
(2). ∏S#,SNAME(σAGE>21∧SEX=”男”(S))
(3). ∏SNAME{s [∏S#,C#(sc)÷∏C#(σTEACHER=‘程军’(C))]}
(4). ∏C#(C)- ∏C#(σSNAME=‘李强’(S) SC)
(5). ∏S#(σ[1]=[4]∧[2]≠[5] (SC × SC))
(6). ∏C#,CNAME(C (∏S#,C#(sc)÷∏S#(S)))
(7). ∏S#(SC∏C#(σTEACHER=‘程军’(C)))
(8). ∏S#,C#(sc)÷∏C#(σC#=’k1’∨ C#=’k5’(C))
(9). ∏SNAME{s [∏S#,C#(sc)÷∏C#(C)]}
(10). ∏S#,C#(sc)÷∏C#(σS#=’2’(SC))
(11). ∏S#,SNAME{s [∏S#(SCσCNAME=‘C语言’(C))]}
2、关系R和S如下图所示,试计算R÷S。
R
A
B
C
D
a
b
c
d
a
b
e
f
a
b
h
k
b
d
e
f
b
d
d
l
c
k
c
d
c
k
e
f
S
C
D
c
d
e
f
3、已知关系r、s、w,如下图所示,计算T=( (r ∪s)÷w) S。
r关系 s关系 w关系
A
B
C
1
b
2
2
a
3
1
b
1
3
a
2
A
B
C
2
b
1
3
b
1
3
a
1
3
a
2
B
C
a
2
b
1
答:步骤1:计算出新关系R1=r ∪s
R1=
A
B
C
1
b
2
2
a
3
1
b
1
3
a
2
2
b
1
3
b
1
3
a
1
步骤2:计算出新关系R2=R1÷w
R2=
A
3
步骤3:计算出新关系R3=R2 s
R3=
A
B
C
3
b
1
3
b
2
3
a
2
即T= R3=(r ∪s)÷w) s
4、设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式(具体见教材74页第5题):
1)求供应工程J1零件的供应商号码SNO:
πSno(σJno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO:
πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))
3)求供应工程J1零件为红色的供应商号码SNO:
πSno(σPno=‘P1‘ (σCOLOR=’红‘ (P)∞SPJ))
4)求没有使用天津供应商生产的红色零件的工程号JNO:
πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P)
5)求至少用了供应商S1所供应的全部零件的工程号JNO:
πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ))
第3章关系数据库标准语言SQL
1、设有如下关系表R:
R(No,NAME,SEX,AGE,CLASS)
主关键字是NO
其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。
写出实现下列功能的SQL语句。
①插入一个记录(25,“李明”,“男”,21,“95031”);
②插入“95031”班学号为30、姓名为“郑和”的学生记录;
③将学号为10的学生姓名改为“王华”;
④将所有“95101”班号改为“95091”;
⑤删除学号为20的学生记录;
⑥删除姓“王”的学生记录;
答:①INSERT INTO R VALUES(25,“李明”,“男”,21,“95031”)
②INSERT INTO R(NO,NAME,CLASS) VALUES(30,“郑和”,“95031”)
③UPDATE R SET NAME=“王华”WHERE NO=10
④UPDATE R SET CLASS=“95091”WHERE CLASS=“95101”
⑤DELETE FROM R WHERE NO=20
⑥DELETE FROMR WHERE NAME LIKE“王%”
2、设学生课程数据库中有三个关系:
学生关系S(S#,SNAME,AGE,SEX)
学习关系SC(S#,C#,GRADE)
课程关系C(C#,CNAME)
其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。
用SQL语句表达下列操作
(1)检索选修课程名称为“MATHS”的学生的学号与姓名
(2)检索至少学习了课程号为“C1”和“C2”的学生的学号
(3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
(4)将一个新学生元组(学号:200215128;姓名:王丽;年龄:19;性别:女)插入到S表中
(5)将选修课程号为“C1”的同学成绩加5分
(6)找出每个学生超过他选修课程平均成绩的课程号
(7)查询查询选修“C2”号课程且成绩在90分以上的所有学生。
(8)查询所有姓刘的学生的姓名、学号和性别
(9)检索平均成绩超过80分的学生学号和平均成绩
(10)检索选修了全部课程的学生姓名
(11)检索选修了三门课以上的学生的姓名
(12)创建视图stu_info,包括选修“C1”号课程所有学生的学号、姓名、性别、年龄、选修课程号、课程名、成绩
答案:
(1)SELECT SNAME,AGE
FROM S,SC,C
WHERE S.S#=SC.S#
AND C.C#=SC.C#
AND CNAME=’ MATHS’
(2) SELECT S#
FROM SC
WHERE CNO=’C1’ AND S# IN( SELECT S#
FROM SC
WHERE CNO=’C2’)
(3)SELECT S#,SNAME,AGE
FROM S
WHERE AGE BETWEEN 18 AND 20
(4) INSERT INTO S(S#,SNAME,AGE,SEX)
VALUES(“200215128”,”王丽”,19,”女”);
(5) UPDATE SC
SET GRADE = GRADE+5
WHERE C#=‘C1’;
(6) SELECT S#,C#
FROM S X WHERE GRADE>=(SELECT AVG(GRADE) FROM C Y WHERE Y.S#=X.S#);
(7) SELECT S.S#,SNAME FROM S,SC WHERE S.S#=SC.S# AND SC.C#=’C2’ AND SC.GRADE>90;
(8) SELECT SNAME,S#,SEX FROM S WHERE LIKE ‘刘%’;
(9) SELECT S# ,AVG(GRADE) ‘平均成绩’
FROM SC
GROUP BY S#
HAVING AVG(GRADE)>80
(10) SELECT SNAME
FROM S
WHERE NOT EXISTS
(SELECT *
FROM C
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE S#=S.S# AND C#=C.C#
)
)
(11) SELECT SNAME
FROM S,SC
WHERE S.S#=SC.S#
GROUP BY SNAME
HAVING COUNT(*)>3
(12)CREATE VIEW STU_INFO AS
SELECT S.SNO,SNAME,SEX,AGE,C.CNO,CNAME,GRADE
FROM S,SC,C
WHERE S.SNO=SC.SNO AND C.CNO= SC.CNO AND C.CNO=‘C1’
3、设学生-课程数据库中包括三个表:
学生表:Student (Sno,Sname,Sex,Sage,Sdept)
课程表:Course(Cno,Cname,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
其中Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit 、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。
试用SQL语言完成下列项操作:
(1)查询选修课程包括“1042”号学生所学的课程的学生学号
(2)创建一个计科系学生信息视图S_CS_VIEW,包括Sno学号、Sname姓名、Sex性别;
(3)通过上面第2题创建的视图修改数据,把王平的名字改为王慧平
(4)创建一选修数据库课程信息的视图,视图名称为datascore_view,包含学号、姓名、成绩。
(1) SELECT DISTINCT SNO
FROM SC SCX
WHERE NOT EXISTS
(SELECT *
FROM SC SCY
WHERE SCY.SNO = ' 1042' AND
NOT EXISTS
(SELECT *
FROM SC SCZ
WHERE SCZ.SNO=SCX.SNO AND
SCZ.CNO=SCY.CNO));
(2) CREATE VIEW S_CS_VIEW
AS
SELECT SNO,SNAME,SEX
FROM STUDENT
WHERE SDEPT=’CS’
(3)UPDATE S_CS_VIEW
SET SNAME=’ 王慧平’
WHERE SNAME=’ 王平’
(4) CREATE VIEW DATASCORE_VIEW
AS
SELECT SNO 学号、SNAME 姓名、GRADE 成绩
FROM STUDENT,SC,COURSE
WHERE STUDENT.SNO=SC.SNO
AND COURSE.CNO=SC.CNO
AND CNAME=’ 数据库’
第6章关系数据理论
1、设有关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中属性分别表示:学号、所在系、学生住处、课程号、成绩。假定每个系的学生住在同一个地方,每个学生可选修多门课程,每门课程可被多个学生选修,请根据语义写出该关系模式的主码及基本函数依赖,并通过模式分解,使其分解为与之等价的3NF模式集。
答:主码为(Sno,Cno)。
基本函数依赖:(Sno,Cno) Grade
P
Sno Sdept,(Sno,Cno) Sdept
P
Sno Sloc,(Sno,Cno) Sloc,Sdept Sloc
分解结果(3NF):SC(Sno,Cn,Grade)
S-D(Sno,Sdept)
D-L(Sdept,Sloc)
2、已知学生关系模式
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)
3、建立一个关于系、学生、班级、学会等诸信息的关系数据库。
学生:学号、姓名、出生年月、系名、班号、宿舍区。
班级:班号、专业名、系名、人数、入校年份。
系:系名、系号、系办公地点、人数。
学会:学会名、成立年份、办公地点、人数。
语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在?
解:(1)关系模式如下:
学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)
班级:C(Class,Pname,Dept,Cnum,Cyear)
系:D(Dept,Dno,Office,Dnum)
学会:M(Mname,Myear,Maddr,Mnum)
(2) 传递依赖如下:
A、关系模式S中,由于SnoàDept,而DeptàSno ,DeptàRno(宿舍区)
所以Sno与Rno之间存在着传递函数依赖。
由于ClassàDept,Dept à Class,DeptàRno
所以Class与Rno之间存在着传递函数依赖。
由于SnoàClass,ClassàSno,ClassàDept
所以Sno与Dept之间存在着传递函数依赖。
B、关系模式C中,由于ClassàPname,PnameàClass,PnameàDept
所以C1ass与Dept之间存在着传递函数依赖。
C、关系模式D中,Dept与Office,Dept与Dnum之间不存在传递依赖。
D、关系模式M中不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
A、学生S候选码:Sno;外部码:Dept、Class;无全码
B、班级C候选码:Class;外部码:Dept;无全码
C、系D候选码:Dept或Dno;无外部码;无全码
D、学会M候选码:Mname;无外部码;无全码
第7章数据库设计
1、现有一局部应用,包括两个实体:“出版社”和“作者”,这两个实体是多对多的联系,请读者自己设计适当的属性,画出 E 一 R 图,再将其转换为关系模型(包括关系名、属性名、码和完整性约束条件)。
答:
关系模型为:作者(作者号,姓名,年龄,性别,电话,地址)出版社(出版社号,名称,地址,联系电话)出版(作者号,出版社号,书的数量)出版关系的主码作者号,出版社号分别参照作者关系的主码作者号和出版社关系的主码出版社号。
2、设有如下实体:学生:学号、单位、姓名、性别、年龄、选修课程名 课程:编号、课程名、开课单位、任课教师号 教师:教师号、姓名、性别、职称、讲授课程编号 单位:单位名称、电话、教师号、教师名
上述实体中存在如下联系:
(1).一个学生可选修多门课程,一门课程可为多个学生选修;(2).一个教师可讲授多门课程,一门课程可为多个教师讲授;(3).一个单位可有多个教师,一个教师只能属于一个单位。
试完成如下工作:(1).分别设计学生选课和教师任课两个局部信息的结构E-R图。(2).将上述设计完成的E-R图合并成一个全局E-R图。(3).将该全局E-R图转换为等价的关系模型表示的数据库逻辑结构。
解:(1).学生选课、教师任课局部E-R图如下所示。
开课
单位
课程
选修
学生
拥有
姓名
性别
学号
课程名
教师号
编号
单位名
年龄
1
1
m
m
n
m
学生选课局部E-R图
课程
讲授
编号
姓名
性别
教师号
年龄
m
n
教师
m
属于
1
教师授课局部E-R图
单位
电话
单位名
(2).合并后的全局E-R图如下所示。
属于
单位
课程
选修
学生
拥有
教师
开课
讲授
1
1
1
m
m
m
n
n
m
m
全局E-R图
为避免图形复杂,下面给出各实体属性:
单位:单位名、电话
学生:学号、姓名、性别、年龄
教师:教师号、姓名、性别、职称
课程:编号、课程号
(3).该全局E-R图转换为等价的关系模型表示的数据库逻辑结构如下:
单位(单位名,电话)
教师(教师号,姓名,性别,职称,单位名)
课程(课程编号,课程名,单位名)
学生(学号,姓名,性别,年龄,单位名)
讲授(教师号,课程编号)
选修(学号,课程编号)
3、请设计一个图书馆数据库,此数据库中对每个借阅者保存读者记录,包括:读者号,姓名,地址,性别,年龄,单位。对每本书存有:书号,书名,作者,出版社。对每本被借出的书存有读者号、借出日期和应还日期。要求:给出 E 一 R 图,再将其转换为关系模型。
答 :E 一 R 图为:
关系模型为:读者(读者号,姓名,地址,性别,年龄,单位)书(书号,书名,作者,出版社)借书(读者号,书号,借出日期,应还日期)
第11章 并发控制
设 Tl ,T2,T3是如下的 3 个事务:
Tl :A : = A + 2 ;
T2:A : = A * 2 ;
T3:A : = A **2 ; ( A <-A*A)
设 A 的初值为 0 。
( l )若这 3 个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。
答 :A 的最终结果可能有 2 、 4 、 8 、 16 。因为串行执行次序有 Tl T2T3、 Tl T3T2、T2T1T3、T2T3Tl 、T3T1T2、T3T2 Tl 。对应的执行结果是 16 、 8 、 4 、 2 、 4 、 2 。
( 2 )请给出一个可串行化的调度,并给出执行结果
答:
最后结果 A 为 16 ,是可串行化的调度。
( 3 )请给出一个非串行化的调度,并给出执行结果。
答:
最后结果 A 为 0 ,为非串行化的调度。
( 4 )若这 3 个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
答:
展开阅读全文