数据库关键字查询技术研究
扫描二维码
随时随地手机看文章
引言
在计算机应用领域中,由专业人员实现对数据库查询的编程技术,我们就以关系数据库进行数据处理来举例说明,大多数情况下都使用结构化查询语言SQL(StructuredQueryLanguage)语言,SQL语言是一种在关系数据库中定义和操纵数据的标准语言,其最主要、最核心的部分就是查询功能。当针对某一个数据库执行查询时,系统按照特定的组合、条件表达式或次序进行检索,依此用来返回我们所要寻找和感兴趣的数据信息。
1查询举例
设有一个SPJ数据库,包括S、P、J、SPJ四个数据表,s供应商表由SNO(供应商代码)、SNAME(供应商姓名)、STATUE(供应商状态)和CITY(供应商所在城市)组成;P零件表由PNO(零件代码)、PNAME(零件名)、COLOR(颜色)和WEIGHT(重量)组成;J工程项目表由JNO(工程项目代码)、JNAME(工程项目名)和CITY(工程项目所在城市)组成;SPJ供应情况表SNO(供应商代码)、PNO(零件代码)、JNO(工程项目代码)和QTY(供应数量)组成。如果想要找到“没有使用天津供应商生产的红色零件的工程号JNO”的数据信息,那么,可以使用以下一种SQl语句来实现查询:
SELECT JNO
FROM J
WHERE NOT EXISTS
(SELECT *
FROM SPJ
WHERE SPJ. JNO= J .JNO
AND SNO IN
(SELECT SNO
FROM S
WHERE CITY=‘天津’)
AND PNO IN
(SELECT PNO
FROM P
WHERE COLOR =‘红色’));
从上面的例子中可知,若用户要在线访问数据库,就必须使用SQL语句在数据库上查询,那么该系统就要求用户了解数据库模式的基本知识,而且还要求用户能够熟练、灵活的使用SQL语句。但在实际的操作过程中,我们发现大多数用户对关系数据库基本不了解,更谈不上熟练地使用结构化查询语言SQL等知识,所以,该SQL查询不适合广大用户。随着互联网技术的不断发展,出现了以关键字查询的数据库技术。尽管数据库关键字的查询研究有很多代表性成果,但其查询的核心思想都是基于图和“简化子树”的,所有的关键字查询技术的研究都是从数据图中找到最好的查询结果树。
2核心思想
2.1关键字查询
一个关键字查询其实就是一个集合K,其查询结果就是一个给定的数据图G的一个子树T,那么T就是给定集合K的简化形式,简而言之,T包含了K,但不会有T的子树包含K。
所有的关键字查询技术都是把我们定义好的关系数据库当做一个数据图G,图G的节点是以元祖、关键字表示的。在我们进行查询时,不同元祖间的连接是通过外键实现,所以在它们之间就有一条边存在。若一条元祖t有关键字k,那么t和k间就有连接存在。所以,一个关键字查询的结果其实就是一个图G的子树,该子树是图G关于关键字K的简化,也就是简化子树。简化子树的生成主要有两种方法:“基于数据图的方法”和“基于模式图的方法”。
2.2基于数据图的方法
数据库关键字查询技术的大多数研究都是采用了基于数据图的方法来生成简化子树。这种方法就是对数据图直接处理,从中枚举简化子树,首先,把数据图看成一个带权重的数据图,并且假设数据图已经被物化;其次,利用数据图中的节点(元组)和边(元组之间的主外键关联)的权重,作为关键字查询找到top-k个代价最小的简化子树。
2.3基于模式图的方法
利用数据库模式创建连接表达式,再在DBMS上执行连接表达式对应的SQL语句得到结果,具体的步骤为:第一步,枚举所有可能包含查询结果的连接表达式,在枚举连接表达式时会对该表达式的尺寸做一个限制。若表达式尺寸太大,就说明包含的连接数目很多,那么这两个元祖之间会产生大的距离。那么,即使这两个元祖之间存在连接关系,但是实际的意义不是很大;第二步,根据相应的规则把第一步得到的连接表达式转化为SQL的查询语句,然后在对应的数据库上执行,要么SQL语句直接在DBMS上执行,要么在中间件上执行SQL语句,而中间件位于RDBMS层之上。因为要处理大量的关系代数表达式,所以许多研究都采用基于中间件的方法。
3结语
越来越多的用户需要通过互联网访问在线数据库来获取信息。因此,本文主要针对数据库关键字查询技术做了一个简单的分析和介绍,主要包括的内容有数据库关键字查询技术的核心思想,紧接着引出了关键字查询的两类方法,分别是基于数据图的方法和基于模式图的方法,并对这两类方法做了介绍,并比较了各自的优缺点,解决了传统意义上的数据库查询技术所遇到的问题,具有一定的理论和实践价值。