“固定一个输出全部变量的合取查询。用有限属性集 $V$ 和带索引的属性族 $(e i) {i\in I}$ 表示它:$V=\bigcup i e i$,每张输入表 $R i$ 是属性 $e i…”
形式陈述 ​
查询及其集合语义 ​
在关系演算中,本页的合取查询取如下形式:
每个项是变量或常量,没有函数项;
答案
所有变量都由关系事实约束,因此成功匹配不依赖未使用的外部论域值。这给出合取查询域独立性的直接证明,不需要为每次求值另行枚举无限宇宙。
查询包含、同态与规范数据库 ​
以下固定同一有限关系模式,实例中的每张表都是有限元组集合,且不另加键或其他依赖约束。比较的两个查询具有相同输出元数,输出坐标按同一次序比较;常量表示固定且互异的值。写
记
构造
合取查询包含定理。 对上述纯合取查询,以下三件事等价:
所以,包含方向是从
直觉
合取查询像一张带共享空格的事实清单。填入一个课程名后,“学生选了这门课”和“教师教这门课”必须同时在表中找到。共享空格强制两条事实谈论同一门课;存在量词说明只需找到一种填法,不要求把填法交给用户。
变量名字不同,只是允许独立选择,并没有要求选到不同对象。把两个空格都填成同一个值,常常正是合法答案;这种匹配不是把查询图单射地嵌入数据图。
包含问的是:“只要第一张事实清单能填成,第二张是不是也一定能填成?”反向同态先把第二张清单的空格接到第一张清单的空格或常量上;随后第一张清单在任何数据库中的填法,都能沿着这些接线传给第二张。规范数据库则把第一张清单直接做成一份数据,让这个问题有一份固定的测试材料。
例子与边界
从问题到规则、连接与答案 ​
问题是“找出学生及其所选课程的授课教师”。取三行选课表与三行授课表:
其公式和规则分别写为
箭头表示右侧事实成立便产生左侧答案,不是给表增加一条约束。关系代数实现为
甲—林既可用算法作见证,也可用数据库作见证。若只问周的学生,得到甲、乙;从 Teach 删除数据库—周后,这个答案变为空。反之,只扩大未使用的外部论域,答案不变。
这条规则只读取给定的输入表。Datalog 与有限最小不动点进一步允许规则体使用规则自己定义的关系:反复加入新答案,直到关系闭合。正体匹配的含义不变,但递归答案必须由最小模型确定,不能只执行一轮查询。
为什么代数实现对所有实例成立 ​
若
不同变量不表示不同对象 ​
对单自环关系
加入显式等式原子时,可以合并被等式识别的变量、把与常量相等的变量替换掉,但还必须保持输出有范围;两个不同常量被要求相等时,查询恒空。这类扩展不能悄悄混入不含等式的定义。析取得到合取查询的并,否定引入差集式条件,也都超出了本页片段。
同一查询对:合并中点证明包含 ​
在同一个二元关系
先判定
三个原子的像依次是
再用规范测试核对:冻结
这四对答案相同只核验了一份实例;全实例包含仍由同态及后面的证明保证。
反向失败:用同一查询对构造反例 ​
若要证明
冻结
这条链唯一的三步游走从
迁移题:中点成为常量以后 ​
把中点的一部分位置改成固定常量
仍有
集合见证不能代替重复次数 ​
取
查询来源与半环标注进一步给每条输入事实一个符号,用乘法记录同一见证使用的事实,用加法保留替代见证。它复用本页的六条选课与授课事实,为甲—林得到
依赖约束改变了允许实例 ​
若只比较满足约束集合
本例补上
只含函数依赖时,可以采用一个更受限且保证终止的等式过程。函数依赖的追赶检验不生成新事实,而在固定表中合并被依赖强制相同的符号;每次有效合并减少符号类数。针对投影分解,它用全标记行证明无损,用无成功行的终止表构造满足约束的反例。这保留了规范数据库“把符号冻结成证据”的思想,却先修复了原符号表可能违反约束的问题;其终止证明不覆盖上面的事实生成依赖。
推论与应用
为什么反向同态恰好刻画包含 ​
先证明有同态就有包含。取任意允许实例
所以
再证明包含蕴含规范测试。冻结赋值本身满足
最后证明规范测试产生同态。设
令
改写与单调性 ​
合取查询具有单调性:只向输入关系增加元组时,已有见证不会消失,所以旧答案仍成立。带否定的查询一般没有这一性质,例如增加
匹配可以用连接次序与投影位置来组织;改写时必须保留后续匹配需要的共享变量,不能先丢掉课程再做任意配对。包含定理提供了集合语义下的改写证书:两个方向各给一个同态,就证明改写对所有有限实例保持答案;失败时,相应的规范数据库给出反例。
求值和包含是不同的判定问题 ​
联合求值复杂度把查询
固定查询的数据复杂度只让
查询包含的输入只有
若固定查询并要求枚举全部完整见证,问题还包括输出规模与中间结果成本。最坏情形最优连接用属性超图的分数边覆盖证明最大输出规模,并通过三角形的重轻分解避免先物化巨大的二元连接。这是枚举算法的保证,与上面的成员判定、查询包含不是同一个复杂度问题。
参考资料
- Ashok K. Chandra、Philip M. Merlin,Optimal Implementation of Conjunctive Queries in Relational Data Bases,STOC 1977,pp. 77–90。§4 Theorem 7(p. 81)给出联合求值复杂度;§5 的自然模型(p. 81)与 Lemma 13(p. 83)给出双向同态与等价的证明。单方向包含可从其中的赋值复合推导得到。
- Paris Koutris,CS838: Foundations of Data Management,Spring 2016,Lecture 2: Query Containment,Definitions 2.4–2.5、Theorems 2.7、2.9(pp. 2-1–2-2):规范数据库、包含同态与包含复杂度。
- Paris Koutris,CS784,Spring 2021,Lecture 3: The Computational Complexity of Relational Queries,§3.2、Theorem 3.9(pp. 3-3–3-4):联合复杂度与数据复杂度的区分。
- Andreas Pieris,Advanced Topics in Foundations of Databases,2018/19,Lecture 3,PDF 第 10–11、18 页:约束下原始同态判据的边界及可能无限的 chase。