“群、序、图和集合论都可用一阶语言公理化;在计算机科学中,数据库查询、程序验证与 SMT 求解也大量使用它的可控片段。具体而言,关系演算用公式界定答案,合取查询用存在量词和事实的合取匹配选课、…”
形式陈述 ​
给定关系数据模型中的有限实例
这里输出变量
固定查询后,若对每个有限实例及每次论域扩张
则称查询域独立。这是语义条件,而不是公式的一种外观。本文与关系代数的等价关系只指这个域独立片段;代数一侧采用有限集合语义,允许查询常量组成的有限常量关系、空关系和零列单位。等价表示每个查询都能翻译成另一语言中在所有实例上同答案的查询。
另一种约定是活跃域求值:令
直觉
查询写出“什么条件算一个答案”,求值器寻找满足条件的元组。学生—教师查询是
否定本身不是问题。
例子与边界
自由变量没有范围 ​
令
只限制输出变量仍然不够 ​
令
虽然
一种安全的改写是
安全句法、语义安全与空活跃域 ​
文献中的 safe-range 条件是一套可机械检查的充分句法规则;满足规则的查询域独立,但任意域独立公式未必已经写成该规则接受的形式。表达能力定理允许先翻译成安全形式,不能倒过来说只看“每个变量在某处出现”便得到完整判定。析取分支、否定内部与量词作用域都必须纳入规则。
空活跃域特别容易暴露约定差异。没有输入值或常量时,一阶句子
推论与应用
等价翻译的两条方向 ​
关系代数到演算按表达式结构归纳:连接对应共享变量的合取,投影对应存在量词,并对应析取,差
反方向在
若输出元数
这才说明任意论域上的正元输出都只能为空,包括候选元组含有多个不同坐标值的情形。零元输出则可能为真;可在一个辅助单元素论域上评价句子,按输入零元关系的真假生成相应的有限布尔组合,再用
这说明等价定理需要的是明确的语义约定,不能把“遍历活跃域”当作适用于所有公式和边界的口号。合取查询提供一个更直接的安全片段:所有使用的变量都通过正关系事实获得见证。在这个片段中,还可以冻结查询变量构造规范数据库,用另一查询是否返回冻结头元组来判定全实例包含;成功赋值解冻后就是反向同态。这一判据依赖正关系原子的结构,不能由演算与代数等价直接推广到任意含否定的公式。
对涉及并发读的应用,还要由事务与隔离语义确定本次公式究竟在哪个实例上求值。
参考资料
- Serge Abiteboul、Richard Hull、Victor Vianu,Foundations of Databases,Addison-Wesley,1995,§5.3(域独立性与代数等价)、§5.4(safe-range 算法及表达能力)。本页显式补充非空外部论域下的空活跃域和零元结果约定。
- E. F. Codd,Relational Completeness of Data Base Sublanguages,IBM Research Report RJ987,1972,§3.2–3.3、§4.4。原文的范围限制是其翻译结论的前提,不能省略为“任意一阶逻辑等于关系代数”。