CH3习题答案

一、填空题

1.关系数据模型中的关系可用二维表来表示,表中的一行对应关系的一个__元组_____表中的一列对应关系的一个__属性______。

2.在关系代数运算中,使用  选择  运算可从关系中得到满足条件的元组;如果只对关系中的某些属性感兴趣,则可用关系代数的__投影___运算选择这些属性。

3.设关系R和S分别有m和n个元组,k1和k2个属性,有k3个相同的属性,则R×S的元组个数是_m×n____,属性的个数是_k1+k2___;R⋈S的属性个数是  K1+K2-K3___。

4.在关系A(S,SN,D)和B(D,CN,NM)中,S是A的主键,A中的属性D与B中的主键D相对应,则D在A中称为_   外键_______。

5.关系数据模型的实体完整性规则要求,关系的主属性  不能为空

6.有关系:教学(学号,教工号,课程号)。假定每个学生可以选修多门课程,每门课程可以由多名学生来选修,每个老师只能讲授一门课程,每门课程可以由多个老师来讲授,那么该关系的主键是  (学号,教工号)     (学号,课程号)___。

7.有如下关系:学生(学号,姓名,性别,专业号,年龄),将属性年龄的取值范围定义在18~30之间为___用户定义_____完整性约束。

8.关系模型中可以有三类完整性约束:其中___实体___完整性和___参照____完整性是关系模型必须满足的完整性约束条件,应该由RDBMS自动支持。

9.关系代数运算中的5种基本的操作包括:___、差、笛卡尔积、投影和选择。

10.关系操作的特点是__集合____操作。

二、选择题

1.在关系代数的专门关系运算中,从表中取出满足条件的列的操作称为__B____。

A.选择               B.投影               C.连接              D.扫描

2.进行自然连接运算的两个关系必须具有    B_______。

A.相同属性个数            B.公共属性            

C.相同关系名             D.相同关键字 

3.关系演算是用__A_____来表达查询要求的方式。

A.谓词               B.关系的运算         C.元组              D.域

4.在关系代数中,对一个关系做投影操作后,新关系的元组个数__B_____原来关系的元组个数。

A.小于            B.小于或等于         C.等于           D.大于

5.在关系数据库中,表与表之间的联系是通过定义___B____实现的。

A.实体完整性                               B.参照完整性

C.用户自定义的完整性                  D.值域

6.关系模型中,一个候选码   _C_____。

A.可由多个任意属性组成

B.至少由一个属性组成

C.可由一个或多个其值能惟一标识该关系模式中任何元组的属性组成

D.必须由多个属性组成

7.集合R与S的交可以用关系代数的基本运算表示为__A____。

A.R-(R-S)                           B.R+(R-S)

C.R-(S-R)                           D.S-(R-S)

8.下列关系代数的操作中,不是基本运算的是__A____。

A.交                           B.并                       

C.笛卡尔积                 D.投影

9.以下关于关系性质的说法中,错误的是___B____。

A.关系中任意两行的值不能完全相同  B.关系中任意两列的值不能完全相同

C.关系中任意两行可以交换顺序      D.关系中任意两列可以交换顺序

10.在关系数据库中,实现表中任意两行不能相同的约束是依据__C____。

A.外码         B.属性                      C.主键               D.列

11.以下关于外键和相应的主键之间的关系,正确的是__A_____。

A.外键并不一定要与相应的主键同名

B.外键一定要与相应的主键同名

C.外键一定要与相应的主键同名而且惟一

D.外键一定要与相应的主键同名,但并不一定惟一

12.关系中的主关键字不允许取空值是符合__A____约束规则。

A.实体完整性   B.参照完整性     C.用户定义的完整性   D.数据完整性

13.如果关系R中有4个属性和3个元组,关系S中有3个属性和5个元组,则R×S的属性个数和元组个数分别是___B____。

A.7和8           B.7和15           C.12和8        D.12和15 

14.关系数据模型上的关系运算分为__B______。

A.关系代数和集合运算                        B.关系代数和关系演算

C.关系演算和谓词演算                         D.关系代数和谓词演算

