软件学院高级数据库考试攻略(金培权-数据库系统实现)-1.ppt

软件学院高级数据库考试攻略(金培权-数据库系统实现)-1.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Homework2 一个病人记录包含以下定长字段:病人的出生日期,社会保险号码,病人ID,每一个字段都是9字节长。它还有下列变长字段:姓名,住址和病史。如果记录内一个指针需要8字节,记录长度是一个2字节整数,不包含变长字段空间,这条记录需要多少字节?你可以假设不需要对字节进行对齐。 记录长度 出生日期 住址指针 病史指针 保险号码 病人ID 姓名 住址 病史 Homework2 定长字段有3个,每个有9个字节长,所以需要?3×9=27字节。 而记录的首部需要写入记录的长度和指向所有除第一个以外的变长字段起始处的指针。而记录长度2字节,指向“住址”的指针8字节,指向“病史”的指针8字节。所以一共需要27+2+8+8?=?45字节。 Homework3 ? Homework3 T(W)/V(W,a) = 400/50 = 8 T(Y)/V(Y,c) = 200/50 = 4 Homework3 ? T(W)*T(Y)=400*200=80000 ? T(Z)/3=100/3=33.3 ? T(W)/[V(W,a)*V(W,b)]=400/(50*40)=0.2 Homework3 ? T(W)/[3*V(W,a)]=400/(3*50)=2.67 T(X)*T(Y)/3=300*200/3=20000 Homework4 如果R和S都是非聚集的,似乎嵌套循环连将需要大约T(R)T(S)/M次磁盘I/O时间。 你怎样做才能明显好于这个代价? 假设 S(R)=S(S),每次迭代时读取R的元组塞满 M-1块的chunk,此时迭代次数为T(R)*S(R)/(M-1),那么总的磁盘I/O时间为T(R)+T(R)*T(S)*S(R)/(M-1)。近似为: T(R)*T(S)*S(R)/M.例如:1个block中能存放10个元组,即S(R)=1/10*block,那么效率提高10倍。 Homework4 如果R和S中只有一个是非聚集的,你应该怎样执行嵌套循环连接?考虑两种情况:较大的关系是非聚集的和较小的事非聚集的 假定 R为较小关系,S为较大关系 (1)S是非聚集的: 方案1: For each loop: Read M -1 blocks of R Read all of S (using 1 block) + join 代价为:B(R)+B(R)*T(S)/(M-1) * * * * * * * * * * * 软件学院2015级高级数据库技术(金培权-数据库系统实现) Homework 1 使用关系代数表达式实现下列1-3小题: 给定下面的关系:图书(图书号,书名,作者,单价,库存量),读者(读者号,姓名,工作单位,地址),借阅(图书号,读者号,借期,还期,备注)?注:还期为NULL表示该书未还。 检索读者Rose的工作单位和地址 检索读者Rose所借阅读书(包括已还和未还图书)的图书名和借期 Homework 1 检索未借阅图书的读者姓名 用SQL语言完成4-8小题: 查询语句结果可以计算如下: 1. 取FROM子句中列出的各个关系的元组的所有可能的组合 2. 将不符合WHERE子句中给出的条件的元组去掉 3. 如果有GROUP BY子句,则将剩下的元组按GROUP BY子句中给出的属性值分组 4. 如果有HAVING子句,则按照HAVING子句中给出的条件检查每一组,去掉不符合条件的组 5. 按照SELECT子句的说明,对于指定的属性和属性上的聚集(例如一组中的和)计算出结果元组 6. 按照ORDER BY子句中的属性列的值对结果元组进行排序 Homework 1 检索Ullman所写的书的书名和单价 SELECT 书名,单价 FROM 图书 WHERE 作者=‘Ullman’ 检索读者“李林”借阅未还的图书的图书号和书名 SELECT 图书号,书名 FROM图书,读者,借阅 WHERE 图书.图书号 = 借阅.图书号 AND 读者.读者号 = 借阅.读者号AND 读者.姓名 = “李林” AND 借阅.还期 = NULL; Homework 1 检索借阅图书数目超过3本的读者姓名 SELECT 姓名 FROM 读者,借阅 WHERE 借阅.读者号 = 读者.读者号 GROUP BY 读者号 HAVING COUNT(*) 3; Homework 1 检索没有借阅读者“李林”所借的任何一本书的读者姓名和读者号 SELECT 姓名,读者号 FROM 读者,借阅 WHERE 借阅.读者号 = 读者.读者号AND 借阅.图书号NOT IN (SELECT 图书号 FROM 借阅,读者 WHERE 借阅.读者号 = 读者.读者号 AND 读者.姓名 = 李林); Homework

文档评论(0)

wendan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档