数据库多维迭代算法.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库多维迭代算法.pdf

数据库多维迭代算法 关键词:数据库迭代递归多维 一、两种传统的数据库迭代结构算法 对于数据库的迭代结构,有两种传统的算法:递归算法和边界算法。 比如对于下面图1 的结构: 图1 递归算法的数据结构如表1 所示: 节点id 节点值 父节点id 1 1111 -2 3 1112 1 4 1113 1 5 1114 4 6 1115 4 7 1116 1 8 1117 7 9 1118 8 表1 父节点id 如为负值,表示这是一个根节点。 从表1 可以看出,我们用若干组父-子递归的结构来表达完整的迭代结构。 这种算法很容易理解,但是缺点也很明显: 1. 要从任意一个节点展现整个结构时,要从此节点向根节点做一个逆向递归,然后由根节点向所 有层的子节点做N 次正向递归,数据库的运算开销很大。特别是正向递归到达所有外围节点时 要做一个空查询,形成浪费。 2. 尽管oracle 对递归查询有优化算法,如 select distinct * from table1 start with 节点值=1111 connect by prior 节点id=父节点id 这样可以形成以’1111’为根的整个节点树结构。 但是这种优化在统计时是无能为力的,而且此查询返回的结果丢失了很多结构的细节。 下面我们再来分析第二种迭代算法:边界算法。 这种算法有点类似邮递员送信路径的传统数学难题,方法是将节点的边界串起来,同时记录其结构。 对于图1 的结构,数据库中记录如表2 所示: 节点值 结构id 节点顺序 节点层次 1111 1001 1 1 1112 1001 2 2 1113 1001 3 2 1114 1001 4 3 1115 1001 5 3 1116 1001 6 2 1117 1001 7 3 1118 1001 8 4 表2 这里1001 是此结构的id。因此我们可以用结构id,仅通过一次查询,就可以将整个结构展现出来。 此算法的缺点是: 1. 取子结构麻烦,比如我们要查询1113-1114-1115 的子结构,我们要从1113 开始将整个结构截 取出来,然后分析哪些是它的子结构。 2. 数据更新麻烦,在插入或删除某个子结构时,要将节点顺序重新排序。 二、多维迭代算法的原理 所谓多维迭代算法,是指任意一个节点,在继承父节点的特性同时,创建自己的特性维度。 对于图1 的结构,其数据库中的记录如表3 所示: 节点值 结构id 节

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档