数据库系统概论期末复习资料 下载本文

解:各域演算表达式的结果如下图所示。

R11 A B C 4 a 6 1 c 8 R2 A B C 5 b 1 4 a 6 1 c 8 5 d 3 R3 E B A a a 4 b a 4 c a 4 a c 1 b c 1 c c 1

8.将关系代数中的五种基本运算用域关系演算表达式表示(假设R和S都为属性名相同的二元关系)。

解: (1). R∪S={xy|R(xy)∨S(xy)}

(2). R-S={xy|R(xy)∨┐S(xy)}

(3). R×S={wxyz|(?w)(?y)(R(wx)∧S(yz))} (4). ∏2(R)={y|(R(xy))

(5). σF(R)={xy|R(xy) ∧F’} (其中,F’是与F等价的公式)

9.设有如图所示的两上关系E1和E2,其中E2是从E1中经过关系运算所形成的结果,试给出该运算表达式。

E1 E2

A B C B C 1 2 3 5 6

4 5 6 8 9

7 8 9

解:从E1生成E2所经过的关系运算是:∏2,3(σB>2(E1))或∏2,3(σC>3(E1))。

10.设有如下所示的三个关系S、C和SC。用关系代数表达式表示下列要求,并求出结果。

S 学号 姓名 年龄 性别 籍贯 20001 20002 20003 20004 20005

课程号 C001 C002 C003 C004 课程名 高等数学 数据结构 操作系统 编译原理 C 教师 李 娟 刘小东 吴 浩 王 伟 办公室 416 415 415 415 王小严 20 李 白 21 陈志坚 23 王 兵 20 张 红 22 女 男 男 男 女 北京 上海 长沙 上海 武汉

学号 20001 20001 20001 20001 20002 20003 20003 20003 20004 20004 20005 20005 SC 课程号 C001 C002 C003 C004 C001 C001 C002 C004 C001 C004 C001 C003 成绩 90 90 85 87 90 75 70 56 90 85 95 80

(1).检索籍贯为上海的学生姓名、学号和选修的课程号。 (2).检索选修操作系统的学生姓名、课程号和成绩。 (3).检索选修了全部课程的学生姓名、年龄。 解:

(1).R1=∏2,1,6(σ籍贯=’上海’(s?? sc))

或:R1=∏姓名,S.学号,课程号(σ籍贯=’上海’(s?? sc)) 或:R1=∏姓名,S.学号,课程号(σ籍贯=’上海’(s)?? sc) (2). R2= ∏2,6,7(s?? sc?? σ课程名=’操作系统’(C))

或:R2=∏姓名,SC.课程号,成绩(s?? sc??σ课程名=’操作系统’(C)) (3). R3=∏2,3(s?? ∏1,2(sc)÷∏1(C)))

或:R3=∏姓名,年龄(s?? (∏学号,课程号(sc)÷∏课程号(C))) 检索结果如下:

R1 姓名 学号 课程号 李 白 王 兵 王 兵 20002 20004 20004 R2 课程号 C003 C003 R3 年龄 20 C001 C001 C004 姓名 王小严 张 红 成绩 85 80 姓名 王小严 11.设有如下所示的关系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=”男”(C))

(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))]}

12.以图3.18的数据库为例,用关系代数、关系演算语言ALPHA、QBE完成以下检索。

关系模式:仓库(仓库号,城市,面积) 职工(仓库号,职工号,工资)

订购单(职工号,供应商号,订购单号,订购日期) 供应商(供应商号,供应商名称,地址) (1).检索在仓库2工作的职工的工资。 解:

关系代数表示:

∏职工号,工资(σ仓库号=“WH2“(职工)) ALPHA表示:

GET W(职工.职工号,职工.工资):职工.仓库号=”WH2” QBE表示:

职工 仓库号 职工号 工资 WH2 P.E1 P.1220

(2).检索在上海工作的职工的工资。

解:

关系代数表示:

∏职工号,工资(σ城市=“上海”(仓库)? 职工) ALPHA表示:

RANGE 仓库 X , 职工 G GET W(G.职工号,G.工资):(?X)(G.仓库号=X.仓库号∧X.城市=”上海”)

QBE表示:

职工 仓库号 WH1 仓库号 WH1 职工号 P.E1 城市 上海 工资 P.1220 面积

仓库

(3).检索北京的供应商名称。 解:

关系代数表示:

∏供应商名称(σ地址=“北京“(供应商)) ALPHA表示:

GET W(供应商.供应商名称):供应商.地址=“北京“

QBE表示:

供应商 供应商号 供应商名称 P.607厂 地址 北京

(4).检索目前与职工E6有业务联系的供应商名称。 解:

关系代数表示:

∏供应商名称(σ职工号=“E6“(订购单)??( 供应商) ALPHA表示:

RANGE 订购单 D, 供应商 S

GET W(S.供应商名称):( ?D)(D.职工号=”E6”∧D.供应商号=S.供应商号) QBE表示:

供应商 供应商号 供应商名称 地址

订购单 职工号 E6 供应商号 WH1 订购单号 订购日期 WH1 P.607厂

(5).检索所有职工的工资大于1220的仓库所在的城市。 解:

关系代数表示: ∏城市(仓库??( ( ∏仓库号(职工)-∏仓库号(σ工资≤“1220“(职工)))) ALPHA表示: RANGE 职工 Z , 仓库 C GET W(C.城市) : (?Z)(Z.仓库号=C.仓库号∧Z.工资>1220)

QBE表示:

仓库 仓库号 城市 面积

WH1 P.北京