知识卡片

关系变量谓词与命题:及闭合世界假设

结构图卡

内容

理解关系变量还有一个远比”它只是个抽象文件”更深刻的视角:每个关系变量都关联 一个谓词(predicate),这个谓词是对现实世界某一部分的通用(参数化)陈述, 叫做这个关系变量的”内涵”(intension)——比如供应商关系变量S的谓词是”供应商 SNO签订了合同,其名称为SNAME,其状态为STATUS,其所在城市为CITY”,参数就是 关系变量的各个属性。谓词本质上是一个真值函数:用具体实参(如S1、Smith、20、 London)替换参数(逻辑学称为”实例化谓词”),得到的是一个命题(proposition) ——一个逻辑上非真即假的陈述句(书中提醒:”命题总是真的”是常见误区,命题也 可以是假的,例子是”莎士比亚写了The Monkey Wrench Gang”这个命题为假)。关键 的建模约定是:关系变量在某一时刻实际出现的每一个元组,都被当作”用这个元组 的属性值实例化关系变量谓词后得到的命题在此刻为真”;而没有出现在关系变量里、 但看起来符合标题结构的元组,则被当作对应命题此刻为假——这个”未出现即为假” 的约定就是所谓的闭合世界假设(closed world assumption)。这个视角带来一条 精炼的总结:在任何时刻,一个关系变量恰好且只包含当时代表真命题的全部元组。 另外要注意术语上的”术语强占”提醒:SQL大量把”谓词”(predicate)这个词借用来 指代WHERE子句里的布尔表达式(”比较谓词”“IN谓词”),这和本节讨论的、更宽泛 的逻辑学意义上的”谓词”(关系变量的整体语义陈述)是两个不同层次的概念,容易 混淆。

结构图

flowchart LR
    A["关系变量谓词<br/>(参数化陈述, 如S的内涵)"] -->|用具体实参实例化| B[命题<br/>非真即假的陈述句]
    B -->|元组实际出现在关系变量中| C[命题为真<br/>元组被收录]
    B -->|元组未出现/闭合世界假设| D[命题为假<br/>元组不被收录]

参考来源

- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第5章"基关系变量和 基表"5.5节"关系变量和谓词"(源文件:OEBPS/text00056.html) - 结论依据:原文明确"这个关系变量的标题代表了确定的谓词……这些谓词是对于 关系变量S的预期释义……也称为'内涵'……设关系变量R具有谓词P,则在某时刻出现 在R中的任一元组t都可认为是代表了确定的命题p……我们假设依此方式得到的每个 命题p都为TRUE……在任何时刻,一个关系变量R都包含且只包含当时代表真命题的 所有元组……我们采纳所谓的'闭合世界假设'"。 - 原始内容:这个关系变量的标题代表了确定的谓词……在任何时刻,一个关系变量R 都包含且只包含当时代表真命题的所有元组……我们采纳所谓的"闭合世界假设" (closed world assumption)。