数据库复习04:课后习题

作者:非妃是公主
专栏:《数据库》
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
在这里插入图片描述

专栏系列文章

数据库复习01:基础篇

数据库复习02:设计与应用篇

数据库复习03:系统篇

数据库复习04:课后习题

SQL Server Studio查看“估计的执行计划”和“实际的执行计划方法”

SQL Server中C/C++数据类型与ODBC c类型对照(将C/C++数据对象存到SQL Server数据库中)

第2章

6.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第3章

4.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

9.

在这里插入图片描述
在这里插入图片描述

第6章

5.

在这里插入图片描述

6.

在这里插入图片描述

7.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第7章

7.

在这里插入图片描述
在这里插入图片描述

8.

在这里插入图片描述
在这里插入图片描述

9.

在这里插入图片描述

10.

在这里插入图片描述
在这里插入图片描述

11.

在这里插入图片描述

第9章

2、

在这里插入图片描述
(1)需要对R进行全表扫描
块数 = 20000 40 = 50 块数 = \frac{20000}{40}=50 块数=4020000=50
(2)对R进行索引扫描 , 块数=3+1 =4;其中前3块为B+树索引块,第4 为块数据块。(前3块装指针,后面一块装相应指针指向的数据)

(3)R总共需要 20000 40 = 500 \frac{20 000}{40}=500 4020000=500次,S总共需要 1200 30 = 40 \frac{1200}{30}=40 30120040次,以R为外表,假设内存可分配的块数为K块,那么
磁盘块读写次数 = 500 + ⌈ 40 k − 1 ⌉ × 500 磁盘块读写次数=500+\lceil\frac{40}{k-1}\rceil\times500 磁盘块读写次数=500+k140×500
(4)

  • R与S在B属性上有序

硬盘读写次数 = 500 + 40 = 540 ; 硬盘读写次数=500+40=540; 硬盘读写次数=500+40=540

  • R与S在B属性上无序,还要加上两个关系在B属性上排序的代价(一般排序算法的时间复杂度为( n log ⁡ 2 n n\log_2{n} nlog2n),其中,n为排序规模)

硬盘读写次数 = 540 + 2 × 500 × l o g 2 500 + 2 × 40 × log ⁡ 2 40 。 硬盘读写次数=540+2\times500\times log_2{500} +2\times40\times\log_2{40}。 硬盘读写次数=540+2×500×log2500+2×40×log240


3、

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


4、

在这里插入图片描述

(1)对teacher进行全表扫描,查看元组是否满足性别为女。

(2)通过索引找到Dno=301的索引项 ,然后顺着B+树的顺序集得到Dno< 301的索引项 ,通过这些指针找到Department中的元组;

(3)对work进行全表扫描 ,查看元组是否满足year<>2000

(4)通过year的索引找到满足Year=2000的索引项,然后顺着B+数的顺序集得到Year>2000的索引项,通过这些指针找到Year>2000的元组,检查这些元组是否满足salary< 5000

(5)对Work进行全表扫描,查看元组是否满足Year<2000Salary< 5000


5、

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第10章

4、

在这里插入图片描述

① 重做:T1 、T3;回滚 : T2 、T4。

② 重做:T1,回滚: T2 、 T3。

③ 重做:T1,回滚: T2 、 T3。

④ 重做:T1,回滚:T2。

说明:已经提交的事项要重做,还未提交的事项要回滚,判断重做还是回滚的依据就是事项是否提交。

5、

在这里插入图片描述

① 系统故障发生在14之后:A:8; B:7; C:11;

② 系统故障发生在12之后:A:10; B:0; C:11;

③ 系统故障发生在10之后:A:10; B:0; C:11;

④ 系统故障发生在9之后:A:10; B:0; C:11;

⑤ 系统故障发生在7之后:A:10; B:0; C:11;

⑥ 系统故障发生在5之后:A:0; B:0; C:0;

说明:已经提交的事项对数据库的修改才会写入到磁盘上,没有提交的事项所做的更改暂时无效。

第11章

9.

在这里插入图片描述

(1)串行执行次序有
T 1 , T 2 , T 3 ; T 1 , T 3 , T 2 ; T 2 , T 1 , T 3 ; T 2 , T 3 , T 1 ; T 3 , T 1 , T 2 ; T 3 , T 2 , T 1 ; T_1,T_2,T_3; T_1,T_3,T_2; T_2,T_1,T_3; T_2,T_3,T_1; T_3,T_1,T_2; T_3,T_2,T_1; T1,T2,T3;T1,T3,T2;T2,T1,T3;T2,T3,T1;T3,T1,T2;T3,T2,T1;
说明:排列问题

(2)
在这里插入图片描述

说明:交换过程重没有涉及到对同一数据类型读写操作和写写操作的交换

(3)
在这里插入图片描述

说明:交换过程中涉及到对同一数据的读写操作或写写操作的交换

(4)
在这里插入图片描述
(5)
在这里插入图片描述

10.

在这里插入图片描述

是冲突可串行化的调度,交换 r 1 ( A ) r_1(A) r1(A) w 3 ( B ) r 2 ( B ) r 2 ( A ) w 2 ( B ) w_3(B)r_2(B)r_2(A)w_2(B) w3(B)r2(B)r2(A)w2(B)后,得到的事务调度序列是串行的。且期间没有交换对同一数据的读写操作或者写写操作。

11.

在这里插入图片描述
假设它不是可串化的,

那么事务序列重必然存在对同一数据类型的读写,或者写写操作在不同事务间交叉进行,

即:两个事务交替使用同一数据类型—>必须存在一个事务先解锁后加锁的情况

与事务并发处理采用两段锁协议相矛盾。

所以它是不可串化的。

13.

在这里插入图片描述

③遵循两阶段封锁(2PL)的调度 ⊆ \subseteq ①正确的调度 = = ②可串行化的调度

④串行调度 ⊆ \subseteq ①正确的词度

说明:可串行化的调度都是正确的调度,二者范围相同

两阶段锁协议是可串行化调度的充分不必要条件(两阶段锁协议包含两部分:可串行化的调度和死锁的调度)

串行调度是指各事务操作没有交叉。

14.

在这里插入图片描述

(1)

T 1 T_1 T1 T 2 T_2 T2
SlockASlockB
R(A)R(B)
XlockBXlockA
R(B)R(A)
B=A+BA=A+B
W(B)W(A)
unlockAunlockB
unlockBunlockA

(2)会发生死锁,如下调度:

T 1 T_1 T1 T 2 T_2 T2
XlockA
R(A)
XlockB
R(B)
waiting…waiting…

如果想不发生死锁,只能串行调度(先执行更多操作 T 1 T_1 T1,再执行更多操作 T 2 T_2 T2,或者反之)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherries Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值