当前位置:首页 > 数据库试卷及答案
⑥DELETE FROMR WHERE NAME LIKE“王% 三、综合题(每题15分,共30分) 1、已知学生关系模式
S(Sno,Sname,SD,Sdname,Course,Grade)
其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。 (1)写出关系模式S的基本函数依赖和主码。
(2)原关系模式S为几范式?为什么?分解成高一级范式,并说明为什么? (3)将关系模式分解成3NF,并说明为什么?
答:(1) 关系模式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)
2.设有关系S、SC、C,试用关系代数、元组关系演算表达式和SQL完成下列操作。(15分,每小题5分)
S(S#,SNAME,AGE,SEX) 例:(001,'李强',23,’男') SC(S#,C#,SCORE) 例:(003,'C1',83)
C(C#,CNAME,TEACHER) 例:('C1','数据库原理','王华')
(1)试用关系代数检索选修了“程军”老师所授课程之一的学生姓名。
(2)试用元组关系演算表达式检索选修了“程军”老师所授课程之一的学生姓名。
网络数据库 试题第5页(共17页)
(3)试用元组关系演算表达式检索选修了“程军”老师所授课程之一的学生学号。 (4)试用SQL找出“程序设计”课程成绩在90分以上的学生姓名。 答案:(1)∏SNAME(S SC TEACHER='程军'(C))
(2){T(1)|($U)($V)($W)(S(U)∧SC(V)∧C(W)∧T[1]=U[1]∧U[1]=V[1]∧V[2]=W[1]∧W[3]='程军')}
(3){T(1)| ($V)($W)( SC(V)∧C(W)∧T[1]=V[1]∧V[2]=W[1]∧W[3]='程军')} (4)SELECT SNAME FROM S,SC,C
WHERE S.S#=SC.S# AND SC.C#=C.C# AND SCORE>=90 AND CNAME='程序设计' 或者 SELECT SNAME FROM S
WHERER S.S# IN (
SELECT S# FROM SC
WHERE SCORE>=90 AND C.C# IN (
SELECT C# FROM C
WHERE CNAME='程序设计')
附录:sql与关系代数汇总
1、已知学生表S和学生选课表SC。其关系模式如下。 S(SNO,SN,SD,PROV) SC(SNO,CN,GR)
其中,SNO为学号,SN为姓名,SD为系名,PROV为省区,CN为课程名,GR为分数。试用SQL语言实现下列操作:
(1) 查询“信息系”的学生来自那些省区。
(2) 分数降序排序,输出“中文系”学生选修了“计算机”课程的学生的姓名和分数。
2、已知学生表S、课程表C和学生选课表SC,它们的关系模式如下:
S(S#,SN,SEX,AGE,DEPT)
C(C#,CN) SC(S#,C#,GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,
网络数据库 试题第6页(共17页)
CN为课程名,GRADE为成绩。试用SQL语言完成下列问题。
(1) 检索选修课程“C2”的学生中成绩最高的学生的姓名和学号。 (2) 检索四门及四门以上课程学生。
3、设有下列关系模式:STUDENT(SNO,SNAME,AGE,SEX,DNO)其中,SNO表示学号,CNAME表示姓名,AGE表示年龄,SEX表示性别,DNO表示院系号。
SC(SNO,CNO,GRADE) ,其中SNO表示学号,CNO表示课程号,GRADE表示成绩。 COURSE(CNO,CNAME) ,其中CNO表示课程号,CNAME表示课程名。 请用关系代数表示下列查询:
1 )检索成绩大于85分的学生的学号、姓名。
2 )检索选修课程号为C1的学生的学号,姓名,课程名和成绩。 3 )检索选修了全部课程的学生的学号、姓名和年龄。
4、创建一个学生表student ,它由学号sno、姓名sname、性别ssex、年龄sage、所在系 sdept五个属性组成,其中学号为主码,姓名取值是唯一的,年龄在13-45岁之间。
5、假设学生选课数据库关系模式如下:
Student(SNo,SName,SAge,SDept); Course(CNo,CName); SC(SNo,CNo,Score);
1).用关系代数进行如下查询:学生王芳的“计算机组成原理”课成绩。 2).用数据逻辑规则进行如厂查询:学号为20020202的学生的系别和年龄。
6、 假设学生一课程数据库关系模式如下:
Student(Sno,Sname,Sage,Ssex); Course(Cno,Cname,Teacher); SC(Sno,Cno,Grade)。 用SQL语句表达下列查询:
1.求张老师讲的每门课的学生平均成绩。
2.统计选修各门课的学生人数。输出课程号和人数。查询结果按人数降序排列,若人数相同,则按课程号升序排列。
7、设有如下所示的关系S(S#,SNAME,AGE,SEX)、C(C#,CNAME,TEACHER)和SC(S#,C#,GRADE),试用关系代数表达式表示下列查询语句:
(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。
(3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)。 (4)检索”李强”同学不学课程的课程号(C#)。
网络数据库 试题第7页(共17页)
(5)检索至少选修两门课程的学生学号(S#)。
(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。 (8)检索选修课程号为k1和k5的学生学号(S#)。 (9)检索选修全部课程的学生姓名(SNAME)。
(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。 (11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。
答案:
1.(1)SelectdistinctPROV FromS,SC
WhereS.SNO=SC.SNOandSD=‘信息系’;
(2)SelectSN,GR FromS,SC
WhereS.SNO=SC.SNOandSD=‘中文系’andCN=‘计算机’ OrderbyGRDESE; 2.(1) SelectSN,S#,MAX(GR) FromS,C,SC
WhereS.S#=SC.S#andC.C#=SC.C#andCN=‘c2’ (2) SelectS# FromSC GroupbyS# HavingCount(*)>=4
3、1 ).πSno ,Sname (σGrade>85 (Student SC ))
2 ).πSno ,Sname ,Cname ,Grade (σCname ‘C1’ (Student SC
Course ))
3 ).πSno ,Cno (SC )÷πCno (Course ) πSno ,Sname (Student ) 4、CREATE TABLE student
(sno CHAR(10) PRIMARY KEY, sname CHAR(10) UNIQUE NOT NULL, ssex CHAR(2) NOT NULL,
sage INT CHECK (sage> 13 and sage< 45) NOT NULL,
网络数据库 试题第8页(共17页)
共分享92篇相关文档