《交互式程序设计 第2版》一3.6 关系比较

简介:

本节书摘来华章计算机《交互式程序设计 第2版》一书中的第3章 ,第3.6节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 关系比较

与元组类型类似,关系类型也逃不过“'='比较运算符必须对每种类型都定义”这一规则;即,对于同种类型T的两个关系r1和r2,必须至少能检验它俩是否相等。其他的比较可能也是有用的。比如,我们可能想检验是否有“r1包含r2(即r2中的所有元组也在r1中)”,或者是否有“r1完全包含r2(即r2中的所有元组也在r1中,且r1至少包含一个不在r2种的元组)”。下面是一个关系相等性比较的实例,依旧用Tutorial D表达:

S { CITY } = P { CITY }

此处,左侧的比较元是供应商在{CITY}注7上的投影,右侧比较元是零件在{CITY}上的投影,如果两个投影是相等的,则比较运算返回TRUE,否则返回FALSE。换言之,这个比较(布尔表达式)意味着“供应商城市集合与零件城市集合相等”(当然,它的计算结果不是TRUE就是FALSE)。
另一个示例如下:

S { SNO }   SP { SNO }

此处的符号“image”代表“完全包含(properly include)”(或等价 “是其真超集”(is a proper superset of))。此表达式的含义是(意会):一些供应商根本没供应任何零件型号(计算结果不是TRUE就是FALSE)。
其他有用的关系比较运算符包括“△”(“包含”),“image”(“包含于”)和“image
”(“完全包含于”)。注意:在这些运算符中,人们常常会认为“image
”运算符就是“那个”关系包含运算符。
一个特别常见的需求就是,把某个确定的关系r和同类型的空关系进行“=”比较,也就是说,这是一个用来检验是否为空的测试。因此,定义一个缩写是很方便的:

IS_EMPTY ( r )

此表达式定义为在关系r为空时返回TRUE,否则返回FALSE。后续章节将非常依赖这个表达式(尤其是第8章)。它的反运算符也很有用:

IS_NOT_EMPTY ( r )

此表达式逻辑等价于NOT (IS_EMPTY (r))。

相关文章
|
SQL 数据库
《交互式程序设计 第2版》一1.1 关系模型被严重地误解了
本节书摘来华章计算机《SQL与关系数据库理论——如何编写健壮的SQL代码》一书中的第1章 ,第1.1节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。</span>
1140 0