之前在學習數據庫時接觸過關系代數,只是在經過很長一段時間不應用之后,不能很快從大腦中將知識調出來,今天就來了個再次學習總結加深自己的印象。
關系代數:是一種抽象的查詢語言,用對關系的運算來表達 查詢。關系代數運算的是關系,運算結果亦是關系。關系代數的基本關系包括:並、交、差、笛卡爾積、選擇、投影、連接、除法運算。由於並、交、差運算很簡單,這里不再贅述,只說明了幾個容易遺忘和混淆的運算。
1、笛卡爾積
計算兩個關系R和S的笛卡爾積,R的元數為r,S的元數為s,則R×S是一個(r+s)元的元組集合,如下例所示:
結果:
由結果分析:笛卡爾積得到的結果元數為r+s即:3+3=6;記錄數為:R中的記錄數與S中的記錄數相乘,即:3×2=6。
2、選擇
選擇是根據某些條件對關系做水平切割,例如δ2 > '4'(R),表示從R中挑選第二個分量值(也就是R中B列的值)大於4的元組所構成關系。
結果:
3、投影π
投影與選擇正好相反,是對關系的一種垂直切割,消去某列,並重新安排列的順序。投影用(π)表示。例如:π3,1(R)表示的結果如下:
由結果可以看出:查詢表達式中的下標可以用數字表示,也可以用列的名字表示,返回列的名字,而其他的列在結果關系中被去掉,也可以通過投影來重新布局關系的排列。
4、連接
連接運算:從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組,用(R ⋈ S)表示,連接分為兩種,一種是等值連接(有的書上寫的是連接),另一種是自然連接。等值連接:條件AθB中的θ為‘=’的連接;自然連接:關系R與S選取A、B屬性值相等的那些元組。
看個例子就很容易明白了:
等值連接:如下有關系R和S,則是什么呢?
結果:
自然連接:一般自然連接使用在R和S有公共屬性時,如果沒有公共屬性,自然連接就轉為笛卡爾積操作。
例如:關系R和S,則自然連接的結果呢?
結果:
5、除法
例子: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
總結:
經過總結之后,發現其實關系之間的運算並不難,關鍵在於要認真分析,將符號與我們的實際找到聯系,只有對各種符號印象深刻之后,這些關系之間的運算也就變得很簡單。在平時要多找聯系多總結,方是正道。