- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 关系代数操作的实现算法 生物医学软件工程 本章概要 查询处理过程 选择操作的实现算法 笛卡尔积的实现算法 连接操作的实现算法 投影操作的实现算法 集合交、并、差的实现算法 10.1 查询处理的过程 查询是由高级查询语言(如, SQL)表示的是对数据库的一个或一组操作。 查询处理要经过扫描和语法分析、查询优化、查询代码生成、查询执行四个步骤来实现。 10.2 选择操作的实现算法 线性搜索——按原始顺序扫描关系,取出满足条件的元组。 二分搜索 主索引或HASH搜索 用主索引查找多个元组 使用聚集索引按等值比较条件寻找多个元组 使用B树索引搜索 合取选择算法 复合索引算法: 指针交集算法: 10.3 笛卡尔积的实现算法 算法定义为 10.4 连接的实现算法 设A、B分别是R、S的属性子集。R?A=BS的算法是: 10.5 投影操作的实现算法 若投影域含键,仅需对R存取一次,否则结果可能有重复元组。下边是删除重复的排序算法: 输入:具有n个元组的关系R 输出:R的投影T= ?A1,A2,?AK (R) 10.6 集合的并、交、差的实现算法 并操作R?S:假设关系R和S分别有n和m个元组,R的序号为i,S的序号为j. 交操作R?S 算法如下 差操作R-S 算法如下 * 查询 扫描和语法检查 查询的内部表示 查询优化 查询执行计划 查询代码生成 查询执行 查询结果 执行查询计划的代码 先按一个简单条件用前述方法选择,然后检查是否满足其它条件。 若合取条件都是等值比较,可考虑使用有关属性上的复合索引。 若合取条件是等值比较,可用各索引域的辅助索引得到元组指针集合,然后取这些集合的交集。 对结果关系result初始化; for r?R do for s?S do (rs) 写入result endfor endfor 返回result. R S 输出R?S 对result初始化; for r?R do for s?S do if r[A]=s[B] then (rs) 写入result endif endfor Endfor 返回result. R?S R S 员工号 工资 001 70 002 80 003 80 004 80 009 92 006 92 007 96 008 98 005 98 已排序 例子 算法:for R中每个元组 do R[A1,?,AK]写入TMP endfor ; if {A1,?,AK}含键 then begin T:=TMP;return;end Else //去重复:仅取重复组的首项 begin 排序TMP; i=1;j=2; while i=n do 写TMP(i)到T; while TMP(j)=TMP(i) do j=j+1; endwhile; i=j;j=j+1; endwhile end; 关于键k对两关系的元组作升序排列; i=1;j=1; while i?n and j?m do 比较Ri(k)与Sj(k) {较小一方称为小方} 若不等, 输出小方元组;小方序号加1; 若相等, 输出元组Ri ; 两序号都加1; endwhile; 若i?n , 则输出R的剩余元组; 若j?m ,则输出S的剩余元组. 算法简例:设R与S都仅 有一个属性(是键)。排 序后分别是: R:1,4,5,6 (n=4) S:2,4 (m=2) 执行过程是: i=j=1; 比较1和2,输出1,i改为2; 比较4和2,输出2,j改为2; 比较4和4,输出4, i=j=3; 循环停止; 输出R剩余元组5,6. 算法停止. 操作结果:1,2,4,5,6. 关于键k对两关系作升序排列; i=1;j=1; while i?n and j?m do 比较Ri(k)与Sj(k) {较小一方称为小方} 若不等, 小方序号加1; 若相等, 输出元组Ri;两序号都加1; endwhile. 算法简例:设R与S都仅
文档评论(0)