當前位置:首頁 » 數據倉庫 » 資料庫關系的度
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫關系的度

發布時間: 2023-06-28 08:41:23

資料庫系統原理之關系代數

關系代數基於集合(關系),定義了一系列對集合(關系)對操作。如並,差,笛卡爾積,選擇,更名,投影等基本操作,以及基於基本操作推導出來的擴展操作。
關系代數作用於一個或多個關系,然後產生一個新的關系。可以將關系代數理解為函數,接受一個關系輸入,返回一個新對關系。舉個例子,我們將並操作命名為 Union ,那麼並操作可以表示為:

對於其他對操作猜型岩如差操作,選擇操作等,都有相應對數學符號進行表示,但在中輸入這些符號比較困難,再加上我學習關系代數是了解基本的概念知識,這里就不使用數學符號表示了,而是以文字代替。
關系代數定義了基於集合(關系)的操作,其是 SQL 的重要基礎(另一個重要基礎是關系演算),了解了關系代數的概念以及各個操作要達到的目的之後,對 SQL 中對一些概念也會更加清晰,如連接操作。
本文首先介紹關系代數中的基礎操作,再介紹擴展操作。

關系代數的基礎操作有:並,差,笛卡爾積,選擇,更名,投影等。有些操作如並,差等要求參與運算的關系需要具備並相容性。所謂並相容性,就是兩個關系的屬性數目(度)相同,並且每個度所在的域相同。
如 R(學生,學號,地址) 和 S(課程,課程號) 兩個關系由於度和屬性所在的域不相同,因此不具備並相容性,也就無法進行並,差等操作。
相應的, R2(學生,學號,地址) 和 S(教師,教師號,地址) 由於度和屬性所在的域相同,因此具備並相容性。

並操作就是將兩個關系租盯合並為一個關系,在合並時去掉重復的元組。為什麼要去掉重復項呢?這是集合的特質,集合要求不能有重復項。
R 並 S 和 S 並 R 得到的結果是一樣的,即並操作滿足交換律。
舉個例子,有兩個關系 R(學生) 和 S(教師):

這兩個關系進行並操作的結果為:

差操作用來選擇出現在一個關系但並未出在另一個關系中的元組。
還是以上面兩個關系 R(學生) 和 S(教師) 為例,R 差 S 的結果為:

S 差 R 的結果為:

其中元組 T(Jerry,2,澳大利亞) 在兩個關系中都出現,是兩個關系的交集。因此差操作就是從一個關系中去除和另一個關系的交集所得到的集合。
差操作不滿足交換律。

笛卡爾積用來將兩個關系連接起來,笛卡爾積的結果將兩個關系中所有可能的元組組合起來。假設關系 R 的元組數目為 M,度數為 I,關系 S 的元組數目為 N,度數為 J,那麼 R 和 S 進行笛卡爾積運算得到的新關系的元組數目為 M * N,度數為 I + J。
舉個例子,有兩個關系 R(學生) 和 S(課程) :

那麼對 R 和 S 進行笛卡爾積的結果為:

笛卡爾積用來將兩個關系連接在一起,獲取所有可能的結果,其是連接操作的基礎。

選擇操作就是從一個關系中,選擇出滿足條件的元組。
如從上面的學生表中,選擇出學號大於等於 2 的學生,結果為:

選擇條件由與或非邏輯表達式構成。

投影操作是從給定的關系中,選擇出某些屬性屬性構成新的關系。如從學生表中投影出一個新的關系 R(姓名,地址) :

關系代數常用的擴展操作有交操作,Theta 連接操作,自然連接操作,外連接操作,除操作等。擴展操作可以由基礎操作推導而來。

交操作用來從兩個關系中,選擇出同時存在於兩個關系中的元組。如上面 R(學生) 和 S(教師) 進行交操作的結果為:

Theta 連接操作會從兩個關系的笛卡爾積中,選擇出某個條件的元組,並去掉重復項。例如在上面笛卡爾積例子,選擇出課程號不為 c1 並且學號不為 s1 的元組:

連接操作一般和投影操作配合使用,比如從上面的結果集中投影出 R(姓名,課程) :

Theta 連接操作中有個特殊的操作,叫做等值連接,即選擇條件為判斷是否相等。

自然連接可以認為是一種特殊的等值連接,其要求兩個關系具有相同的屬性,並且判斷條件為兩個關系中的某兩個相同屬性的值相等。
自然連接是最常用的連接操作。
假如有兩個關系 R(學生 ) 和 S(班級) :

對這兩個關系進行自然連接的結果為:

外連接就是在自然連接的結果集中,將空值元組和穗御沒有匹配到的元素放入到結果集中。
假如有兩個關系 R(學生 ) 和 S(班級) :

首先對這兩個關系進行自然連接:

我們在自然連接的結果集中,機上空值元組和沒有匹配到的元組:

以上就是外連接的結果,也叫做全外連接:保證兩端的元素不丟失。對應的,還有左外連接和右外連接,左外連接會保證左側的元素不丟失,右外連接會保證右側的元素不丟失。
因此上面兩個進行左外連接的結果為:

進行右外連接的結果為:

除操作是對兩個關系進行「除法」操作,要求「除數」關系是「被除數」關系的真子集。除操作會從「被除數」關系中,選擇出一個新的關系,設為 N,N 也是 「被除數」關系的真子集。N 需要滿足一個條件:
N 和「除數」關系的笛卡爾積是「被除數」關系的最大真子集。
好繞啊···
我們還是直接看例子吧。
假設有兩個關系: R(A1,A2,A3) 和 S(A3) :

對 R 和 S 進行除操作,得到的結果為:

如果 S 關系為:

那麼對 R 和 S 進行除操作的結果為:

從上面的例子來看,除操作適用於「滿足全部····」的查詢。舉個例子,從學生表中查詢選擇了所有課程或者選擇了軟體測試和軟體工程這兩門課程的學生。
假設存在一個關系 R(學生) 和 S(課程) :

現在我們要查詢選擇了軟體測試這門課的所有學生,則被除數關系為 R(學生) ,除數關系為:

對兩個關系進行除操作,得到的結果為:

如果我們只需要獲取學生的姓名,不需要學號這一列,那麼可以再對結果集進行投影操作:

本文介紹了關系代數以及關系代數中常用的基礎操作和擴展操作,基礎操作包括並,差,笛卡爾積,選擇,投影,更名等,某些基礎要做要求兩個參與運算的關系具有並相容性。擴展操作可以由基礎操作推導而來,可以完成更復雜的操作。
關系代數是 SQL 語言的基礎,SQL 語言是在關系代數上的一層封裝,目的是方便程序員使用。
關系代數的操作接受一個或多個關系作為輸入,再輸出一個新的關系,不同的關系操作可以進行相互的組合。例如可以先進行選擇操作再進行投影操作,先進行自然連接操作再進行選擇操作等等。根據不同的需求需要靈活的組合這些操作。

完。

㈡ 什麼是關系資料庫的度或目,還有什麼是在關系資料庫中什麼是單元關系什麼又是二元關系n元關系呢

關系表示為R(D1, D2, …, Dn)
關系的目或度:n
單元關系: n=1
二元關系: n=2
n元關系: n=n