数据库综合作业
一. 单项选择题
1.在文件系统中,所具有的数据独立性是 A.系统独立性 B.物理独立性
C.逻辑独立性 D.设备独立性 2.数据库系统中存放三级结构定义的DB称为 A.DBS B.DD C.DDL D.DBMS
1=2
[ D ]
[ B ]
3.设有关系R(A,B,C)和关系S(B,C,D),那么与R?S等价的关系代数表达式是
A.σ
1=5(R
[ B ]
?S) B.σ
1=5(R×S)
C.σ
1=2(R
?S) D.σ
1=2(R×S)
4.设关系模式R(A,B,C),F是R上成立的FD集,F={A→B,C→B},
ρ={AB,AC}是R的一个分解,那么分解ρ
[ c ]
A.保持函数依赖集F B.丢失了A→B C.丢失了C→B D.丢失了B→C 5.设有两个关系R(A,B)和S(B,C),与下列SELECT语句 SELECT A,B FROM R
WHERE B NOT IN(SELECT B
FROM S
WHERE C='C56');
等价的关系代数表达式是
A.π
A,B(
[ C ]
σ
C≠'C56'(R
?S))
B.π
A,B(R
? S)
C≠'C56'
C.R-π
A,B(
σ
C= 'C56'(R
?S)) D.R-π
A,B(
σ
C≠'C56'(R
?S))
6.嵌入式SQL的预处理方式,是指 [ B ] A.识别出SQL语句,加上前缀标识和结束标志
B.把嵌入的SQL语句处理成函数调用形式 C.对源程序进行格式化处理
D.把嵌入的SQL语句编译成目标程序 7.设关系模式R(A,B,C,D),F是R上成立的FD集,F={ B→D,AD→C },那么
ρ={ ABC,BCD }相对于F [ B ] A.是无损联接分解,也是保持FD的分解 B.是无损联接分解,但不保持FD的分解 C.不是无损联接分解,但保持FD的分解
D.既不是无损联接分解,也不保持FD的分解 8.设有关系模式R(A,B,C,D),F是R上成立的FD集,F={A→B,C→D},则F+中
左部为(BC)的函数依赖有 [C ] A.2个 B.4个 C.8个 D.16个
9.有12个实体类型,并且它们之间存在着15个不同的二元联系,其中4个是1:1联系类
型,5个是1:N联系类型,6个M:N联系类型,那么根据转换规则,这个ER结构转换成的关系模式有 [B ] A.17个 B.18个 C.23个 D.27个
10.DBMS的并发控制子系统,保证了事务__________的实现 [C ] A.原子性 B.一致性 C.隔离性 D.持久性 11.SQL中不一定能保证完整性约束彻底实现的是 [ D ] A.主键约束 B.外键约束 C.局部约束 D.检查子句 12.在DB技术,未提交的随后被撤消了的数据,称为 [D ]
A.报废的数据 B.过时的数据 C.撤消的数据 D.脏数据 13.设有关系R(A,B,C)的值如下:
A B C
2 2 3 2 3 4 3 3 5 下列叙述正确的是 [B ] A.函数依赖A→B在上述关系中成立 B.函数依赖BC→A在上述关系中成立
C.函数依赖B→A在上述关系中成立 D.函数依赖A→BC在上述关系中成立 14.日志文件是用于记录 [C ]
A.程序运行过程 B.数据操作 C.对数据的所有更新操作 D.程序执行的结果
15.一个1:n联系可以转换为一个独立的关系模式,关系的码为 [ C ] A.实体的码 B.各实体码的组合 C.n端实体的码 D.每个实体的码 16.不允许任何其他事物对这个锁定目标再加任何类型锁的锁是 [ B ]
A.共享锁 B.排它锁 C.共享锁或排它锁 D.以上都不是
二.填空题
1.封锁能避免错误的发生,但会引起 活锁、死锁和不可串行化调度 问题。 2.可能导致数据库系统不能运行的原因有 事务故障,系统故障,介质故障和计算机病毒 。
3.数据库系统的三级模式结构是指___外模式,模式和内模式。_______。
4.SQL的SELECT语句中使用分组子句以后,SELECT子句的语义就不是投影的意思了,
而是_______对每一分组执行聚合操作_______________。 5.设关系模式R(A,B,C),F是R上成立的函数依赖集,F={ AB→C,C→A },那么R
的候选键有___2_____个,为____AB和BC_______。
三.简答题
1.如何保证并发控制的有效实施?
答:封锁机制是并发控制的重要手段。封锁是使事物对它要操作的数据有一定的控制能力。封锁具有3个环节:首先是申请加锁,即事务在操作前要对它将使用的数据提出加锁请求;然后是获得锁,即当条件成熟时,系统允许事务对数据加锁,从而使事务获得数据的控制权;最后是释放锁,即完成操作后事务放弃数据的控制权。为了达到封锁的目的,在使用时,事务应选择合适的锁,并要遵从一定的封锁协议。
2.设有关系R和S: R A B C 1 2 3 1 3 5 2 4 6 3 6 9
2>2
S A 1 3 1 3 B 3 6 3 4 D 6 8 5 5
试写出R?S、 R?S的值
解:
R?S A B C D R?S R.A R.B C S.A S.B D 1 3 5 6 2>2 2 4 6 1 3 6 1 3 5 5 2 4 6 1 3 5 3 6 9 8 3 6 9 1 3 6 3 6 9 1 3 5 3 6 9 3 4 5
3.设有关系R(A,B,C)和S(D,E,F),设有关系代数表达式。
π
A,B(R)-
π
A,B(
σ
A=D ∧ E='E8'(R×S))
试写出与上述关系代数表达式等价的SQL语句。 解:
SELECT A,B FROM R
WHERE A NOT IN(SELECT D FROM S
WHERE E=’E8’ );
4.设有函数依赖集F={AB->CE,A->C,GP->B,EP->A,CDE->P,HB->P,D->HG,ABC->PG},试写
出Fm,并说明理由。 解: (1):将F中各依赖的右部属性化:
F={AB->C, AB->E, A->C, GP->B,EP->A,CDE->P,HB->P, D->H, D->G, ABC->P, ABC->G}
(2):去掉F中冗余的函数依赖。
判断AB->C是否冗余,由于有A->C,所以AB->C冗余。 判断AB->E是否冗余,
设:G1={ A->C, GP->B,EP->A,CDE->P,HB->P, D->H, D->G, ABC->P, ABC->G} 得:(AB)G1+=ABCPG 因为E?G1+ 所以AB->E不冗余。 (AB)判断A->C是否冗余,
设:G2={ AB->E, GP->B,EP->A,CDE->P,HB->P, D->H, D->G, ABC->P, ABC->G}
得:AG2+=A 因为C?AG2+ 所以A->C不冗余
同理,经过检验后函数依赖集为:{AB->E, A->C, GP->B,EP->A,CDE->P,HB->P, D->H, D->G, ABC->P, ABC->G}
(3)去掉F中函数依赖左部冗余属性。
5.什么是“脏数据”?如何避免读取“脏数据”?
答:在数据库运行时,把未提交随后又被撤消的数据称为“脏数据”。 为了避免读取“脏数据”,事务可以对数据实行加S锁的方法,以防止其他事务对该数据进行修改。
6.如何实现数据库安全性?
1用户标识与鉴别 解:○
2存取控制 ○
3自主存取控制方法 ○
4强制存取控制方法 ○
5视图机制 ○
6审计 ○
7数据加密 ○
四.设计题
设某商业集团关于商店销售商品的数据库中有三个基本表: 商店 SHOP(S#,SNAME,AREA,MGR_NAME) 其属性是商店编号,商店名称,区域名,经理姓名。 销售 SALE(S#,G#, QUANTITY)
其属性是商店编号,商品编号,销售数量。
商品 GOODS(G#,GNAME,PRICE) 其属性是商品编号,商品名称,单价。
1.试写出下列查询的关系代数表达式: 检索销售“冰箱”的商店的编号和商店名称。 解: 关系代数表达式:
ПS#,SNAME (σ GNAME=’冰箱’ (SHOP ?SALE ?GOODS))
2.试写出上题的SELECT语句表达形式。 SELECT A.S# , SNAME
FROM SHOP A, SALE B, GOODS C
WHERE A,S#=B.S# AND B.G#=C.G# AND GNAME=’冰箱’;
3.试写出下列操作的SQL语句: 从SALE表中,把“开开商店”中销售单价高于1000元的商品的销售元组全部删除。 解:DELETE FROM SALE
WHERE S# IN(SELECT S# FROM SHOP WHERE SNAME='开开商店') AND G# IN(SELECT G# FROM GOODS WHERE PRICE>1000);
4.试写出下列操作的SQL语句: 统计区域名为“EAST”的所有商店销售的每一种商品的总数量和总价值。 要求显示(G#,GNAME,SUM_QUANTITY,SUM_VALUE),其属性为商品编号、商品名称、销售数量、销售价值。 解:
SELECT G#,GNAME,SUM (QUANTITY) AS SUM_QUANTITY, SUM (VALUE) AS SUM_VALUE FROM SHOP A, SALE B, GOODS C
WHERE A,S#=B.S# AND B.G#=C.G# AND AREA=’EAST’ GROUP BY C.G#, GNAME;
五.综合题
1.某汽车运输公司数据库中有一个记录司机运输里程的关系模式: R(司机编号,汽车牌照,行驶公里,车队编号,车队主管)
此处每个汽车牌照对应一辆汽车。“行驶公里”为某司机驾驶某辆汽车行驶的总公里数。如果规定每个司机属于一个车队,每个车队只有一个主管。 (1)试写出关系模式R的基本FD和关键码。 解:根据已知条件,可写出基本的FD有三个: 编号司机 →车队编号 车队编号 →车队主管
(司机编号,汽车牌照)→行驶公里
从上述三个FD,可知R的关键码为(司机编号,汽车牌照)。
(2)说明R不是2NF模式的理由,并指出数据冗余之所在。试把R分解成2NF模式集。 解:从上述三个FD,可推出下列FD成立:
(司机编号,汽车牌照)→(车队编号,车队主管)
这是一个局部FD。因此R不是2NF模式。 此时在R的关系中,每个司机只属于一个车队及主管人员,但要记载某司机驾驶过10辆汽车的行驶公里数,在R的关系中要出现10个元组。也就是这10个元组的司机相同,其车队编号和车队主管要重复出现10次,这就是数据冗余。 R应分解成R1(司机编号,汽车牌照,行驶公里)
R2(司机编号,车队编号,车队主管)这两个模式都是2NF模式。
(3)进而把R分解成3NF模式集,并说明理由。 R1已是3NF模式,但R2不是3NF模式。 因为在R2中的模式FD有两个: