SQL三值逻辑的真值函数完备性探究
在逻辑与数据库领域,SQL的三值逻辑(3VL)是否具有真值函数完备性是一个值得深入探讨的问题。本文将围绕这一核心问题,详细分析SQL对单目连接词和双目连接词的支持情况,以揭示SQL在三值逻辑中的表现。
1. 单目连接词基础
首先,让我们了解一些单目连接词的基本概念。存在几个重要的单目连接词,如IDENTITY(恒等)、TRUE(真)、UNKNOWN(未知)、FALSE(假)、NOT(非)等。这些连接词具有特定的逻辑定义:
- IDENTITY(x) 等价于 NOT(NOT(x)),实际上就等同于 x 本身。
- TRUE(x) 等价于 (x IS lit) IS NOT UNKNOWN ,其中 lit 可以是 TRUE、UNKNOWN 或 FALSE 中的任意一个,更简便地说,它可简化为 TRUE。
- UNKNOWN(x) 直接简化为 UNKNOWN,这个连接词也被称为 Slupecki T - 函数。
- FALSE(x) 可以定义为 x IS TRUE、x IS UNKNOWN 和 x IS FALSE 中任意两个的逻辑与,为了对称,这里定义为三者的逻辑与,它也等价于 (x IS lit) IS UNKNOWN ,可简化为 FALSE。
同时,逻辑或(OR)和逻辑与(AND)具有交换律和结合律。交换律意味着对于所有布尔值 x 和 y,x OR y 等价于 y OR x,x AND y 等价于 y AND x;结合律则表示对于所有布尔值 x、y 和 z,x OR (y OR z) 等价于 (x OR y) OR z 等价于 x OR y OR z,x AND (y AND z) 等价于 (x AND