一种非一致性数据库无聚集查询方法

文档序号:6516879阅读:246来源:国知局
一种非一致性数据库无聚集查询方法
【专利摘要】本发明涉及一种非一致性数据库无聚集查询方法,属于数据库查询【技术领域】。具体步骤为:(1)首先计算树叶及其兄弟的查询子集:根据无连接的算法对于一致性结果的获取方法,重写查询在cand_R1中基于初始查询加入了DISTINCT和键属性;(2)然后再计算其父结点的查询子集:在算法中用Fki表示,但Fki对于不同的结点,可能有不同的连接属性;(3)基于步骤(1)和步骤(2),从树叶及其兄弟结点键依次计算,最后得到根结点的查询子集;在外查询查询中,把根结点的查询子集对键属性进行分组计算,如果存在不重复的键值,无重复键值的属性表达式S即为一致性查询结果。本发明算法简单,消除了算法查询过程中的干扰,便于数据库查询功能的实现。
【专利说明】一种非一致性数据库无聚集查询方法【技术领域】
[0001]本发明涉及一种非一致性数据库无聚集查询方法,属于数据库查询【技术领域】。
【背景技术】
[0002]查询重写是采用一阶查询重写方法对在多项式时间内可处理的查询进行重写,重写的查询也是一阶的,在一阶逻辑中能被翻译成SQL。由于重写查询能在多项式时间内和独立于数据的途径下得到,因而这种方法在多项式时间内是可解的。一阶查询重写算法有一些限制:只能采用无量词的合取查询和二元约束,一些在多项式时间内可处理的合取查询也不能进行查询重写。基于连接图允许存在量词的合取查询没有重复的关系或者内置谓词,基于这种合取查询,ConQuer系统给出的SQL重写查询能返回所有符合给定键约束的数据,但没有考虑SPJ聚集查询。
[0003]Hippo系统提出了一种冲突图的解决方法,是CQA在大型数据库上的系统,采用的方法是产生元组冲突图放到内存中,产生一个Java程序的过程化方法去计算一致性结果。Hippo的前提是:冲突的数量对于冲突超图是足够的小,能存储到主存中。问题是如果数据库中存在大量的冲突元组,则冲突图加载到内存中会造成额外的系统负载。此外,这种算法不能处理存在量词和基本全称约束的查询。
[0004]Infomix系统是基于逻辑编程方法的,相对查询重写技术来说,这种方法能处理所有的一阶查询和更多的完整性约束类型,如一阶查询、全称约束、引用约束等。但其重点是基于稳定模型语义的可表达性和获取正确的逻辑结果,而不是计算的有效性和可扩展性,不能产生有效的解决结果。因此这些系统的计算复杂度比SQL更高,因此不能运行在海量数据库上。

【发明内容】

