数据库习题作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档