首页 > 代码库 > 8种常用的关系代数运算_20160928

8种常用的关系代数运算_20160928

关系代数:是一种抽象的查询语言,用对关系的运算来表达 查询。关系代数运算的是关系,运算结果亦是关系。

3.1 概述
用表或者数据集合,表示 关系或实体;
用行 表示元组;
用列 表示属性;
 
3.2 包括:
 

5个基本操作:并(∪)、差(∪)、广义笛卡儿积(×),选择(π)、投影(σ)

四个组合操作:交(∩)、连接等值联接)、自然连接(R技术分享S)、除法(÷)

 
 

 

3.2.1 并――关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。

3.2.2 交――返回两个数据集合所共有的行。 
3.2.3 差――返回只属于一个数据集合的行。

 

3.2.4 笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。

 

 

 

 

例如:假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)} 。即若R有k1个元组,S有k2个元组,则关系R和S的笛卡尔积有k1*k2个元组。

 

如下例所示:

            技术分享      技术分享

  结果:

            技术分享

      由结果分析:笛卡尔积得到的结果元数为r+s即:3+3=6;记录数为:R中的记录数与S中的记录数相乘,即:3×2=6。

      (全码:关系模式中所有属性组都是这个关系模式的候选码)

 

3.2.5 选择――返回满足指定条件的行(水平切割)。

例如 δ2 > ‘4‘(R),表示从R中挑选第二个分量值(也就是R中B列的值)大于4的元组所构成关系。

       结果:           

 技术分享   技术分享

 

 


 

 

3.2.6 投影――从数据集合中返回指定的列(垂直切割,消去列)。

关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
ΠA(R) = { t[A] | t∈R },其中A为R中的属性列。  
 

例如:π3,1(R)表示的结果如下:

       技术分享       技术分享

 

                

 

3.2.7 连接――在水平方向上合并两个表,其方法是:从两个关系的笛卡尔积中选取满足条件的元组。(连接运算的操作基础是两个关系的笛卡尔积)

等值连接:从笛卡尔积中,选取的属性列相等的 元组。(条件AθB中的θ为‘=’的连接)

如下有关系R和S,则技术分享是什么呢?B(R) = B(S)

                技术分享    技术分享

    结果:

                           技术分享

                  技术分享

自然连接:是一种特殊的 等值连接。它要求两个关系中,进行比较的分量必须是相同的属性组,并且在结果集中把重复属性列去掉。

即一般自然连接使用在R和S有公共属性的时候,如果没有公共属性,自然连接就转为笛卡尔积操作。

 例如:关系R和S,则自然连接的结果呢?

                  技术分享    技术分享

 结果:

                   技术分享

 

3.2.8 除―:―返回两个数据集之间的精确匹配。 

给定关系R(X,Y),S(Y,Z),xyz为属性组,满足在X上的分量值x的象集Y,包含关系S在属性组Y上投影的集合。

 

 

 

例子:R÷S

         R:                                                 S:

           技术分享          技术分享

结果:

             技术分享            

         计算过程:

          (1)T=π1,2(R),从R中选取除去与S中相同的属性,即选择S#,SName

          (2)W=(T ×S)-R,将上面得到的T与S进行笛卡尔积,再减去R,即计算T×S中不在R的元组

          (3)V=π1,2(W),从W中选取1,2对应的属性列,即:S#,SName

          (4)R ÷ S = T-V

8种常用的关系代数运算_20160928