数据库习题作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库习题作业重点(第2-3-4章)
计算R ∪S ,R-S ,R ∩S ,R ×S ,π3,2(S ),σB<’5’ S, S 。 解: R ∪S A B C R -S A B C R ∩S A B C
3 6 7 3 6 7 7 2 3
2 5 7 2 5 7 7 2
3
4 4 3
4 4 3 3 4 5
R ×S R.A R.B R.C S.A S.B S.C π3,2(S ) C B 3 6 7 3 4 5 5 4 3 6 7 7 2 3 3 2
2 5 7
3
4
5 2 5 7 7 2 3 7 2 3 3 4 5 7 2 3 7 2 3 4 4 3 3 4 5 4 4 3 7 2 3 σB<’5’(R )
A B C R ⋈S
R.A R.B R.C S.A S.B S.C 7 2 3
7
2
3
3
4
5
4
4
3
R ⋈S A B C
7 2 3
2.7 设有关系R 和S : R A B
S B C a b b c c b e a d e
b d
计算R ⋈ S ,R ⋈ S ,σA=C (R ×S),S ⋉ R 。 2<2
B 2.8 假设关系U 和V 分别有m 个元组和n 个元组,给出下列表达式中可能的最小和最大的元组数量: ⑴ U ∩V ⑵ U ∪V ⑶ U ⋈V ⑷ σF (U)×V (F 为某个条件) ⑸ πL (U)-V (其中L 为某属性集) 解: 操作 最小元组数 最大元组数 ⑴ U ∩V 0 min(m,n) ⑵ U ∪V max(m,n) m+n ⑶ U ⋈V 0 m ×n ⑷σF(U)×V 0 m ×n ⑸πL(U)-V m 2.17 设有三个关系: T (T#,TNMAE,TITLE ) C (C#,CNAME ,T#) S (S#,SNAME ,AGE ,SEX) SC (S#,C#,SCORE ) 试用关系代数表达式表示下列查询语句: ① 检索年龄小于17岁的女学生的学号和姓名。 ② 检索男学生所学课程的课程号和课程名。 e a b ③检索男学生所学课程的任课教师的工号和姓名。 ④检索至少选修两门课的学生学号。 ⑤检索至少有学号为S2和S4学生选修的课程的课程号。 ⑥检索WANG同学不学的课程的课程号。 ⑦检索全部学生都选修的课程的课程号与课程名。 ⑧检索选修课程包含LIU老师所授全部课程的学生学号。 解:⑴πS# (σAGE<’17’∧SEX=’F’(S)) ,SNAME (σSEX='M'(S⋈SC⋈C)) ⑵Πc# ,CNAME (σSEX='M'(S⋈SC⋈C⋈T)) ⑶ΠT# ,TNAME ⑷π1(σ1=4 ∧2≠5(SC×SC)) ⑸π2(σ1=’S2’∧4=’S4’∧2=5(SC×SC)) ⑹πC#(C)-πC#(σSNAME='WANG'(S⋈SC)) ⑺πC# (C⋈(πS#,C#(SC)÷πS#(S))) ,CNAME (SC)÷πC#(σTNAME='LIU'(C⋈T)) ⑻πS# ,C# 2.21 在教学数据库的关系S、SC、C、T中,用户有一查询语句:检索女同学选修课程的课程名和任课教师名。 ①试写出该查询的关系代数表达式。 ②画出查询表达式的语法树。 ③使用启发式优化算法,对语法树进行优化,并画出优化后的语法树。 解: 【3.2】设教学数据库中有4个关系: 教师关系T(T#,TNAME,TITLE) 课程关系C(C#,CNAME,T#) 学生关系S(S#,SNAME,AGE,SEX) 选课关系SC(S#,C#,SCORE) 试用SQL查询语句表示下列查询。 解: ①检索年龄小于17岁的女学生的学号和姓名。SELECT S#.SNAME FROM S WHERE AGE<17 AND SEX=’F’ ②检索男学生所学课程的课程号和课程名。 SELECT C.C#,CNAME (连接查询方式) FROM S,SC,C WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=’M’; ③检索男学生所学课程的任课老师的工号和姓名。 SELECT T.T#, TNAME FROM S,SC,C,T WHERE S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# AND SEX=’M’; ④检索至少选修两门课程的学生学号。 SELECT DISTINCT X.S# FROM SC AS X, SC AS Y WHERE X.S#=Y.S# AND X.C#!=Y.C#; ⑤检索至少有学号为S2和S4的学生选修的课程的课程号。SELECT DISTINCT X.C# FROM SC AS X, SC AS Y WHERE X.S#=’S2’AND Y.S#=’S4’ AND X.C#=Y.C#; ⑥检索W ANG同学不学的课程的课程号。 SELECT C# FROM C WHERE NOT EXISTS (SELECT * FROM S, SC WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’WANG’); ⑦检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE S#=S.S# AND C#=C.C#)); ⑧检索选修课程包含LIU老师所授全部课程的学生学号。 法一: SELECT DISTINCT S# FROM SC AS X WHERE NOT EXISTS (SELECT * FROM C,T WHERE C.T#=T.T# AND TNAME=’LIU’ AND NOT EXISTS (SELECT{ FROM SC AS Y WHERE Y.S#=X.S# AND Y.C#=C.C#)); 法二: SELECT DISTINCT S# FROM SC X