關系代數


基本運算:

選擇運算:選出滿足給定謂詞的元組,用“σ”符號表示,而將謂詞寫作σ的下標,參數關系在 σ 后的括號中。

     例,選擇關系instructor中屬於“物理(Physics)”系的那些元組,可以用關系代數:σdept_name="Physics"(instructor)來進行選擇。

     通常,我們允許在選擇謂詞中進行比較,使用的是, =,≠,<,>。我們也可以使用連詞and(Λ), or(ν), 和not(¬)將多個謂詞合並為一個較大的謂詞。

投影運算:列舉所有我們希望在結果中出現的屬性,用"π"符號表示,而將我們想要的屬性作為下標,作為參數的關系緊跟在 π 后的括號中。

     例,可以通過如下關系代數來獲得上述的教師列表:πID,name,salary(instructor)。

關系運算組合:因為關系運算的結果也是一個關系,所以可以用一個關系運算的結果作為參數來進行另外一個關系運算,這就稱為關系運算組合。

關系的並、差運算:這與集合的運算是一樣的,但於是關系 r 和關系 s 的並、差運算有關系,則要求下面兩個條件同時成立:

  1. 關系r、必須是是同元的,即它們的屬性數目必須相同。
  2. 對所有的i,r 的第 i 個屬性的域必須和 s 的第 i 個屬性的域相同。

笛卡爾乘積:使得我們可以將任意兩個關系的信息組合在一起,用"×"表示。

更名運算:關系代數的表達式沒用可供我們引用的名字,這一點與數據庫中的關系有所不同,但我們可以使用"ρ"表示更名運算來為其賦一個名。

     假設關系代數表達式E,表達式ρx(E)返回E的結果,並把名字x賦給了它。

     對於一個關系r來說,它自身被認為是一個關系代數表達式。因此,我們可以將更名運算運用於關系r,這樣可以得到具有新名字的一個相同的關系。

     更名運算的另一形式如下:

     假設關系代數表達式E是n元的,則表達式:ρx(A1,A2,...,An)(E),返回表達式E的結果,並賦給它名字x,同時將各個屬性更名為A1,A2,...,An。

關系代數的形式化定義:

關系代數中基本的表達式是如下二者之一:

  • 數據庫中的一個關系。
  • 一個常數關系。

常數關系可以用在{ }內列出它的元組來表示,例如{(22222, Einstein, Physics, 95000),(76543,Singh,Finance,80000)}

附加的關系代數運算:

集合交運算:不難證明:r ∩ s = r - ( r - s )。

自然連接運算:二元運算自然連接可以將某些選擇運算和笛卡爾乘積運算合並為一個運算。用符號⋈表示。自然連接運算首先形成它的兩個參數的笛卡爾乘積,然后基於兩個關系模式中都出現的屬性上的相等性進行選擇,最后還要去除重復屬性。其形式化定義如下:

       r⋈s=πR∪S(σr.A1=s.A1 and r.A2=s.A2 and ... and r.An=s.An (r×s))

       其中R∩S={A1, A2, ..., An}

賦值運算:有時通過給臨時關系變量賦值的方法來寫關系代數表達式會很方便。賦值運算用符號←表示,與程序語言中的賦值類似。

     例如:我們可以用賦值運算來簡化自然連接的形式化定義:

     temp1←R×S

     temp2←σr.A1=s.A1 and r.A2=s.A2 and ... and r.An=s.An (temp1)

     r⋈s=πR∪S(temp2)

外連接運算:外連接運算是連接運算的擴展,可以處理確實信息。外連接運算與自然連接運算比較類似,不同之處在於它在結果中創建帶空值的元組,以此來保留在連接中丟失的那些元組。

      外連接有三種形式:

  1. 左外連接:用符號⋊表示,取出左側關系中所有與右側關系的任意元組都不匹配的元組,用空值填充所有來自右側關系的屬性,再把產生的元組加到自然連接的結果中。
  2. 右外連接:用符號⋉表示,取出右側關系中所有與左側關系的任意元組都不匹配的元組,用空值填充所有來自左側關系的屬性,再把產生的元組加到自然連接的結果中。
  3. 全外連接:用符號表示,相當於既做左外連接,又做右外連接。

擴展的關系代數運算:

廣義投影:通過允許在投影列表中使用算術運算和字符串函數等來對投影進行擴展,廣義投影運算形式為:

     πF1,F2,...,Fn(E)

     其中E是任意的關系代數表達式,而F1,F2,...,Fn中的每一個都是涉及常量以及E的模式中的屬性的算術表達式。最基本的情況下算術表達式可以僅僅是一個屬性或常量。通常來說,在表達式中可以使用對數值屬性或者產生數值結果的表達式的+、-、*、/ 等代數運算。

聚集:聚集函數輸入值的一個匯集,將但一值作為結果返回。聚集函數有:sum,avg,count,min,max。此外,我們可以在函數后加上 -distinct 來對輸入的值進行去重。

   聚集運算Ç通常的形式如下:

    G1,G2,...,GnÇF1(A1),F2(A2),...,Fn(An)(E)

   其中E是任意關系代數表達式,G1,G2,...,Gn是用於分組的一系列屬性;每個Fi是一個聚集函數,每個Ai是一個屬性名。運算的含義如下,表達式E的結果中元組以如下方式被分成若干組:

  1. 同一組中所有元組在G1,G2,...,Gn上的值相同。
  2. 不同組中元組在G1,G2,...,Gn上的值不同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM