1.自然连接:
结果基于表R和S的笛卡尔乘积,取对应的R和S中相同属性组都相同的值,同时相同属性组只保留一个
(百度上是先求笛卡尔乘积,然后再筛选,那样的话效率比较低,优化的方法应该是先筛选符合条件的元组,然后再进行笛卡尔乘积)
先来看图示,2个表以及自然连接的结果

操作的步骤
1.1找出2个表中相同的属性组: 属性A加上属性B

1.2找相同属性组中,相同的属性值所对应的元组 :
相同的属性值: 1. <a1,b1>
2. <a1,b2>
相同属性值对应的元组:
第一组: <a1,b1>对应 R表:<a1,b1,d1>
S表:<a1,b1,e1>, <a1,b1,e2>
第二组 <a1,b2>对应.R表:<a1,b2,d3> <a1,b2,d4>
S表:<a1,b2,e3>

1.3同一组的元组之间进行笛卡尔乘积运算,相同属性只保留一个
(笛卡尔乘积后属性列是 R.A R.B D S.A S.B R.E,因为(R.A和S.A), (R.B和S.B)是相同属性,所以只保留一个,最终列属性只有 A B D E)
第一组结果

第二组结果

将2组的结果合并起来就得到了最终结果,这就是自然连接
2.外连接(左右外连接)
外连接是在自然连接的基础上,保留连接的一端没有匹配的元祖,另外一段用空值(null)填充
以上面的自然连接为基础,既然是左右外连接,那么左边的主表没有匹配的元组是
<a2,b1,d2> 右边没有匹配的元祖是 <a3,b2,e3> ,把这2个元组加入自然连接的表中,然后没有值的属性就赋值为null,如下图

3.左外连接,左边是主表,只保留左端未匹配的元祖
根据1的例子,可以得出左外连接

4.右边的S表是主表,保留右边的未匹配的记录,得到右外连接

本文详细介绍了关系数据库中的三种连接方式:自然连接、左外连接和右外连接。通过实例展示了如何基于两个表进行连接操作,并解释了每种连接的特点。
2689

被折叠的 条评论
为什么被折叠?