[0005]本发明的目的在于克服上述技术的缺点,提供一种非一致性数据库无聚集查询方法,以便能够针对非一致性数据库更好地进行查询。
[0006]为了实现上述目的,本发明的技术方案如下。
[0007]—种非一致性数据库无聚集查询方法,具体包括以下步骤。
[0008](1)首先计算树叶及其兄弟的查询子集。根据无连接的算法对于一致性结果的获取方法,重写查询在中基于初始查询加入了 DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组。在常见表表达式中的子查询中,剔除了在键值相等的情况下不满足初 始查询的元组(投影属性值不相同、不满足条件或条件谓词中的属性为NULL)。得到树叶及其兄弟的查询子集。
[0009](2)然后再计算其父结点的查询子集。对于父结点来说,每个子结点的连接属性可能是一致的,也可能是不一致的,在算法中用FKi表示,但FKi对于不同的结点,可能有不同的连接属性。(a)类似的,重写查询在cand-Ri中基于初始查询加入了 DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组。在常见表表达式中的子查询中,剔除了在键值相等的情况下不满足初始查询的元组(投影属性值不相同、不满足条件或条件谓词中的属性为NULL)。(b)并且,Ri的外键必须在于TPi的子结点及其兄弟的查询子集中。(c)然后,在键值相等的情况下,剔除了 TPi的外键为NULL或者外键不存在于TPi的子结点Rh及其兄弟的查询子集中。其中cand—R^brother为该子树的兄弟取得的查询子集,它存在于集合{cand_Rv…,cand_Rm — j\中。
[0010](3)基于步骤(1)和步骤(2),从树叶及其兄弟结点键依次计算,最后得到根结点的查询子集。在外查询查询中,把根结点的查询子集对键属性进行分组计算,得到如果存在不重复的键值,无重复键值的属性表达式^即为一致性查询结果。
[0011]步骤(1)中所述的无连接的算法,其基本思想如下。
[0012](I)对于给定的初始查询,重写查询在常见表表达式中基于初始查询加入了DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组。[0013](2)在常见表表达式中的子查询中,采用谓词“Rl.SOR2.Sf\ISNULL (SCA)进行判断,剔除了不满足初始查询的元组,主要是3种情况:Ca)键值相等但投影属性值不相同;(b)键值相等但不满足条件谓词(否定形式);(c)键值相等但条件谓词中的属性为NULL。最后在外查询中返回初始查询的非键属性值。
[0014]连接查询基于无连接的查询重写算法,需要判断连接图中每个顶点(关系)的一致性,并且需要考虑相邻顶点的连接属性。这类算法是聚集查询重写的基础。
[0015]上述无聚集的查询重写算法,基于下列关于SPJ查询重写相关的形式化说明。
[0016](I)对于给定的关系TP= [R1, -,Rm]上的SPJ合取查询W G为7的连接图,则把连接图根结点的关系表不为於"οο? ;连接图的根结点的关系键属性表不为'FKroot %Rroot的外键属性尤,.0R1, -,Rm的键属性;键与键的连接谓词表示为足/;非键与键的连接谓词表示为ΛΤ/。
[0017](2)对于给定的关系集合TP= [R1,..'R1)上的SPJ合取查询^,7的投影属性表达式 (?,…,5;}是分别存在于关系&,…,(中’其条件选择谓词形式表示为^=^^;,^^,…
,SCJ,其条件选择谓词SC的属性表示为5--= {5U7,SCA2,…,SCAJ,其条件选择谓词SC的否定形式表示为NSC二 [NSClyNSC2,…,NSCm},SCR二 [SCR1, SCR2,…,SCRm}为选择谓词属性SCA所在的关系。
[0018](3)对于给定的关系集合TP= …,兄}上的SPJ合取查询为7对应的连接图。采用?表示TPi的兄弟(I <i <m)0类似的表示ZPjro iAe/?的键属性,衰示R^brother的投影属性,SCi衰示R^brother的条件选择谓词,SCAi衰示RiJorother的选择谓词SCi的属性,NSCi新、RJjrother的条件选择谓词SCi的否定形式,SCRi表示R^brother的条件选择谓词属性所在的关系。
[0019](4)对于给定的SPJ查询q,q对应的连接图为G,如果q c Cextree.那么查询q的一般形式为:
SELECT S FROM R1, — ,Rm
[WHERE KJ AND NKJ AND 5T7AND…AND SCj [ORDER BY 0\。
[0020]在不同的关系中,可能存在合取选择谓词,也可能不存在合取选择谓词,并且对于同一个关系,可能存在多个合取选择谓词,因此对于合取选择谓词是可选的。此外,对于初始查询给定的属性表达式&是一个相应的集合,集合的元素可能存在于多个关系中,因此在每一步从树叶到树根的计算过程中,关系的属性表达式是可选的,并且对于同一个关系,可能存在多个属性表达式。
[0021]该发明的有益效果在于:本发明提供的一种非一致性数据库无聚集查询方法,能够能够针对非一致性数据库更好地进行查询。且算法简单,消除了算法查询过程中的干扰,便于数据库查询功能的实现。
【专利附图】

【附图说明】
[0022]图1是本发明实施例中无连接的重写算法图。
[0023]图2是本发明实施例中无聚集算法的标记图。
[0024]图3是本发明实施例中无聚集的查询重写算法图。
【具体实施方式】
[0025]下面结合附图对本发明的【具体实施方式】进行描述,以便更好的理解本发明。实施例
[0026]本实施例中,假定合取查询对应的连接图是非平凡图时,不存在不与任何顶点邻接的顶点。因为这类查询是无连接的多关系查询,存在多个孤立点,其笛卡尔积的计算负载很大,在实际应用中无任何 意义。因此,基于连接图的概念,无连接查询对应的连接图是一阶平凡图,在连接图中只有一个顶点,是非常简单的。这类查询将是连接查询和聚集查询的基础。以下首先分析没有连接的查询。
[0027]例1、给定7?(41,似,A?)关系实例/={(c7,/?7,2000),(cl,n2, 100),(c2,n2, 2500),(c2,n2, 1500),(c3,n2, 2200),(c3,nl, NULL) },分别表示为 i2,泛,…,访元组。有如下的候选数据库-.1l=iVtl, t3, t5], 12={tl, t3, t6), 13={tl, t4, t5], 14={tl, t4, t6),15- {t2, t3, t,5), 16= {t2, t3, t6), 17- {t2, t4, t,5), 18- {t2, t4, t6)。每个候选数据库是一致的,尽可能与/接近。妨表示存在第2种可能值。假定查询A?>1000的J7,如果不考虑NULL值,则c3是一个一致性结果。然而,事实上由于存在NULL值,并不能确定c3的A?大于1000。如果每个数据源的信息都是缺失的,则元组值不是冲突的,但是不确定的。给定查询返回关于A?属性值大于1000的J2,一阶查询形式为:
^ Al-.RiU., A3) λΑ?>1000
查辦导到W,忒忒d}。显然,结果是非一致的。(a)因为d的A?属性值可能低于1000 (元组泛),而C7在另一个元组?7满足这个查询。(b)此外,由于元组妨的A?属性值是未知的,因此cJ的A?属性值可能低于1000。(c)尽管和M是非一致的,但M和t4的A?属性值都大于1000,这2个元组都满足查询,因而c2出现了 2次。由于考虑作为这个关系的键,不能在结果中有重复的值,因此是一致性结果。本实施例给出了一个重写查询去计算一致性结果。一阶重写查询为:
? Al \R(Al, A3) Λ^J>1000 a ,iA3: {RiAl, A3) λΑ3 < 1000)。
[0028]这个重写查询与初始查询不同,使用了 DISTINCT关键字保证每个一致性结果不是重复的,因此cJ?将只出现一次;此外,它有一个嵌套子查询,目的是过滤掉那些满足初始查询但有其它不满足情况的元组,这里将过滤掉c7,因为c7满足初始查询但在元组t2的A?属性值小于1000。然而,一阶查询重写是基于二值逻辑,不能有效地处理空值。对于元组t6的空值,既不能判断它大于某个数值,也不能判断小于某个数值。如存在一个元组A?为空,则A? < 1000不满足,A?>1000也不满足。上述的重写查询得到的结果是,包括了不满足查询的c3,也不是一致性结果。因此需要考虑重写查询用于过滤空值。
[0029]为了总结成一个算法,必须考虑如何处理投影。上面的查询在连接图的根结点返回的是关系键。以下考虑投影在其他非键属性上的查询重写。给定查询返回A?属性值大于90的(继续例4-1)。一阶查询形式为:
-^A2\R(AL,A2,A3) λΑ3>90
查询返回{nl,n2,n2,n2,n2}。然而,元组tl和t2是不一致的,t6存在空值。只有t3和M元组是一致的。因此一致性结果是。给定重写的查询如下:
^A2\R(AL,A之 A3) Λ AJ>90 λ^λΑ3\ {R(Al, A3) λΑ3 < 90)
这个重写查询不能有效地消除重复,且不能很好地处理空值。因此,本文基于第三章给出的分析,采用SQL来解决空值问题,并且可以有效地减少一阶查询的嵌套层次。给出了如下的SQL重写查询。
[0030]WITH cand AS(
SELECT DISTINCT A1,A^FR0M R cl
WHERE cJ.AJ>90 AND NOT EXISTS
(SELECT * FROM Rc2
WHERE cl.Al=c2.Al AND {cl.A20c2.A2 OR
c2.A3<=m OR c2.A3 IS NULL)))
SELECT A之 FROM cand
这个投影在非键属性上的重写查询与上面的投影在键属性上的重写查询是类似的。唯一的区别是本实施例中在常见表表达式中加入了键属性然后在外查询中投影初始查询的非键属性。这是因为,如果没有外查询,而直接投影在初始查询的非键属性上,有可能造成在多个键属性上满足条件,而只返回一个值的情况。在常见表表达式中加入键属性后,本文可以根据键属性值区分满足条件的值,然后在外查询中得到返回多个值。在给出无连接的重写算法之前,本实施例给出几个定义。
[0031]定义1:对于给定的关系7?上的合取查询W把关系7?的键属性表示为他T。q的形式为:SELECT S FROM R [WHERE SC] [ORDER BY 0]。
[0032]定义2:对于给定的关系7?上的合取查询w把其条件选择谓词形式表示为SC= [SC1, SC2,…,50,其条件选择谓词SC的否定形式表示为NSC二 [NSC1jNSC2, -,NSCn],其属性表示为 SCA= [SCA1, SCA2,…,。
[0033]显然,元组的属性值可以采用SQL查询中的IS NULL和IS NOT NULL表示。为了便于表达,本文引入一个新的谓词ISNULL进行表示,代替SQL中的IS NULL。
[0034]定义3:对于给定的关系7?上的合取查询,如果7?的属性J存在空值,那么谓词ISNULL (A)用于判断属性J的元组值是否为空。
[0035]图1给出了无连接的查询重写算法,其基本思想如下。
[0036](I)对于给定的初始查询,重写查询在常见表表达式中基于初始查询加入了DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组。[0037](2)在常见表表达式中的子查询中,采用谓词“Rl.SOR2.Sy\ISNULL (SCA)进行判断,剔除了不满足初始查询的元组,主要是3种情况:Ca)键值相等但投影属性值不相同;(b)键值相等但不满足条件谓词(否定形式);(c)键值相等但条件谓词中的属性为NULL。最后在外查询中返回初始查询的非键属性值。
[0038]连接查询基于无连接的查询重写算法,需要判断连接图中每个顶点(关系)的一致性,并且需要考虑相邻顶点的连接属性。本实施例对已有的算法进行详细地分析,解决原有算法的空值处理问题,改进执行性能。这类算法将是聚集查询重写的基础。
[0039](I)原有算法分析
例2:给定关系况)和化?,A?为外键。TtV实例为100), {o2, jo, c2, 10),{o2,ma, c3, 200), {o3, ma, c4, 120), {o3,pat, c2, 150), {o4,ma, c2,150),{o4,ma, c3, 150),{o5,ma, c2, 150),{o5,a, NULL, NULL)},依次为 sl,s2..,s8 元组-,R2关系实例为{{cl,nl, 2000),{cl,n2, 100),{c2,n2, 2500),{c2,n2, 1500),{c3,n2, 2200),{c3,nl, NULL)},依次为tU t2,.., t6元组。给定查询,检索U属性值大于1000的似属性值。
[0040]根据已有的算法,重写查询采用常见表表达式表示。分成2个子查询candidates和filter。其中,candidates对应于初始查询,与初始查询不同的是,candidates添加了DISTINCT关键字,用于去掉重复的信息,计算所有可能的候选值。filter用于过滤在可能的元组中那些可能不一致的元组。最后在外查询中,计算存在于candidates候选值,但不存在于fil ter中的所有A之值。
[0041]重写查询得到{ο之o4, 05}。原因是o7是非一致的,o7对应的有一个小于1000的t2。o3也是非一致的,因为对应的2个不存在于似关系中。在重写查询中,有2个子查询和/i/ter。candidates除了 DISTINCT关键字外,其它与原始查询是相同的。由于是一个键,因此在每个候选数据库中,它的值只出现一次。的结果是{ol,o2,o3,o4,o5}。filter hk candidates的返回结果中过滤掉不一致的元组。filter的结果是{ol, o3] ,ol被返回是因为W连接泛,泛对应的U属性值小于1000(在/i7ter中C.幻〈=1000 ) -,o3被返回是因为ο J出现在W中,而W在说中对应的c4没有出现关系R2中。由于没有连接到R2中的任何元组ifilter中Rl和R2的连接是左连接),在左连接中,oJ和属性Z/的一个空值一起出现。因此,?7以麗/ZZ”条件是满足的,oJ被返回。最终的一致性结果{0之ο4, ο5]是candidates查询到的元组{o7, o2, o3, o4, o5],且没有被fiI ter返回的元组{o7,ο 。
[0042]然而,这个重写查询没有考虑空值处理,妨的U属性值为空,是不确定的,即。2和o4对应的c3尽管存在U属性值大于1000的情况,但c3的U属性值大于1000是不确定的,不是一致性的。因此这个重写查询得到的一致性结果{0之040旬是不完备的,需要考虑空值的处理,并改写这个重写查询。
[0043]此外,在有连接的情况下,必须考虑如何处理投影。在例2中,连接图的根结点返回的是关系键,如果修改它返回其他非键属性,则必须给出新的重写。
[0044]给定查询似属性值大于1000的属性值。根据已有的算法,在重写查询中,
子查询选择了和J2,原因是过滤非一致性元组必须基于关系键。过滤使用查询连接图的根结点关系UU )的键属性。candidates得到{{ol,ma),{o2, jo),{o2,ma),(o3,pat),ip4,ma),(o5,ma)}。ol被过滤是因为元组W连接元组t2,泛对应的U属性值小于1000张FiI ter中c.JJ<=1000) ;o3被过滤是因为。3出现在W中,而W在说中对应的c4没有出现关系化?中;oJ?被过滤是因为oJ?的似属性值可能是jo和。因此,Fil ter得到{W),(^),(^)}。如果某个似属性值存在多个^属性值,且这些^属性值对应的U属性值都大于1000,那么如果可能出现重复的结果。最终得到的一致性结果为是被candi da tes查询到,但没有被fi I ter查询到的A之属性值。
[0045]SQL的常用功能LEFT JOIN可以用于检索第一个表中的所有行、第二个表中所有匹配的行、以及第二个表中与第一个表不匹配的所有行。然而,它消耗的资源非常多,因为它们包含与NULL数据匹配的数据。LEFT JOIN比INNER JOIN消耗资源更多,重新编写查询可以使该查询不使用任何LEFT JOIN,可以提高执行效率。
[0046]基于上述分析,本实施例给出了无聚集的查询重写算法。在此之前,给出关于SPJ查询重写相关的定义。
[0047]定义4:对于给定的关系TP= {&,…,兄}上的SPJ合取查询^,6为7的连接图,则本文把连接图根结点的关系表示为/Prooi ;连接图的根结点的关系键属性表示为Zrooi ;FKroot为Rroot的外键属性'K1,…,KjR” ".,Rm的键属性;键与键的连接谓词表示为Λ7 ;非键与键的连接谓词表示为NKJ。
[0048]定义5:对于给定的关系集合= [R1, -,Rm]上的SPJ合取查询W q的投影属性表达式S= {^,-,5;}是分别存在于关系&,...,兄中,其条件选择谓词形式表示为SC二 {SC” SC2,…,5TJ,其条件选择谓词5的属性表示为υ={5為,5--,…,5--},其条件选择谓词SC的否定形式表示为NSC二 [NSC1, NSC2,…,NSCm],SCR= [SCR1, SCR2,…,SCRm]为选择谓词属性所在的关系。
[0049]定义6:对于给定的关系集合TP= [R1, -,Rm]上的SPJ合取查询为7对应的连接图。采用?表示TPi的兄弟(I s i s?)。类似的表示/PJroiAi?/?的键属性,Si衰示RiJorother的投影属性,5G.衰示RiJorother的条件选择谓词,Wi衰示RiJjrother的选择谓词SCi的属性,NSCi新、RJjrother的条件选择谓词SCi的否定形式,SCRi表示R^brother的条件选择谓词属性所在的关系。
[0050]定义7:对于给定的SPJ查询q, q对应的连接图为^如果q C Cextree.那么查询q的一般形式为:
SELECT S FROM R1, — ,Rm
[WHERE KJ AND NKJ AND 5T7AND…AND SCj [ORDER BY 0\。
[0051 ] 在不同的关系中,可能存在合取选择谓词,也可能不存在合取选择谓词,并且对于同一个关系,可能存在多个合取选择谓词,因此对于合取选择谓词是可选的。此外,对于初始查询给定的属性表达式&是一个相应的集合,集合的元素可能存在于多个关系中,因此在每一步从树叶到树根的计算过程中,关系的属性表达式是可选的,并且对于同一个关系,可能存在多个属性表达式。本实施例假定4,…,兄依次为连接图中树叶到树根相应的关系。图2能反映算法的基本结构和思路,图3给出了无聚集的查询重写算法,其基本思想如下。
[0052](I)首先计算树叶及其兄弟的查询子集。根据无连接的算法对于一致性结果的获取方法,重写查询在中基于初始查询加入了 DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组。在常见表表达式中的子查询中,剔除了在键值相等的情况下不满足初始查询的元组(投影属性值不相同、不满足条件或条件谓词中的属性为NULL)。得到树叶及其兄弟的查询子集。
[0053](2)然后再计算其父结点的查询子集。对于父结点来说,每个子结点的连接属性可能是一致的,也可能是不一致的,在算法中用/?表示,但/?对于不同的结点,可能有不同的连接属性。(a)类似的,重写查询在中基于初始查询加入了 DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组。在常见表表达式中的子查询中,剔除了在键值相等的情况下不满足初始查询的元组(投影属性值不相同、不满足条件或条件谓词中的属性为NULL)。(b)并且,Ri的外键必须在于TPi的子结点及其兄弟的查询子集中。(c)然后,在键值相等的情况下,剔除了 TPi的外键为NULL或者外键不存在于TPi的子结点Rh及其兄弟的查询子集中。其中cand—R^brother为该子树的兄弟取得的查询子集,它存在于集合{cand_Rv…,cand_Rm — j\中。[0054](3)基于步骤(1)和步骤(2),从树叶及其兄弟结点键依次计算,最后得到根结点的查询子集。在外查询查询中,把根结点的查询子集对键属性进行分组计算,得到如果存在不重复的键值,无重复键值的属性表达式^即为一致性查询结果。
[0055]以上所述是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
【权利要求】
1.一种非一致性数据库无聚集查询方法,其特征在于:具体包括以下步骤: (1)首先计算树叶及其兄弟的查询子集:根据无连接的算法对于一致性结果的获取方法,重写查询在中基于初始查询加入了 DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组;在常见表表达式中的子查询中,剔除在键值相等的情况下不满足初始查询的元组(投影属性值不相同、不满足条件或条件谓词中的属性为NULL),得到树叶及其兄弟的查询子集; (2)然后再计算其父结点的查询子集:对于父结点来说,每个子结点的连接属性可能是一致的,也可能是不一致的,在算法中用/?表示,但/?对于不同的结点,可能有不同的连接属性:(a)类似的,重写查询在中基于初始查询加入了 DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组;在常见表表达式中的子查询中,剔除在键值相等的情况下不满足初始查询的元组(投影属性值不相同、不满足条件或条件谓词中的属性为NULL); (b)并且,TPi的外键必须在于TPi的子结点及其兄弟的查询子集中;(c)然后,在键值相等的情况下,剔除&的外键为NULL或者外键不存在于&的子结点R1-!及其兄弟的查询子集中;其中cand—R^brother为该子树的兄弟取得的查询子集,它存在于集合{canH…,cand_Rm_1]中; (3)基于步骤(1)和步骤(2),从树叶及其兄弟结点键依次计算,最后得到根结点的查询子集;在外查询查询中,把根结点的查询子集对键属性进行分组计算,得到如果存在不重复的键值,无重复键值的属性表达式^即为一致性查询结果。
2.根据权利要求1所述的一种非一致性数据库无聚集查询方法,其特征在于:所述步骤(I)中的无连接的算法,其基本思想如下: (1)对于给定的初始查询,重写查询在常见表表达式中基于初始查询加入了DISTINCT和键属性,用于消除投影于键属性和初始查询中的投影属性的重复元组; (2)在常见表表达式中的子查询中,采用谓词“7P2.从和ISNULL(SCA)进行判断,剔除不满足初始查询的元组,主要是3种情况:a)键值相等但投影属性值不相同;b)键值相等但不满足条件谓词(否定形式);c)键值相等但条件谓词中的属性为NULL ;最后在外查询中返回初始查询的非键属性值。
3.根据权利要求1所述的一种非一致性数据库无聚集查询方法,其特征在于:所述无聚集的查询重写算法,基于下列关于SPJ查询重写相关的定义: (1)对于给定的关系W=[R1, -,Rm]上的SPJ合取查询AC为7的连接图,则把连接图根结点的关系表示为10i ;连接图的根结点的关系键属性表示为Zrooi 'FKroot为Rroot的外键属性xK”.0R1,…,Rm的键属性;键与键的连接谓词表示为足/;非键与键的连接谓词表示为ΛΤ/; (2)对于给定的关系集合=[R1, -,Rm]上的SPJ合取查询的投影属性表达式S=(?,…,5;}是分别存在于关系&,".,Rm中,其条件选择谓词形式表示为5= {5^,%,…,SCJ,其条件选择谓词SC的属性表示为5--= {5U7,SCA2,…,SCAJ,其条件选择谓词SC的否定形式表示为NSC二 [NSClyNSC2,…,NSCm},SCR二 [SCR1, SCR2,…,SCRm}为选择谓词属性SCA所在的关系; (3)对于给定的关系集合TP=[R1, -,Rm]上的SPJ合取查询G为7对应的连接图;采用RjJDrother表示兄的兄弟(I < i <m);类似的,Kib奉元RiJjrother的键属性,Si表^RjJDrother的投影属性,SCi衰示RjJDrother的条件选择谓词,SCAi衰示RjJDrother的选择谓词SCi的属性,NSC,.衰示R^brother的条件选择谓词SCi的否定形式,SCRi表示brother的条件选择谓词属性所在的关系; (4)对于给定的SPJ查询q, q对应的连接图为G,如果q c Cextree,那么查询q的一般形式为:
SELECT S FROM R1, — ,Rm
[WHERE KJ AND NKJ AND 5T7AND…AND SCj [ORDER BY 0\。
【文档编号】G06F17/30GK103605669SQ201310519053
【公开日】2014年2月26日 申请日期:2013年10月29日 优先权日:2013年10月29日
【发明者】不公告发明人 申请人:湖南人文科技学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1