三、简述与应用题
1.叙述等值连接与自然连接的区别和联系。
答:等值连接表示为R ?? S,自然连接表示为R ?? S;自然连接是除去重复属性的 R.A=S.B
等值连接。两者之间的区别和联系如下:
· 自然连接一定是等值连接,但等值连接不一定是自然连接。
·等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
·等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
2.举例说明关系参照完整性的含义。
答:假如有如图所示的两个关系表,在成绩表中,学号是关键字,课程号是外关键字;在课程表中课程号是关键字,根据关系参照完整性的定义,R2是成绩表,R1是课程表,也就是成绩表中课程号的值或者为空或者在课程表中的课程号中能够找到。
满足这个条件是必须的,如果不满足,假设成绩表中课程号的值k20在课程表中课程号的值中找不到,则该课程号显然是不正确的,这样会造成数据的不一致性。
成绩表 学号 姓名 课程号 成绩 101 212 221 ?? 刘林 王红 李平 ?? K5 K8 K9 ?? 80 78 90 ?? 课程表 课程号 课程名 K5 K8 K9 ??
3.设有如图所示的关系R和S,计算: (1)R1=R-S
R (2)R2=R∪S
(3)R3=R∩S A B C (4)R4=R×S
a b c
b a f
c b d
解:本题各小题的结果如图所示。
R-S
A B C
a b c
c b d 高等数学 程序设计 操作系统 ?? S A B C b a f d a d R∪S A B C a b c b a f c b d d a f
R∩S R×S
A B C A B C A B C
b a f a b c b a f
a b c d a f
b a f b a f
b a f d a f c b d b a f c b d d a f 4.设有如图所示的关系R,S和T,计算:
(1)R1=R∪S
R S T (2)R2=R-S
(3)R3=R ?? T
A B A B B C (4)R4=R ?? T
a d d a b b A<C
b e b a c c (5)R5=∏A(R)
c c b c b d (6)R6=σA=C(R×T)
解:本题各小题的结果如下图所示。 R1 R2 R3 R4 R5 R6 A B A B C A B B C A A B B C A B a d a d C c c a d b c a a d b c b e b e a d c c b a d c c c c c c a d b d c a d b d d a b e c c b e c c b e b d b e b d b a d e c c b d c c b d
5.设有如图所示的关系R,S,计算:
R S (1)R1=R ?? S
A B C D C E (2)R2=R ?? S
3 6 7 3 4 5 [2]<[2]
7 2 3 4 5 7 (3)R3=σB=d(R×S)
7 2 3
4 4 3 解:本题各小题的结果如下图所示。 R1 A B C C D E R2
A B C D E 7 2 3 3 4 5 3 6 7 2 3 4 5 7 2 3 A B C C D E 7 2 3 4 5 R3 7 2 3 3 4 5 4 4 3 4 5 6.将关系代数中的五种基本运算用元组关系演算表达式表示。 4 5 4 4 3 3 解: (1). R∪S={t|R(t)∨S(t)} (2). R-S={t|R(t)∨┐S(t)}
(3). R×S={t|(?u)(?v)(R(u)∧S(v)∧t[1]=u[1]∧?∧t[k1]=u[k1]∧t[k1+1]=v[1]∧?∧t[k1+k2]=v[k2])} (设R为k1元关系,S为k2元关系)
(4). ∏i1,i2,?,ik(R)={t|(?u)(R(u)∧t[1]=u[i1]∧t[2]=u[i2]?∧t[k]=u[ik])} (5). σF(R)={t|R(t) ∧F’} (其中,F’是与F等价的公式)
7.如有如图所示的关系R、S和W,写出下列域演算表达式的结果。
R S W
A B C A B C D E F
5 b 1 5 b 6 2 a d
4 a 6 5 d 3 5 b e
1 c 8 2 c 4 4 c f
(1). R1={xyz|R(xyz)∧(z>5∨y=a)} (2). R2={ xyz|R(xyz)∨S(xyz)∧(x=5∧z≠6)} (3). R3={vyx|(?u)(?v)(R(xyz)∧W(uvt)∧z>u)} 解:各域演算表达式的结果如下图所示。
R11 R2 R3
A B C A B C E B A
4 a 6 5 b 1 a a 4
1 c 8 4 a 6 b a 4
1 c 8 c a 4
5 d 3 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。用关系代数表达式表示下列要求,并求出结果。
学号 20001 20002 20003 20004 20005
课程号 C001 C002 C003 C004
姓名 S 年龄 性别 女 男 男 男 女 籍贯 北京 上海 长沙 上海 武汉 王小严 20 李 白 21 陈志坚 23 王 兵 20 张 红 22 课程名 高等数学 数据结构 操作系统 编译原理 C 教师 李 娟 刘小东 吴 浩 王 伟 办公室 416 415 415 415 学号 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 C001 王 兵 王 兵 20004 20004 R2 课程号 C003 C003 R3 年龄 20 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”