《数据库原理及应用》第2章 部分习题解答 联系客服

发布时间 : 星期三 文章《数据库原理及应用》第2章 部分习题解答更新完毕开始阅读f7de9f2a4a7302768e993955

★ 关系演算补充内容

* 把谓词演算应用于到关系运算中就是关系演算,它分为元组关系演算与域关系演算。

* 谓词演算

1)个体是可以独立存在的物体 2)谓词是用于刻划个体性质或关系

3)一个谓词可以与一个个体相联,此种谓词称为一元谓词,

一元谓词刻划一个个体的性质。

4)a,b,...表示个体,一个一元谓词可表示为F(a)

一个谓词中个体是可以变化的,如“...是大学生”,可以是“王强是大学生”,也可以变为“李华是大学生”,令F(x)表示x是大学生,又令“王强”为a,“李华”为b,则“王强是大学生,李华也是大学生”可写为F(a)∧F(b)

* 现谓词演算用于关系,元组为个体,关系为个体域,则 R(u)即表示u是关系R中的元组

* 元组关系演算表达式{t|φ(t)},表示所有使φ为真的元组集合,即描述了一个关系。

P69

10、设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S(学号S#,姓名SN,所在系SD,年龄SA)、课程C(课程号C#,课程名CN,先修课号PC#)、SC(学号S#,课程号C#,成绩G)。

请用关系代数与ALPHA语言分别写出下列查询: (1) 检索学生的所有情况。 S SSCC

(2) 检索学生年龄大于等于20岁的学生姓名。 πSN(σSA>=20(S))

(3) 检索先修课号为C2的课程号。 πC#(σPC#=’C2’(C))

(4) 检索课程号C1的成绩为A的所有学生姓名。 πSN(σC#=’C1’∧G=’A’(SCC))

(5) 检索S1修读的所有课程名及先修课号。 πCN,PC# (σS#=’S1’(SCS))

(6) 检索年龄为23岁的学生所修读的课程名。 πCN (σSA=23(SSCC))

(7) 检索至少修读了S5修读的一门课的学生的姓名。 πSN (SSCπC# (σS#=’S5’(SC)))

(8) 检索修读了S4所修读的所有课程的学生的姓名。 πSN (S(πS#,C# (SC)÷πC# (σS#=’S4’(SC)))) (9) 检索选修所有课程的学生的学号。 πS#,C# (SC)÷πC# (C)

(10) 检索不选修任何课程的学生的学号。 πS# (S) -πS# (SC)

设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S(学号S#,姓名SN,所在系SD,年龄SA)、课程C(课程号C#,课程名CN,先修课号PC#)、SC(学号S#,课程号C#,成绩G)。

请用关系代数与ALPHA语言分别写出下列查询:

(1) 检索学生的所有情况。S SSCC

GET W(S)

GET W(S,SC,C): S.S#=SC.S# ∧ SC.C# =C.C#

(2) 检索学生年龄大于等于20岁的学生姓名。πSN(σSA>=20(S))

GET W(S.SN): (S.SA>=20)

(3) 检索先修课号为C2的课程号。πC#(σPC#=’C2’(C))

GET W(C.C#): (C.PC#=’C2’)

(4) 检索课程号C1的成绩为A的所有学生姓名。πSN(σC#=’C1’∧G=’A’(SCC))

RANGE SC SCX

GET W(S.SN): ?SCX (SCX.S#=S.S# ∧ SCX.C#=’C1’ ∧ SCX.G=’A’)

(5) 检索S1修读的所有课程名及先修课号。πCN,PC# (σS#=’S1’(SCS))

RANGE SC SCX

GET W(C.CN,C.PC#): ?SCX (SCX.C#=C.C# ∧ SCX.S#=’S1’)

(6) 检索年龄为23岁的学生所修读的课程名。πCN (σSA=23(SSCC))

RANGE S SX SC SCX

GET W(C.CN): ?SX?SCX (SX.S#=SCX.S# ∧ SCX.C#=C.C#∧ SX.SA=23)

(7) 检索至少修读为S5修读的一门课的学生的姓名。 πSN (SSCπC# (σS#=’S5’(SC)))

RANGE SC SCX SC SCY

GET W(S.SN): ?SCX?SCY (SCX.S#=’S5’ ∧ SCY.S#=S.S#∧ SCY.C#=SCX.C#)

RANGE C CX SC SCX SC SCY

GET W(S.S#):?CX(?SCX (SCX.S#=’S5’ ∧ CX.C#=SCX.C#)->?SCY (SCY.S#=S.S# ∧ CX.C#=SCY.C#))

(8) 检索修读S4所修读的所有课程的学生的姓名。 πSN (S(πS#,C# (SC)÷πC# (σS#=’S4’(SC))))

RANGE C CX SC SCX SC SCY

GET W(S.S#):?CX(?SCX (SCX.S#=’S4’ ∧ CX.C#=SCX.C#)->?SCY (SCY.S#=S.S# ∧ CX.C#=SCY.C#))