[发明专利]自动生成数据库查询的方法和系统无效
| 申请号: | 200810125297.9 | 申请日: | 2008-06-30 |
| 公开(公告)号: | CN101620606A | 公开(公告)日: | 2010-01-06 |
| 发明(设计)人: | 武硕;刘长浩 | 申请(专利权)人: | 国际商业机器公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 北京集佳知识产权代理有限公司 | 代理人: | 康建峰;李春晖 |
| 地址: | 美国*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 自动 生成 数据库 查询 方法 系统 | ||
1.一种生成数据库查询的方法,包括步骤:
接收输入查询和行集数约束;以及
根据数据库的列组数据相关性对输入查询的局部谓词参数进行实例化,以生成满足行集数约束的候选测试查询。
2.根据权利要求1所述的方法,其中生成测试查询的步骤包括步骤:
为输入查询构建有向查询图;
对有向查询图进行遍历以构建有向生成树;
对有向生成树进行遍历以生成中间结果表;以及
根据中间结果表生成满足行集数约束的候选测试查询。
3.根据权利要求2所述的方法,其中:
按照参照完整性关系为输入查询构建具有根顶点的有向查询图;
通过深度优先遍历对有向查询图进行遍历以构建有向生成树;以及
通过广度优先搜索对有向生成树进行遍历以生成中间结果表。
4.根据权利要求3所述的方法,其中生成中间结果表的步骤按照层次顺序对有向生成树进行遍历,并且包括步骤:
针对每一层的有向生成树遍历,级联输入查询中局部谓词的参照列作为中间结果表的列组;
通过对列组值进行分组从数据库中检索聚合数据信息;以及
在中间结果表中保留各列组值均满足行集数约束的列组值并在中间结果表中记录行集数。
5.根据权利要求4所述的方法,其中行集数约束c为在可接受范围内的行集数约束c′,并且所述方法还包括根据对所生成的候选测试查询进行评价的步骤,以从中选择一组期望的测试查询。
6.根据权利要求1至5任一所述的方法,其中局部谓词包括等于谓词、单侧谓词、以及双侧谓词。
7.根据权利要求2至5任一所述的方法,其中在为输入查询构建的有向查询图为多于一个根顶点的情况下,所述方法还包括步骤:
在构建有向查询图之后,标识有向查询图中的接合点和桥接弧;
在构建有向生成树之后,通过虚拟弧链接不同有向生成树中的相关顶点,以将构建有向生成树步骤所构建的多个有向生成树转换成有向生成森林;以及
在中间结果表生成步骤中分别针对每一个有向生成树生成中间结果,然后将每一个中间结果表看作临时表,将虚拟弧作为有向生成树之间的联接关系,以进一步生成最终的中间结果表。
8.根据权利要求2至5任一所述的方法,其中查询包括子查询,并且如果子查询为相关子查询,将其去相关为不相关子查询;
所述方法在生成候选测试查询之前还包括步骤:从最深层的子查询开始直到最外层子查询,逐层迭代生成中间结果表。
9.根据权利要求2至5任一所述的方法,其中行集数约束为多个行集数约束,分别用于有向生成树的各层。
10.根据权利要求2至5任一所述的方法,其中在有向生成树为左深树的情况下,根据查询访问计划的的联接顺序来逐层生成中间结果表。
11.一种生成数据库查询的系统,包括:
有向查询图构建器,用于为输入查询构建有向查询图;
有向生成树构建器,用于对有向查询图进行遍历以构建有向生成树;
矩阵生成器,用于对有向生成树进行遍历以生成中间结果表;以及
候选查询生成器,用于根据中间结果表生成满足行集数约束的候选测试查询。
12.根据权利要求11所述的系统,其中:
有向查询图构建器按照参照完整性关系为输入查询构建具有根顶点的有向查询图;
有向生成树构建器通过深度优先遍历对有向查询图进行遍历以构建有向生成树;以及
矩阵生成器通过广度优先搜索对有向生成树进行遍历以生成中间结果表。
13.根据权利要求12所述的系统,其中矩阵生成器按照层次顺序对有向生成树进行遍历,并且:
针对每一层的有向生成树遍历,级联输入查询中局部谓词的参照列作为中间结果表的列组;
通过对列组值进行分组从数据库中检索聚合数据信息;以及
在中间结果表中保留各列组值均满足行集数约束的列组值并在中间结果表中记录行集数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810125297.9/1.html,转载请声明来源钻瓜专利网。





