数据库第九章课后题(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
没有给出连接操作使用的内存缓冲区块数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 ,区分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

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

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

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

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

原创文章 18 获赞 29 访问量 1万+

猜你喜欢

转载自blog.csdn.net/MooM_X/article/details/105791877