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