關係代數之連接 (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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章