带约束的合取查询与查询重写
在数据库查询领域,带约束的合取查询是一个重要的研究方向。本文将深入探讨带约束的合取查询相关内容,包括满足同态性质的查询条件以及查询重写的方法。
满足同态性质的AC查询条件
在研究过程中,我们发现了一些新的条件,用于识别更多满足同态性质的AC查询。在介绍这些条件之前,先引入了连接闭包(Join - Closure)的概念。
- 连接闭包(Join - Closure) :对于变量A,以及A至少出现在其中一个子目标的子目标集合,且每个子目标至少与另一个子目标共享一个变量,这个子目标集合称为A的连接闭包,记为$J^{*}_{A}$。
设Q1是仅具有左半区间(LSI)约束(X < c 或 X ≤ c,其中X是变量,c是常量)的AC查询,Q2是任意AC查询。如果Q1和Q2满足以下至少一个条件,则同态性质成立:
1. L4条件 :AC(Q2)闭包中每个封闭LSI中的变量在Core(Q2)中出现的重复子目标少于两个。这可以防止形成以下类型的耦合:
- $X ≤α ⇒(X < α ∨X = α)$
- $(X ≤α ∧Y = α) ⇒(X < α ∨X = Y )$
- $(X ≤α ∧Y ≤α) ⇒(X < α ∨Y < α ∨X = Y )$
其中α是共享常量。通过查看这些耦合的右侧,可以很容易验证L4条件。
2. L5条件 :Core(Q2)中没有重复子目标,或者AC(Q2)闭包中主题封闭LSI中的变量未出现在重复子目