15.在学生表(学号,姓名,性别)中,规定学号值域是8个数字组成的字符串,其规则属于_   C_____。

A.实现完整性约束                           B.参照完整性约束

C.用户自定义完整性约束                D.关键字完整性约束

16.能够把关系R和S进行自然连接时舍弃的元组放到结果关系中的操作是____D____。

A.左外连接         B.右外连接        C.外部并           D.外连接   

17.五种基本关系代数运算是_   A_____。

A.∪,-,×,π和σ                      B.∪,-,⋈,π和σ

C.∪,∩,×,π和σ                      D.∪,∩,⋈,π和σ          

18.设有关系模式EMP(职工号,姓名,年龄,技能),假设职工号惟一,每个职工有多项技能,则EMP表的主键是_   D_____。

A.职工号      B.姓名,技能   C.技能     D.职工号,技能

三、简答题

1.名词解释:

属性,域,元组,候选键,主键,外键。

2.试阐述关系模型的3个组成部分。

3.试阐述关系模型的完整性规则。在参照完整性中,为什么外键属性的值也可以为空?什么情况下不可以为空?

答:外键不是候选键,是可以为空的,参照完整性只是要求当其有值时,其值必须是相应主键的某个值。但当外键属性是主属性时,即其是构成候选键的属性时,根据实体完整性,其值是不允许为空的。

4.关系代数的基本运算有哪些?如何用这些基本运算来表示其他运算?

答:关系代数运算中的5种基本的操作包括:、差、笛卡尔积、投影和选择。

交:    RS = RRS    RS = SSR

连接:πK1+K2-K3σR.K3=S.K3 (RxS )  关系RS分别有k1k2个属性,有k3个相同的属性

