知识卡片

自然连接的精确定义及"交"与"积"是连接的特例

结构图卡

内容

连接运算依赖”可连接性”(joinability)概念:两个关系r1、r2可连接,当且仅当 它们同名属性都属于同一类型(也就是真正是同一属性),等价地说,是当r1和r2的 标题在集合论意义下取并集后仍然构成一个合法标题(不出现同名不同类型的冲突)。 自然连接(简称连接)的精确定义是:标题为r1、r2标题的集合论并集,主体是把r1 每个元组和r2每个元组做集合论并运算后得到的元组集合,这个定义直接揭示了两个 容易被忽视的事实——交集是连接的特例(r1和r2标题完全相同这一特殊情形,此时 r1 INTERSECT r2r1 JOIN r2逻辑等价);笛卡尔积也是连接的特例(r1和r2没有 任何公共属性的特殊情形,此时公共属性集合为空,所有元组在空属性集上都取同一个 0-元组值,于是”连接”退化成r1每个元组和r2每个元组的自由组合,即积)。这个统一 视角还引出一个有趣的恒等元类比:JOIN也支持多元/零元写法,JOIN{r1,...,rn} 连接任意多个关系,JOIN{r}就是r本身,而JOIN{}(不连接任何关系)的结果是 TABLE_DEE——这完全类比于普通算术里0是加法的恒等元、1是乘法的恒等元:对所有 关系r,r JOIN TABLE_DEETABLE_DEE JOIN r恒等于r,所以”没有任何关系的连接” 自然得到这个恒等元TABLE_DEE,这个类比也是理解”连接本质上就是笛卡尔积的推广” 这一说法最直观的入口。

结构图

flowchart TD
    A["连接 JOIN(r1, r2)<br/>标题=集合并, 同名属性即同一属性"] --> B["特例1: 交 INTERSECT<br/>r1, r2标题完全相同"]
    A --> C["特例2: 积 TIMES<br/>r1, r2无任何公共属性"]
    A --> D["零元 JOIN{}<br/>= TABLE_DEE (连接的恒等元)"]
    D -.类比.-> E["算术中 0是+的恒等元<br/>1是×的恒等元"]

参考来源

- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第6章"SQL和关系代数 I:原始运算符"6.5节"连接"(源文件:OEBPS/text00064.html) - 结论依据:原文明确"关系r1和r2是可连接的(joinable),当且仅当同名属性是 同一类型的……它们的自然连接……r1 JOIN r2是一个具有如下特点的关系:(a)标题 是r1与r2标题在集合论意义下的并集……可以看出交集是连接的特例……积(product) 运算也是连接的特例……在关系代数中,TABLE_DEE对于JOIN运算而言是恒等的…… 因此,没有任何关系的连接得到的就是TABLE_DEE"。 - 原始内容:关系r1和r2是可连接的,当且仅当同名属性是同一类型的……可以看出 交集是连接的特例……积运算也是连接的特例……TABLE_DEE对于JOIN运算而言是 恒等的……没有任何关系的连接得到的就是TABLE_DEE。