习试卷5
(总分:36.00,做题时间:90分钟)
一、 选择题(总题数:9,分数:36.00)
1.选择题()下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。(分数:4.00)
__________________________________________________________________________________________ 解析:
在关系模型的完整性约束中,实体完整性规则是指关系中(2)参照完整性规则要求(3)。(分数:4.00) A.不允许有主行
B.属性值不允许为空 √ C.主键值不允许为空 D.外键值不允许为空 解析:
A.不允许引用不存在的元组 √ B.允许引用不存在的元组 C.不允许引用不存在的属性 D.允许引用不存在的属性
解析:解析:数据库的完整性是指数据的正确性和相容性,即数据库中的数据始终保持正确的状态,防止不符合语义的错误数据的输入和输出。关系模型中的完整性约束条件包括实体完整性、参照完整性和用户自定义完整性。实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K s 相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须或者取空值(F的每个属性值均为空值),或者等于s中某个元组的主码值。
已知关系R如表7-4所示,关系R的主属性为(9),候选关键字分别为(10)。(1). A.ABC B.ABD C.ACD D.ABCD √ 解析: A.ABC B.AB,AD C.AC,AD和CD
D.AB,AD,BD和CD √
解析:解析:在一个关系模式中,若一个属性或属性组K完全函数决定整个元组,则称K为该关系的一个候选关键字。包含在任何一个候选关键字中的属性称为主属性,不包含在任何一个候选关键字中的属性称为非主属性。从关系R表中可以看出,AB两列中没有相同的行值,同时CD两列中也没有相同的行值,因此可以说AB->CD,也可以说CD->AB,即ABCD都是关系R的主属性。另外,AD,BD两列中也没有相同的行值,因此AD和BD也是候选关键字。而AC有相同的行值(ac),其对应的BD的行值却不相同(分别为bd和dg),所以AC不是候选关键字。同理,BC也不是候选关键字。
给定关系模式R(U,F),U=(A,B,C,D,E),F={B→A,D→A,A→E,AC→B},其属性AD的闭包为(11),其候选关键字为(12)。(分数:4.00)
(分数:2.00)
(分数:4.00)
A.ADE √ B.ABD C.ABCD D.ACD 解析: A.ABD B.ADE C.ACD D.CD √
解析:解析:求属性集的闭包可由固定的算法推出。设X(0)=AD,计算X(1),逐一扫描F集合中各个函数依赖,找左部是A,D或AD的函数依赖,得到A→E,D→A。于是X(1)=X(0)∪EA=ADE。由于X(0)≠1),所以再逐一扫描F集合中各个函数依赖,找左部是ADE的子集的那些函数依赖,得到A→E,D→A。于是X(2)=X(1)∪EA=ADE。由于X(2)=X(1),所以算法到此为止,其属性AD的闭包为X(2),即ADE。 如果一个属性集能惟一标识元组,且不含有多余属性,那么这个属性集称为候选关键字。 D→A: D→A→E; CD→AC→B; CD→AC→B→A; 所以CD为候选关键字。
若有关系模式R(A,B,C)和S(C,D,E),对于如下的关系代数表达式:(14)的查询效率最高。(分数:4.00) (1).(分数:2.00)
正确的结论是(13),表达式
A.E1≡E2≡E3≡E4 √ B.E3≡E4但E1≠E2 C.E1≡E2但E3≠E4 D.E3≠4但E2≡E4 解析: A.E1 B.E2 C.E3 √ D.E4
解析:解析:题目给出的四个关系代数,其含义都是求B<‘2000’且E=‘80’的A列和D列,其所得结果是一样的。因此,第一个空的答案应选择A。 至于考查四个关系代数查询效率,就是比较它们的执行时间,越少步骤执行完成,当然执行时间也就越少。 E1与E2:在E2中,关系模式R和S先作了选择,再做笛卡儿积,此时得到的结果将少于E1先笛卡儿积,再选择所得到的结果,因此E2的效率高于E1。 E3与E4:同样的道理,在E3中,关系模式R和S先作了选择,再做自然连接,此时得到的结果将少于E4先连接,再选择所得到的结果,因此E3的效率高于E4。 E3与E2:区别它们之间的效率差别就是区别R与S笛卡儿积和R与S自然连接的差别。根据定义,自然连接要取消重复列,具体在该题中,R与S自然连接后C列将取消,所以R与 S的自然连接的效率比R与S笛卡儿积高。
关系R,S如表7-5和表7-6所示,R÷(π A1,A2 (σ 1<3 (S)))的结果为(18),右外连接和完全外连接的元组个数分别为(19)。 (1).(分数:2.00)
(分数:4.00)
A.{d} √ B.{c,d) C.{c,d,8}
D.{(a,b),(b,a),(c,d),(d,f)} 解析: A.2,2,4 B.2,2,6
C.4,4,6 √ D.4,4,4
解析:解析:在本题中,π A1,A2 (σ 1<3 (S))的结果如表7-7所示。 把R和新的S结果代入关系除
法计算公式,可得结果R÷(π A1,A2 (σ1(S))={d}。 根据左外连接、右外连接和完全外连接的定义,本题中的R和S的左外连接、右外连接和完全外连接的结果分别如表7-8、表7-9和表7-10所示。 给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1A3->A2,A2->A3},及候选关键字为(41)。分解ρ={(A1,A2),(A1,A3)}(42)。(分数:4.00) A.A1A3 √ B.A1A2A3 C.A1A3A4 D.A2和A1A3 解析:
A.是无损连接的 B.是保持函数依赖的
C.既是无损连接又保持函数依赖 D.既是有损连接又不保持函数依赖 √
解析:解析:注:原题有误,在此将R(A1,A2,A3,A4)改为R(A1,A2,A3)进行分析。码就是用来区分实体集中不同实体的属性集合。超码是一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中惟一地标识一个实体。通常只关心这样的超码:它们的任意真子集都不能成为超码,这样的最小超码称为候选码。主码是被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。本题中,A1不函数依赖于其他属性,因此码中必须含 A1。A2是函数依赖于A1A3的,也就是说A1A3定了,A2也就定了,故A1A3是码;且A1或 A3均不能单独决定,故A1A3是候选码。所谓无损连接就是分解后的子模式进行自然连接可得原模式。{(A1,,42),(A1,A3))分解后, A3函数依赖A2解除,因此重构时无法得到原模式,是有损连接且不保持函数依赖。
关系模式R(U,F),其中U=(W,X,Y,Z),F={WX→Y,W→X,X→Z,y,Vw}。关系模式R的候选码是(43),(44)是无损连接并保持函数依赖的分解。(分数:4.00) A.W和Y √ B.WY C.WX D.WZ 解析:
A.ρ={R1(W19,R2(XZ)} B.ρ={r1(WZ),R2(XY) C.ρ={R1(WXY),R2(XZ)} √ D.ρ={R1(WX),R2(YZ)}
解析:解析:因为WX→Y,W→X,X→Z,所以属性W决定全属性(W→U),即W为候选字。同理可得Y为候选字。要判定一个模式分解是否为无损连接分解,可以根据以下定理:设ρ={R1,R2)是R的一个分解,F为R上的FD集,那么分解ρ相对于F是无损分解的充分必要条件是(R1∩R2)→(R1-R2)或
(R1∩R2)→(R2-R1)。在本题中,A,B,D选项的R1与R2都不相交,因此不满足上述定理的条件。而C选项中, R1∩R2={X},R1-R2={WY},R2-R1={Z},X→Z在函数依赖集中,所以只有C选项是无损连接的。 设关系模式R为R(H,I,J,K,L),R上的一个函数依赖集为F={H→J,J→K,I→JJL→H},分解(45)是无损连接的。关系模式R(A,B,C,D,E)中的关系代数表达式σ5<'2'(R)等价于 SQL语句(46)。(分数:4.00)
A.ρ={HK,HI,IJ,JKL,HL} B.ρ={HIL,IKL,IJL} √ C.ρ={HJ,IK,HL} D.ρ={HI,JK,HL)
解析:
A.SELECT* FROM R WHERE <'2' √ B.SELECTB, E FROM R WHERE B<'2' C.SELECTB, E FROM R HAVING E<'2' D.SELECT* FROM R WHERE '5'<B
解析:解析:(1)因为R上的一个函数依赖集为F={H→J,J→K,I→J,KL→J,JL→H),对于分解ρ ={HIL,IKL,IJL)可以构造一个二维表,如表7-14所示。①根据函数依赖集中H→J,J→K对上表进行修改,
由于属性列H和属性列J上午相同的元素,所以无法修改。但对于I→J在属性列I上对应的1,2,3行上为全a2元素,且J中的第3行为a3,所以可将属性列J的第1行b13和第2行b23改为a3。修改后的表如表7-15所示。②JL→H在属性列JL上对应的1,2,3行上为a3,a5元素,属性列H的第1行为
从上表可以看a1,所以将属性列H的第2行b21和第3行b31改为a1。修改后的表如表7-16所示。到第2行全为ala2a3a4a5,所以ρ是无损的。 (2)因为关系代数表达式ρ5<'2'(R)的含义为选取关系R中第5个属性E的值小于“2”的元组,所以等价的SQL语句为SELECT* FROM R WHEREE<'2'。
因篇幅问题不能全部显示,请点此查看更多更全内容