数据库第九章课后题(2020.4.27作业)

1.假设关系R(A,B)和S(B、C、D)情况如下:R有20000个元组,S有1200个元组,一个块能装40个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。
(1)R上没有索引

select * from R;

R有20000个元组,一个块能装40个R的元组,所以20000/40=500块

(2)R中A为主码,A有3层B+树索引

select*from R where A=10;

高度每下降一级,即读取一次磁盘,加上该元组所在的一块,3+1=4次

B数、B+树及在数据库索引中应用:https://blog.csdn.net/jiangshangchunjiezi/article/details/88362873

(3)嵌套循环连接 R ⋈ S R \Join S RS
没有给出连接操作使用的内存缓冲区块数K,所以无法确定
设在内存中存放X块R元组和Y块S元组
读R表块数+读C表遍数每遍块数
W1=20000/40+[20000/(40
X)][1200/(30Y)]
连接后的元组数为1200。设每块能装Z个元组,则写出W2=1200/Z块。
W1+W2

(4)排序合并连接 R ⋈ S R \Join S RS,区分R与S在B属性上已经有序和无序两种情况。
R和S只读取一遍,20000/40+1200/30=540,
未排序相对于排好序的要加上排序代价

2.对学生-课程数据库,查询信息系学生选修了的所有课程名称。

SELECT Cname
FROM Student,Course,SC
WHERE Stdent.Sno=SC.Sno AND SC.Cno=Course.Cno AND Student.Sdept='IS'

试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。

查询树
在这里插入图片描述
关系代数表示的语法树
在这里插入图片描述
优化后的标准语法树
在这里插入图片描述
3.对于下面的数据库模式
Teacher(Tno,Tname,Tage, Tsex);
Department (Dno, Dname, Tno);
Work (Tn, Dno,Year, Salary)
假设Teacher的Tno属性、Dcpartment的Dno属性以及Work的Year属性上有B+树索引,说明下列查询语句的一种较优的处理方法。

(1)

select *from teacber where Tsex='女'

全表扫描算法

(2)

select *from departmcnt where Dno<301

全表扫描算法

(3)

select *from work where Year <>2000

全表扫描算法

(4)

select *from work where year > 2000 and salary<5000

索引扫描算法-B+树索引

(5)

select *from work where year<2000 or salary<5000

全表扫描算法

4.对于题3中的数据库模式,有如下的查询:

select Tname
from teacher,department,work
where teacher.tno=work.tno and department.dno=work.dno and 
	  dcpartment.dname='计算机系' and salary>5000

画出语法树以及用关系代数表示的语法树,并对关系代数语法树进行优化,画出优化后的语法树.

查询树
在这里插入图片描述

关系代数表示的语法树
在这里插入图片描述
优化后的语法树
在这里插入图片描述

总结:大概三个半小时多,主要用在第一题,其实上课没听懂。后来做题又回去琢磨了半天,网上找不到答案,不知道对不对,等老师放答案。后面的图觉得还挺好理解的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值