[发明专利]基于自身连接的数据库查询方法在审
申请号: | 201310580481.3 | 申请日: | 2013-11-19 |
公开(公告)号: | CN103593448A | 公开(公告)日: | 2014-02-19 |
发明(设计)人: | 不公告发明人 | 申请(专利权)人: | 湖南人文科技学院 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 417000 湖南省*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于自身连接的数据库查询方法,其中,自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。自身连接可以看作一张表的两个副本之间进行的连接。在自身连接中,必须为表指定两个别名,使之在逻辑上成为两张表。基于自身连接的数据库查询方法,具体包括:(1)递归循环检测查询;(2)非一致性检测查询。本发明通过上述查询算法,可以获得较好的查询结果,而且算法简单,实现的效果较好,能够针对基于自身连接的数据库进行查询。 | ||
搜索关键词: | 基于 自身 连接 数据库 查询 方法 | ||
【主权项】:
一种基于自身连接的数据库查询方法,其特征在于:具体包括:(1)递归循环检测查询,所述递归循环检测算法的基本思想如下:锚定成员和递归成员中的对应列具有相同的数据类型、长度和精度,生成 path 值的表达式在两个成员中都被转换为VARCHAR(50);在递归成员中,调用该结果列路径,使用 CASE表达式和LIKE 谓词检查当前子节点是否已经出现在父节点的路径中;如果答案是肯定的,则意味着找到了循环,则在名为cycle的结果列中返回1,否则返回0;并向递归成员中添加一个筛选器,确保只返回未检测到循环的父节点的下属;然后,向外部查询中添加一个筛选器,以便只返回找到循环的子节点(cycle=1),得到递归路径;实现递归常见表达式的步骤为:终止检查在递归常见表表达式中是隐式的,没有从上一个调用中返回任何行时,递归停止;(2)非一致性检测查询:所述非一致性检测查询的递归算法的基本思想如下:(2a)cand1类似于初始查询,加入了DISTINCT关键字和键属性:基于cand1结果集,通过对键分组得到存在于多个分组属性的键值,然后cand1结果集过滤Filter1结果集中的这些键值,得到cand2结果集;再基于cand2结果集,考虑再满足初始查询中键值及其分组属性中,过滤相反条件和条件属性出现空值的元组,得到普通的一致性;(2b)然后考虑剔除可能的非一致性循环元组:为了检测循环,为cand3结果集中的每个节点构建通向该节点的所有节点的枚举路径;在递归成员中,调用该结果列路径,使用 CASE 表达式和 LIKE 谓词检查当前键值是否已经出现在父节点的路径中;如果答案是肯定的,则意味着找到了循环,则在名为cycle的结果列中返回1,否则返回0;并向递归成员中添加一个筛选器,确保只返回未检测到循环的父节点的下属;(2c)最后,向外部查询中添加一个筛选器,返回存在于cand3结果集中且不存在于CTE中的节点。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南人文科技学院,未经湖南人文科技学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310580481.3/,转载请声明来源钻瓜专利网。