除:R÷S=πxR-πx (( πx Rx S-R

5.试阐述关系的笛卡尔积、等值连接和自然连接的区别和联系。

6.假设R(a,b)和S(c,d),试把如下元组演算表达式用关系代数表达式表示:

{ t | R(t)∧($u)(S(u)∧u[1]≠t[2])}

    答:πa,bσR.b=S.c (RxS ) 

7.关系R和S的半连接(semijoin)写作R∝S,它表示由R中的满足如下条件的元组t组成的集合:t至少跟S中的一个元组在R和S的公共属性上相同。用三种不同的关系代数表达式给出R∝S的等价表示。

答:关系RS分别有k1k2个属性,有k3个相同的属性

πK1σR.K3=S.K3  (RxS )

πK1R R.K3=S.K3S

πK1RS

8.设有关系R、S,如图3-8。求πc(S)、σB<‘c’ (R)、σA=C (R×S)、R⋈S、R⋈R.B<S.BS

关系R

A

B

a

b

c

b

d

e

关系S

B

C

b

c

e

a

b

d

图3-8  关系R和S的模式及实例

答:注意选择和投影后剩余元组不能相同。

四、查询实现题

1.设有学生选课数据库,包括S、C和SC三个关系模式:

S(SNO,SN,SD,SB,SEX);

C(CNO,CN,PCNO,TN);

SC(SNO,CNO,GRADE);

学生表S包含学号(SNO)、学生姓名(SN)、所在系(SD)、出生年月(SB)、性别(SEX)等属性;

课程表C包含课程号(CNO)、课程名(CN)、先修课程号(PCNO)、主讲教师姓名(TN)等属性;

选课表SC包含学号(SNO)、课程号(CNO)、成绩(GRADE)等属性。

试用关系代数、元组演算完成如下查询:

(1)检索以“C2”课程作为先修课程的课程号;

CNO(σPNO =‘C2’(C))

{t(1)|($v)( C(v)v[3]= ‘C2t[1]=v[1])}

(2)检索选修课程名为“Math”的学生学号与姓名;

SNO,SN (σCN=‘Math’(SSCC))

{t(2)|($u)($v)($w)(S(u)SC(v)C(w)u[1]=v[1]v[2]=w[1]w[2]=’Matht[1]=u[1] t[2]=u[2])}

(3)检索选修课程号为“C2”或“C4”课程的学生学号与成绩;

SNO, GRADE (σCNO=‘C2CNO=‘C4(SC))

{t(2)|($v)(SC(v) ( v[2]=’C2 v[2]=’C4’) t[1]=v[1]t[2]=v[3]}

(4)检索至少选修了课程号为“C2”和“C4”课程的学生姓名;

SN (( SNO (σ CNO=‘C2’(SC ) ) SNO (σ CNO=‘C4’(SC )))S)

{t(1)|($u)($v)($w)(SC(u)SC(v)S(w)u[1]=w[1]v[1]=w[1]u[2]=’C2’v[2]=’C4’t[1]=w[2])}

(5)检索选修课程包括“李斯”老师所授课程之一的学生学号;

SNO ( CNO(σTNO=’李斯’(C)) SC)

{t(1)|($u)($v) (SC(u)C(v)u[2]= v[1]v[4]=’李斯t[1]= u[1])}

(6)检索全部学生都选修的课程的课程号和课程名;

CNO,CN ((SNO,CNO(SC ) ÷ SNO(S) )C)

{t(2)|("u)($v)($w)(S(u)C(v)SC(w)u[1]=w[1]v[1]=w[2]t[1]=v[1]t[2]=v[2])}

(7)检索计算机系学生都学习过的课程的课程号;

SNO,CNO (σSD=“计算机S SC ) ÷ SNO(σSD=“计算机S)

SNO,CNO (SC ) ÷ SNO(σSD=“计算机S)

{ t(1)|($u)(SC(u)("v)(S(v)(v[3]=‘计算机系($w)(SC(w)w[1]=v[1] w[2]=u[2])))t[1]=u[2])}

{ t(1)|($u)(C(u)("v)(S(v)(v[3]=‘计算机系($w)(SC(w)w[1]=v[1] w[2]=u[2])))t[1]=u[2])}

(8)检索“张山”同学不学课程的课程号。

CNOC- CNO( SNO(σSN=’张山S) SC)

{ t(1)|($u)( C(u)("v)( SC (v)(u[1]=v[2]($w)(S(w)w[1]= v[1]W[2]张山’)))t[1]=u[2]) }

{ t(1)|($u)( C(u)("v)( SC (v)(u[1]=v[2]($w)(S(w)w[1]= v[1]W[2]=’张山’)))t[1]=u[2]) }

2.设有SPJ数据库,包括S、P、J和SPJ四个关系模式,数据库模式及实例值如图3-9所示。其中

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;

零部件表P由零部件代码(PNO)、零部件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;

供应情况表SPJ由供应商代码(SNO)、零部件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零部件给某项工程的数量为QTY。

试用关系代数、元组演算完成如下查询:

(1)检索上海厂商供应的所有零部件的号码;

PNO(σ city =’上海SSPJ)

{t(1) | ($u) ($ v) (S(u) SPJ(v)u[4]=‘上海 u[1]=v[1] t[1]= v[2])}

(2)检索使用上海厂商供应的零部件的工程名称;

JNAME(σ city =’上海SSPJ J)

{t(1) | ($u) ($ v)($ w) (S(u) SPJ(v) J (w)u[4]=‘上海 u[1]=v[1] w[1]= v[3] t[1]= w[2])}

(3)检索供应工程J1零部件P1的供应商的号码;

sno(σJno =’J1’ Pno =’P1’ (SPJ))

{t(1) | ($u)(SPJ(u)u[3]=‘J1’ u[2]=‘P1’ t[1]= u[1])}

(4)检索供应工程J1零部件为红色的供应商的号码;

sno(σJno =’J1’ Color =’红色’ (SPJ P))

sno(σColor =’红色’ (P) (σJno =’J1’ (SPJ))

{t(1) | ($u) ($v) (SPJ(u) P (v) u[3]=‘J1’ u[2]=v[1] v[3]= ’红色 t[1]= u[1])}

(5)检索工程项目J2使用的各种零部件的名称及其数量;

PNAME ,QTY(σ JNO=’J2’ ( SPJ)) P)

{t(2) | ($u) ($v) (SPJ(u) P (v)u[3]=‘J2’ u[2]=v[1] t[1]= v[2] t[2]=u[4])}

(6)检索没有使用天津厂商供应的零部件的工程号码;

Jno (J) - Jno(Sno(σCITY =’天津’ ( S)) SPJ))

{t(1) | ($u) (J (u)(" v) (SPJ(v)(u[1]=v[3]($ w) (S (w)w[1] = v[1]W[4] 天津’)))t[1]= u[1])}

{t(1) | ($u) (J (u)(" v) (SPJ(v)(u[1]=v[3]($ w) (S (w)w[1] = v[1]W[4] = ‘天津’)))t[1]= u[1])}

(7)检索没有使用天津供应商供应的红色零部件的工程号;

Jno (J) - Jno(σCITY =’天津Color =’红色’( S SPJ P))

Jno (J) - Jno(σCITY =’天津’ ( S) SPJColor =’红色’(P))

{t(1) | ($u) (J (u)("v)( SPJ(v)(u[1]=v[3]┐(($ w) (S (w) w[1]= v[1]W[4] =‘天津’)($x)P(x)x[1]=v(2)x[3]=’红色)))t[1]= u[1])}

例:对于J表中的每一个JNO(比如J1)去判断SPJ表中所有JNOJ1的元组,是否不存在其SNO对应CITY是“天津”,而且PNO对应颜色是红色,由于存在(S1,P1,J1,200,所以J1不满足条件)。同理只有J2,J5满足条件。

{t(1) | ($u) (J (u)("v)( SPJ(v)(u[1]=v[3]($ w) (S (w) w[1]= v[1]W[4] 天津’) ($x)P(x)x[1]=v(2)x[3]红色)))t[1]= u[1])}

例:对于J表中的每一个JNO(比如J2)去判断SPJ表中所有JNOJ2的元组,是否存在SNO对应CITY 不是“天津”,或PNO对应颜色不是“红色”。虽然存在(S1,P2,J2,100)天津供应商, S5,P6,J2,200)红色零件, J2满足条件。而对于J1,存在两个条件均不满足的元组,所以J1不满足条件。

{t(1) | ($x) (SPJ (x)┐(($u) ($v) ($ w) ((S (u) SPJ(v) P(w)u[4]= ‘天津P[3]=’红色u[1]= v[1] v[2] =W[1] x[3]=v(3) )))t[1]=x[3])}

对于没有使用任何零件的工程,不能在结果中得到,错误。

{t(1) | ($u) (J (u)("v)( SPJ(v)(u[1]=v[3]($ w)($x)(S (w)P(x)w[1]= v[1]W[4] 天津x[1]=v(2)x[3]红色’ )))t[1]= u[1])} (有问题)

比如:由于存在(S1,P2,J2,100,所以J2不满足条件,错误。

(8)检索至少使用了供应商S1所供应的全部零部件的工程号Jno。

Pno,Jno (SPJ )÷∏Pno(σSno =’S1’(SPJ))

注:检索出的工程使用的零件包括所有供应商所供应的、具有与S1所供应零件相同的零件。

Sno,Pno,Jno (SPJ )÷∏Sno,Pno(σSno =’S1’(SPJ))

注:检索出的工程使用的零件包括由S1供应给其他工程的所有零件。

{t(1)|($u)(SPJ(u)("v)(SPJ(v)(v[1]=’S1’ ($w)(SPJ(w)w[2]=v[2]w[3]=u[3])))t[1]=u[3])}

{t(1)|($u) (SPJ(u)("v)(SPJ(v)(v[1]=’S1’ ($w)(SPJ(w)w[1]=v[1]w[2]=v[2]w[3]=u[3])))t[1]=u[3])}

{t(1)|($u)(J(u)("v)(SPJ(v)(v[1]=’S1’ ($w)(SPJ(w)w[2]=v[2]w[3]=u[1])))t[1]=u[1])}

{t(1)|($u) (J(u)("v)(SPJ(v)(v[1]=’S1’ ($w)(SPJ(w)w[1]=v[1]w[2]=v[2]w[3]=u[1])))t[1]=u[1])}

注:解答的结果中,如果S1没有对各工程提供任何零件,结果就是所有的工程号。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值