数据库MySQL关系模型之关系代数
關系代數的運算按運算符的不同可分為
- 傳統的集合運算(并、差、交、笛卡爾積)
- 專門的關系運算(選擇、投影、連接、除運算)
關系代數運算的約束
某些關系代數操作,如并、差、交等需滿足 “并相容性”,下面是一個并相容性的示例:
STUDENT(SID `char(10)`,Sname `char(8)`,Age `char(3)`) PROFESSOR(PID `char(10)`,Pname `char(8)`,Age `char(3)`)兩個關系是相容的.
并(Union)
定義:假設關系R和關系S是相容的,則關系R與關系S的并運算結果也是一個關系,記作:RUS,它由或者出現在關系R中,或者出現在S中的元組構成.
數學描述R∪S={ t | t∈R∨t∈S},其中t是元組
并運算是將兩個關系的元組合并成一個關系,在合并時去掉重復的元組
差(Difference)
定義:假設關系R和關系S是相容的,則關系R與關系S的并運算結果也是一個關系,記作:R-S,它由出現在關系R中但不出現在關系S中的元組構成.
數學描述:R-S = { t | t∈R ∧ t?S} (可以把t看做上圖R-S中的f,b,e元組)
廣義笛卡爾積(Cartesian Product)
RxS,它由關系R中的元組和關系S的元組進行所有可能的拼接(或串接)構成.(通過下圖可以更好理解)
數學描述(復試筆試出現了這個,可惜當時沒看懂)
這里的笛卡兒積嚴格地講應該是廣義的笛卡兒積( extended cartesian product),因為這里笛卡兒積的元素是元組。
兩個分別為n目(就是列數,上圖中n=2)和m目(上圖中m=3)的關系R和S的笛卡兒積是一個(n+m)列的元組的集合。元組的前n列是關系R的一個元組,后m列是關系S的一個元組。若R有k1個元組,S有k2個元組,則關系R和關系S的笛卡兒積有k1 * k2個元組。
記作
選擇(Select)
選擇又稱為限制(restriction),它是在關系R中選擇滿足給定條件的諸元組
數學描述
F表示選擇條件,它是一個邏輯表達式,取真或假
投影(Project)
從關系R中選出屬性包含在A中的 列 構成,投影運算可以對原關系的列在投影后重新排列.
其中A為R中的屬性列
交(Intersection)
由同時出現在關系R和關系S中的元組構成
示例一
Θ-連接(Θ-Join,theta-Join)
投影與選擇操作只是對單個關系(表)進行操作,而實際應用中往往涉及多個表之間的操作,這就需要Θ-連接操作. Θ是比較運算符(<,>,=)
示例一(條件B<=H)
步驟:先計算笛卡爾積,如圖中間所示,然后按照B<=H選擇合適的行,最右邊是連接操作,將符合B小于等于H的進行連接.
Θ-連接步驟
第一步:對兩個表進行笛卡爾積
第二步:從廣義笛卡爾積中選出符合條件的元組
第三步:進行投影操作,得到最終的結果
等值連接
由關系R和關系S的笛卡爾積中選取R中屬性A與S中屬性B上的值相等的元組所構成,當Θ-連接中運算符為=時,就是等值連接,等值連接是Θ-連接的一個特例.
示例一
示例二
自然連接
由關系R和關系S的笛卡爾積中選取屬性組B上值相等的元組所構成.
- 自然連接時一種特殊的等值連接
- 要求關系R和關系S必須有相同的屬性組B(參考上面等值連接例子)
- R,S屬性相同,值必須相等才能連接.
示例一
外鏈接
除運算
除法運算經常用于求解"查詢…全部的/所有的…"的問題
R÷S結果的屬性應該是R的屬性去掉S在R中的屬性
R÷S元組與S中每一個元組的組合必須在R中
示例一
總結
以上是生活随笔為你收集整理的数据库MySQL关系模型之关系代数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop伪分布安装及简单使用
- 下一篇: linux cmake编译源码,linu