数据库中缺失信息处理与 SQL 三值逻辑探究
1. 关系值属性处理缺失信息
1.1 XVF 运算符扩展
在某些情况下,当关系为空时,我们期望得到特定结果,如零值。原有的 XVF 运算符在处理空关系时会抛出异常,为此可以对其定义进行扩展,新的语法如下:
XVF ( <relation exp> [ , <exp> ] [ : <alt exp> ] )
当 <relation exp>
表示的关系为空时,XVF 调用将返回 <alt exp>
的值。例如,对于示例 2 的第二种表述可以修改为:
WITH ( T1 := ZS UNGROUP ( Z_CITY ) ) :
EXTEND T1 { CITY } :
{ AVG_STATUS := AVG ( ‼T1 , XVF ( Z_STATUS : 0 ) ) }
1.2 聚合运算符扩展
聚合运算符在应用于空关系且无合适的标识值时,结果通常未定义。可以借鉴 XVF 的扩展方式,对聚合运算符进行类似扩展。例如, AVG ( S , STATUS : 0 )
可以定义为当关系变量 S 当前为空时返回零。
1.3 子类型的作用
对于属性定义 Z_ATTR