數據庫中的自然連接、選擇、投影
http://blog.csdn.net/m_future1993/article/details/52447119
數據庫關系運算
http://blog.csdn.net/hon_3y/article/details/62434993
http://blog.csdn.net/NeilDemo/article/details/50081895
數據庫連接運算(join)
http://blog.csdn.net/young____/article/details/49158479
數據庫本質上就是一些數據的集合,所以對一個數據庫的操作就是十分類似於對一些集合的操作。這篇博客對我們會遇到的數據庫的關系作一個小小的總結。
傳統的集合運算
在這里,共有並,差,交和笛卡爾積四種運算。
1. 並集
2. 交集
3. 差集
4. 笛卡爾積
即分別將兩個集合中的元素組合
專門的關系運算
一些記號:
1. 設一個關系模式為R(A1,A2,....An), 其一個分量為R。t∈R表示t是R的一個元組,t[Ai]表示的是相對於屬性Ai的一個分量。
2. t[A]=(t[A1],t[A2]….t[An])表示屬性列A在各個分量上的集合。我們也可以選取一些等價類作為子類。
3. R為一個n目的關系,S為m目的關系,那么其連接則會得到一個(n+m)目的關系。我們需要注意這一點。
4. 象集:給定了一個關系R(X,Z),X,Z為屬性組。當t[X]=x時,x在R中的象集可以定義為Zx={t[Z]|t ∈R,t[X]=x}$
選擇操作:感覺是數據庫當中最簡單的一種操作了,其定義如下:
σF(R)=t|t∈R∧F(t)=true
F是我們的選擇條件,就是選出符合條件的元素。
投影操作:
就是從R中選擇出若干屬性組成新的關系。
πA(R)={t[A]|t ∈R}$
連接操作:從兩個關系的笛卡爾積當中選擇出滿足條件的元組
就是笛卡爾積的一個加強版,沒什么好說的。
等值連接:即將兩個集合選中的屬性的值相同的元素存入我們的結果當中去。
自然連接:連接兩個關系當中同名且相同類型的屬性
外連接:在結果中保存懸浮元組,即保存了沒有得到匹配的屬性的值
左外連接:只保存了左邊的聯系當中沒有得到匹配的屬性的值
類似的,我們有右外連接的定義。
除運算:其實很好理解,但是書說的太奇怪了。
就是取的就是含有給定對應屬性的象集是另一個關系在其上的投影的集合。