數據庫系統概論——03——關係代數

關係:一個扁平二維表。N個集合的笛卡爾積集合的子集。

每一行爲一個元組,每一列爲一個屬性。關係模型爲數據庫表的表頭。

主鍵(碼):選一個候選碼作爲身份區別。

超碼:一個關係中,能夠標識一個元組的屬性。

候選碼:一個關係中,能夠標識一個元組,最小屬性集合。可能有多個,基於用戶的使用環境。


null值與其他值比較時,其結果爲null(null表示不確定)。

3  in {1,2,null}  結果爲null。


關係性的完整性約束機制:1.主碼屬性不能爲空  2.外碼取值受限制(取值爲參照的表的值,或爲空)3.域完整性是針對某一具體關係數據庫的約束條件,它保證表中某些列不能輸入無效的值。4.用戶定義的完整性


它是一種抽象的查詢語言,用對關係的運算來表達查詢。
關係代數用到的運算符包括傳統的運算符和專門的關係運算符兩類。

傳統的集合運算有  並,差,交  和 笛卡爾積4個,都爲雙目運算符。

專門的關係運算符有選擇,投影,連接和除4個,選擇和投影是單目運算符,連接和除是雙目運算符。
傳統的關係運算符:
1.並(UNION) 設有兩個關係R和S,它們具有相同的結構(屬於同一個域)。R和S的並是由屬於R或屬於S的元組組成的集合,運算符爲∪。記爲T=R∪S。
2.差(DIFFERENCE) R和S的差是由屬於R但不屬於S的元組組成的集合,運算符爲-。記爲T=R-S。
3.交(INTERSECTION) R和S的交是由既屬於R又屬於S的元組組成的集合,運算符爲∩。記爲T=R∩S。 R∩S=R-(R-S)。
4.笛卡爾積 X,兩個分別爲n目和m目的關係R和S的廣義笛卡爾積是一個(n+m)列的元組的集合。
元組的前n列爲R的一個元組,元組的後m列爲關係S的一個元組。 若R有k1個元組,S有k2個元組,則關係R和關係S的笛卡爾積有k1 x k2個元組。


選擇運算: (類似6)選取某些符合條件的元組。

投影:(類似π)選取某些符合條件的列。

Join操作:在某些條件下   R連接S,R中的每一個元組 與S中的每一個元組做笛卡爾積,滿足條件的元組留下來,兩個表的列並在一起。

Natural join:R連接S,R中的每一個元組 與S中的每一個元組做笛卡爾積,相同的列取值相同的被留下,其餘的被刪除,兩個表的列並在一起。

左外連接:左邊全部的信息會被留下,類似Natural Join。

象集:一個關係R(X , Z),X的值爲某個值時,Z的值對應的集合。

除:元組在x上分量值x的象集Yx包含S在Y上投影的集合。一定是象集Yx含有每一個S在y上投影的集合,結果只有分量值x。並且包含象集Yx的元組對應的X應完全相同。



專門的關係運算符:
1.選擇運算
從關係中找出滿足給定條件的那些元組稱爲選擇。其中的條件是以邏輯表達式給出的,值爲真的元組將被選取。這種運算是從水平方向抽取元組。 在FOXPRO中的短語FOR和WHILE均相當於選擇運算
如:LIST FOR 出版單位='高等教育出版社' AND 單價<=20
2.投影運算
從關係模式中挑選若干屬性組成新的關係稱爲投影。這是從列的角度進行的運算,相當於對關係進行垂直分解。在FOXPRO中短語FIELDS相當於投影運算。 如: LIST FIELDS 單位,姓名
3.連接運算
連接運算是從兩個關係的笛卡爾積中選擇屬性間滿足一定條件的元組。
4.、除法運算
在關係代數中,除法運算可理解爲笛卡爾積的逆運算。
設被除關係R爲m元關係,除關係S爲n元關係,那麼它們的商爲m-n元關係,記爲R÷S。商的構成原則是:將被除關係R中的m-n列,按其值分成若干組,檢查每一組的n列值的集合是否包含除關係S,若包含則取m-n列的值作爲商的一個元組,否則不取。
設關係模式爲 R(A1,A2,,,An) , 它的一個關係設爲R,t屬於R表示t是R的一個元組(通俗些也就是一行數據)。t[Ai] 表示元組t中相應屬性Ai的一個分量。
象集的本質是一次選擇運算和一次投影運算。
例如關係模式R(X, Z),X和Z表示互爲補集的兩個屬性集,對於遵循模式R的某個關係A,
當t[X]=x時,x在R中的象集(Images Set)爲:
Zx={ t[Z] | t ∈ R,t[X]=x }
它表示:其實就是所有值等於x的元組(或記錄),然後在Z上的投影。


------象集的本質是一次選擇運算和一次投影運算。

(R中X分量等於x的元組集合在屬性集Z上的投影)。
如R:
X Y Z
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
在關係R中,X可以取四個值{a1,a2,a3,a4}
a1在R中的象集爲{(b1,c2),(b2,c3),(b2,c1)}
a2在R中的象集爲{(b3,c7), (b2,c3)}
a3在R中的象集爲{(b4,c6)}

a4在R中的象集爲{(b6,c6}


1.選擇運算實際上是從關係R中選取使邏輯表達式F爲真的元組。這是從行的角度進行的運算。

2.投影運算是從R中選擇出若干列組成新的列。這是從列的角度進行的運算。

3.連接運算從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組,比如,從R到S的笛卡爾積 R x S 中選取R關係中在A屬性組上的值與S關係中在B屬性組上值滿足比較關係。

連接分爲等值連接和自然連接。

等值連接,它是從關係R與S的笛卡爾積中選取A , B屬性值相等的那些元組。是從行的角度進行的。自然連接,是一種特殊的等值連接,它要求兩個關係中進行比較的分量必須是相同的屬性組,並且在結果中把重複的屬性去掉。是同時從行的角度和列的角度進行的。

4.除 給定關係R(X,Y) 和S(Y,Z) ,其中X,Y,Z爲屬性組,R中的Y與S中的Y可以有不同的屬性名,但必須有相同的值域。R與S的除運算得到一個新的關係P(X),該P中只包含R中投影下來的X屬性組,並且該屬性組X應該滿足:  R(Y)=S(Y);


關係的查詢處理:

查詢處理是關係數據庫管理系統執行查詢語句的過程。

查詢處理可以分爲4個階段:查詢分析,查詢檢查,查詢優化和查詢執行。

查詢分析檢查語法錯誤。查詢檢查進行語義檢查,即相應的操作對象是否存在,是否違背完整性約束等。

查詢優化是選擇一個高效執行的查詢處理策略。

查詢執行是根據優化器得到的處理策略生成查詢執行計劃,由代碼生成器生成某個查詢計劃的代碼,然後執行。


最佳實踐:

如果在關係代數中需要做連接操作,則應使用自然連接,而不是笛卡爾積運算。

能在自然連接前使用選擇減少數據,則先執行選擇,後連接。



發佈了334 篇原創文章 · 獲贊 37 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章