[发明专利]一种XQuery到SQL查询语言的转换算法及关系数据的查询方法无效
申请号: | 200910069103.2 | 申请日: | 2009-06-02 |
公开(公告)号: | CN101561817A | 公开(公告)日: | 2009-10-21 |
发明(设计)人: | 陈世展;刘超;冯志勇;李柳青 | 申请(专利权)人: | 天津大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 天津市北洋有限责任专利代理事务所 | 代理人: | 李素兰 |
地址: | 300072*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种XQuery到SQL查询语言的转换算法及关系数据库的查询方法,首先,将关系数据映射为XML模式,具体映射规则为:构建自定义XQuery查询子语言,包括构建自定义该XQuery查询子语言的语法和函数;将自定义XQuery查询子语言转换生成SQL查询语言:利用转换后的SQL查询语言进行关系数据查询。与现有技术相比,本发明可以将一条针对关系数据进行查询的XQuery语句转换为带多层复杂嵌套及多表连接的SQL查询语句,所生成的SQL语句符合SQL99标准;本算法可以作为关系数据库XML扩展插件的查询转换的基础,也可用来实现数据库相关的中间件,实现使用XQuery语言对数据库查询。 | ||
搜索关键词: | 一种 xquery sql 查询 语言 转换 算法 关系 数据 方法 | ||
【主权项】:
1.一种XQuery到SQL查询语言的转换算法,该算法包括以下步骤:第一步,构建自定义XQuery查询子语言,包括构建该自定义XQuery查询子语言的语法和函数;第二步,将自定义XQuery查询子语言转换成SQL查询语言:识别XQuery查询子语言的语法,建立XQuery语法树;遍历XQuery语法树,根据所遍历的当前节点,指向及生成转换SQL语法树的节点,转换过程中分别设置一个指针指向当前处理的XQuery语法树和SQL语法树的节点,规则如下:如果遍历到当前XQuery语法树节点为QueryBody,则遍历当前XQuery语法树的子节点;如果遍历到当前XQuery语法树子节点为FLWORExpr,则在SQL语法树中新建SelectClause节点,添加到当前指向的节点的子节点数组;如果遍历到当前XQuery语法树子节点为UnionExpr,则在SQL语法树中新建SetClause节点,添加到当前指向节点的子节点数组中;如果遍历到XQuery语法树子树,SQL语法树指针指向新建节点;如果遍历到当前XQuery语法树指向节点分别为XQuery语法树节点UnionExpr/IntersectExceptionExpr和SQL语法树节点set_clause:遍历XQuery语法树左子树,建立当前SQL语法树左子节点;遍历XQuery语法树右子树,建立当前SQL语法树右子节点;如果遍历到XQuery语法树当前指向节点分别为FLWORExpr和select_clause,则遍历XQuery语法树的ForExpr或LetExpr子树;如果遍历到XQuery语法树存在WhereExpr节点,则遍历XQuery语法树的WhereExpr子树;如果遍历到XQuery语法树当前节点为ReturnExpr和select_clause,遍历子节点FLWORExpr节点或ReturnColumns节点;如果遍历到XQuery语法树当前节点为ReturnColumns节点和DisplayedColumns节点,则遍历XQuery子树生成SQL查询投影列;如果遍历到XQuery语法树当前节点为FunctionCall和DisplayedColumns,生成SQL语法树相应Function节点;如果遍历到XQuery语法树当前节点为WhereClause节点和WhereCondition节点,遍历XQuery语法树子节点;如果遍历到XQuery语法树当前节点为RebVarRef和DisplayedColumn,则根据变量类型生成SQL查询投影列,如果变量是整张表则查询全部字段;如果遍历到当前XQuery语法树指向节点为运算表达式,包括算术运算和逻辑运算:将运算符设置为当前SQL节点值;遍历XQuery左子树,生成SQL节点左子树;遍历XQuery右子树,生成SQL节点右子树;如果遍历到当前XQuery语法树指向节点为ForClause节点或LetClause节点,SQL语法树当前节点为select_clause节点,则获取查询数据表名;判断参数类型为整张表还是表中某一字段,设置参数值;如果遍历到当前XQuery语法树指向节点为括号表达式ParenthesizedExpr,则直接遍历其子树;输出SQL语法树根节点,转换算法及结束;第三步,遍历SQL语法树,生成SQL语句,包括以下步骤:接收SQL语法树根节点,新建空SQL语句;遍历SQL语法树:如果遍历到当前节点为根节点,则遍历子节点,连接遍历子节点结果值为SQL语句;如果遍历到当前节点为select_clause节点:遍历第一个子节点,生成投影列;遍历第二个子节点,生成选择表;如果遍历到存在第三个子节点,则遍历生成选择子句;如果遍历到当前节点为运算表达式,包括算术和逻辑运算表达式:遍历左子树,生成左操作树;遍历右子树,生成右操作树;返回运算表达式;如果遍历到其它节点,直接返回节点值;生成SQL语句。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910069103.2/,转载请声明来源钻瓜专利网。