数据库习题解答Word文档格式.docx
《数据库习题解答Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库习题解答Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
(3)查找商品品牌名字的第二个字是“兰”的所有商品。
SELECT*FROMT_GoodsWHEREG_ppLIKE‘__兰%’;
(4)统计显示每种商品发货的总数量,包括商品名称、品牌、总数量、单位、发货单号等。
SELECTG_mc,G_pp,SUM(D_sl)FROMT_Goods,T_sale
WHERET_sale.G_spdm=T_Goods.G_spdm
GROUPBYT_sale.G_spdm,G_mc,G_pp;
(5)将商品代码为“s2”的商品的单价上浮20%。
UPDATET_saleSETD_dj=D_dj+D_dj*0.2
WHEREG_spdm=‘s2’;
(6)向库存表中插入一商品信息(‘s11’,‘红色’,‘165/88A’,100)。
INSERTINTOT_stock
VALUES(‘s11’,‘红色’,‘165/88A’,100);
(7)删除青岛市的所有客户信息。
DELETEFROMT_clientWHEREc_dz=‘青岛市’;
(8)将商品代码为“s11”的商品的库存量减少10。
UPDATET_stockSETkc_sl=kc_sl-10
WHEREG_spdm=‘s11’;
3.7在习题3.1的关系数据库上实现下列各题:
(1)创建一个包含客户代码、名称、联系人和手机号的视图。
CREATEVIEWV_client
AS
SELECTC_dm,C_mc,C_lxr,C_sjhFROMT_client;
(2)创建一个能完整反映发货情况的视图,包括发货单号、商品代码、商品名称、客户代码、客户名称、发货数量、总金额等。
CREATEVIEWV_sale
AS
SELECTD_fhdh,t_sale.G_spdm,G_mc,t_sale.C_dm,C_mc,D_sl,D_je
FROMT_client,T_Goods,T_sale
WHERET_client.C_dm=T_sale.C_dmANDT_Goods.G_spdm=T_sale.G_spdm;
3.8创建一触发器,实现当删除商品表中的某商品时,自动删除库存表中对应商品的信息。
CREATETRIGGERdel_stock
AFTERDELETEONT_Goods
FOREACHROW
BEGIN
DELETEFROMT_stock
WHEREG_spdm=:
OLD.G_spdm;
END;
P191
5.7有3个事务的一个调度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),该调度是冲突可串行化的调度吗?
为什么?
解答:
该调度是冲突可串行化调度。
r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)
可以把r1(A)和w3(B)交换得到:
r3(B)w3(B)r1(A)r2(B)r2(A)w2(B)r1(B)w1(A)
再把r1(A)依次和r2(B)、r2(A)、w2(B)交换得到:
r3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)
最后得到的调度等价于串行调度T3T2T1,所以该调度室冲突可串行化调度。
5.8设T1,T2是如下的两个事务:
T1:
读A;
B=A+3;
写回B
T2:
读B;
A=B+2;
写回A
设A、B的初值均为1:
(1)若允许这两个事务并发执行,有多少可能的正确结果,请一一列举并给出一个可串行化调度,同时给出执行结果。
(2)若这两个事务遵守两段锁协议,请给出一个产生死锁的调度。
(1)
串行执行次序有:
T1T2,其结果为:
A=6,B=4
T2T1,其结果为:
A=3,B=6
可串行化的调度如下:
T1
T2
SLOCK(A)
Y=R(A)=1
UNLOCK(A)
XLOCK(B)
B=Y+3=4
W(B)
UNLOCK(B)
SLOCK(B)
WAIT
X=R(B)=4
XLOCK(A)
A=X+2=6
W(A)
其结果为A=6,B=4。
(2)遵守两段锁协议的事务调度产生死锁。
P256
6.7指出下列关系模式是第几范式?
并说明理由。
(1)R(X,Y,Z),F={(X,Y)→Z}
(2)R(X,Y,Z),F={Y→Z,Y→X,X→(Y,Z)}
(3)R(X,Y,Z),F={X→Y,X→Z}
(1)该关系模式满足第三范式,因为在函数依赖中不存在部分依赖,也不存在传递依赖。
(2)该关系模式满足第三范式(BCNF),因为在函数依赖中不存在部分依赖,也不存在传递依赖。
(3)该关系模式满足第三范式(BCNF),因为在函数依赖中不存在部分依赖,也不存在传递依赖。
6.8设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。
如果规定:
每个职工每天只有一个营业额;
每个职工只在一个部门工作,每个部门只有一个经理。
试回答下列问题:
(1)根据上述规定,写出模式R的基本FD和关键码;
(2)说明R不是2NF的理由,并把R分解成2NF模式集;
(3)进而分解成3NF模式集。
(1)模式R的FD(函数依赖)集:
{(职工编号,日期)→日营业额,职工编号→部门名,部门名→部门经理},关键码为:
(职工编号,日期)。
(2)在函数依赖中,部门名部分依赖于关键码:
(职工编号,日期),因此R不满足2NF。
可以将R分解如下:
R1(职工编号,日期,日营业额)
R2(职工编号,部门名,部门经理)
则R1和R2都满足2NF。
(3)由于R2中有函数依赖:
{职工编号→部门名,部门名→部门经理},即存在传递依赖,故不满足3NF,对R2再分解,结果如下:
R2(职工编号,部门名)
R3(部门名,部门经理)
显然三个关系模式都满足3NF。
6.9设有一商务数据库用以处理销售记帐,它涉及的信息包括:
顾客姓名,所在单位及电话号码;
商品名称,型号及单价,某顾客购买某商品的数量和日期;
假设无同名顾客,无同名商品,电话公用(指同一单位的顾客使用同一电话),顾客可在不同日期购买同一商品。
要求完成该数据库的逻辑设计。
根据题意,其ER图如下:
由ER图得到初始关系模式为:
顾客(姓名,单位,电话)
商品(商品名称,型号,单价)
购买表单(姓名,商品名称,购买数量,购买日期)
模式求精:
分析关系模式:
顾客(姓名,单位,电话),其中有函数依赖:
姓名→单位,单位→电话,即出现了传递依赖,故不满足3NF,分解得到:
顾客单位(姓名,单位)
单位电话(单位,电话)
6.10设一个海军基地要建立一个舰队管理信息系统,它包括如下两个方面的信息:
舰队方面:
舰队:
舰队名称,基地地点,舰艇数量
舰艇:
编号,舰艇名称,舰队名称
舰艇方面:
舰艇编号,舰艇名称,武器名称
武器:
武器名称,武器生产时间,舰艇编号
官兵:
官兵证号,姓名,舰艇编号
其中,一个舰队拥有多艘舰艇,一艘舰艇属于一个舰队;
一艘舰艇安装多种武器,一种武器可安装与多艘舰艇上;
一艘舰艇有多名官兵,一名官兵只属于一艘舰艇。
请完成如下设计:
(1)分别设计舰队和舰艇两个局部ER图。
(2)将上述两个局部ER图合并为一个全局ER图。
(3)将该全局ER图转换为关系模式。
(4)合并时是否存在命名冲突?
如何处理?
(1)舰队局部ER图:
舰艇局部ER图:
(2)全局ER图:
(3)关系模式如下:
舰艇(舰艇编号,舰艇名称,舰队名称)
舰队(舰队名称,基地地点)
武器(武器名称,生产时间)
官兵(官兵证号,姓名,舰艇编号)
安装(舰艇编号,武器名称,武器数量)
(4)合并时存在命名冲突,舰艇在两个局部ER图中有不同的命名:
编号和舰艇编号,采用折中统一的方法,最后命名为舰艇编