关系代数之连接 (Join)和除(Division)

关系代数之连接 (Join)和除(Division)

数据库技术中这两个概念,对初学者而言,理解比较困难,本文对此进行深入浅出的解释。

连接 (Join,联接)

定义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:

 

其中A和B分别为R和S上度数相等且可比的属性组。θ是比较运算符。连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。

关系代数的“连接”的等价定义还有许多,如:连接(join,联接)是从两个分别为n, m目的关系R和S的广义笛卡尔积中选取满足给定条件F的元组组成新的关系称为R和S的连接,记作

 

其中A和B分别为R和S上度数相等且可比的属性列,θ是算术比较符(>,≥,<,≤,=,≠)。

理解:从笛卡尔积中选择满足一定条件的部分行。

说明:

① 连接运算中有两种最为重要也最为常用的连接:等值连接(equi-join)和自然连接(Natural join)。

② θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。即等值连接为:

 

③ 自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记作:

 

自然连接(Natural Join)是一种特殊而常用的连接。若R和S具有相同名的属性组,且连接条件为R和S中两关系所对应的同名属性列的值相等,则称为自然连接。对于自然连接,无须标明条件表达式F,在结果中要把重复的属性去掉。

 

例:有R和S两个关系,如下图:

 

查询关系R中属性C小于关系S中属性E的连接。

 

 

查询关系R中属性B与关系S中属性B相等的相等连接。

 

 

查询关系R中属性B与关系S中属性B相等的自然连接。

 

 

 

除(Division)

定义:给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:

 

其中Yx为x在R中的象集

关系代数的“除”的等价定义还有许多,但本质相同。例如,有一种比较通俗的说法是:给定关系R(x,y)与S(z)其中x,y,z为属性集(也可为单属性),R中的y和S中的z是同名的属性(集)也可以有不同的属性名, 但必须出自相同的域集。在求解R÷S时,对R按x的值的分组,然后检查每一组,如某一组中的y包含S中全部的z,则取该组中的x的值作为关系P中的一个元组, 否则不取。R÷S的商等于关系P。 

例1、 设关系R, S如下图,计算R÷S的结果。

解:在关系R中,A可以取四个值{a1, a2, a3, a4}。其中:a1的象集为{(b1,c2), (b2,c3), (b2,c1)} ; a2的象集为{(b3,c7), (b2,c3)} ; a3的象集为{(b4,c6)} ; a4的象集为{(b6,c6)} 。

S在(B,C)上的投影为{(b1,c2), (b2,c3), (b2,c1)}

显然只有a1的象集包含S在(B,C)属性组上的投影,所以R÷S={a1}。

 

例2、关系如下,计算R÷S  

  R:   A        B         C        D                  S:     C      D

       1        2         3         4                         3       4

       7        8         5         6                         5       6

       7        8         3         4                         4       2

       1        2         5         6

       1        2         4         2

       7        8         4         2

解:在关系R中,{A,B}可以取四个值{(1,2), (7,8), (1,2)}。其中:(1,2)的象集为{(3,4), (5,6), (4,2)} ; (7,8)的象集为{(5,6), (3,4), (4,2)} ; (1,2)的象集为{(5,6), (4,2)}

S在(C,D)上的投影为{(3,4), (5,6), (4,2)}

显然只有(1,2)和(7,8)的象集包含S在(B,C)属性组上的投影,所以R÷S是:   

               A         B

               1          2

               7          8

 

 

 

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值