关系代数之连接 (Join)和除(Division)
  TEZNKK3IfmPf 2023年11月12日 36 0

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

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

连接 (Join,联接)

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

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

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

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

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

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

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

说明:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

除(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上投影的集合。记作:

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

其中Yx为x在R中的象集关系代数之连接 (Join)和除(Division)

关系代数的“除”的等价定义还有许多,但本质相同。例如,有一种比较通俗的说法是:给定关系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}。

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

例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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

TEZNKK3IfmPf