数据库原理 第九章课后作业
Posted 柳小茶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理 第九章课后作业相关的知识,希望对你有一定的参考价值。
2.假设关系 R(A,B) 和 S(B,C,D)情况如下:R有20 000个元组,S有1200个元组,一个块能装40个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。
(1)R上没有索引,select *from R;
没有索引
需要全表扫描
20 000/40=500 块
(2)R中A为主码,A有3层B+树索引,select *from R where A=10;
A有B+树索引,进行索引扫描, 需要 1+3=4次
(3)嵌套循环连接 R S;
20000/40=500 1200/30=40
以S为外表,内存分配了n
则一共需要 40+40/(n-1)*500
(4)排序合并连接 R S,区分R 与 S在B属性上已经有序和无序两种情况。
有序:500+40=540
无序:540+2*500*(log2(500)+1)+2*40*(log2(40)+1)
3.对学生课程数据库,查询信息系学生选修了的所有课程名称。中为代期I- 31053
select Cname
from Student, Course, sc
where Student Sno-SC.Sno and SC.Cno=Course.Cno and Student.Sdept = 'IS':
4.对于下面的数据模式
Teacher(Tno, Tname,Tage,Tsex)l
Department(Dno,Dname,Tno);
Work(Tno,Dno,Year,Salary)
假设Teacher的Tno 属性,Department 的Dno属性以及 Work的 Year属性上有B+树索引,说明下列查询语句的一种较优的处理方法。
select *from teacher where Tsex =‘女’
//通过对 Teacher 进行全表扫名,查看元组是否满足性别为女
select *from Department where Dno <301
//如果 dno <301的元组较少,可以使用索引找到dno=301的索引,然后利用B+树的顺序得到 dno<301的索引,然后再通过指针找到department中的元组;如果很多,则直接使用全表扫描
select *from work where Year <>2000
//对work进行全表扫描 找到满足 Year<>2000
select *from work where year>2000 and salary <5000
//通过 year的索引找到满足 year>2000 的元组,检查元组是否满足salary<5000
select *from work where year<2000 and salary <5000
//对work进行全表扫描 找到满足 year<2000 and salary <5000
5.对于题4中的数据库模式,有如下的查询
seleet Tname
from teacher, department, work
where teacher.tno = work tno and department.dno = work.dno and
department. dname = '计算机系' and salary> 5000
画出语法树以及用关系代数表示的语法树,并对关系代数语法树进行优化,画出优化后的语法树。
以上是关于数据库原理 第九章课后作业的主要内容,如果未能解决你的问题,请参考以下文章