更新時間:2023-08-16 來源:黑馬程序員 瀏覽量:
關系代數是一種抽象的查詢語言,是研究關系模型的數學工具。關系代數的運算對象是關系,運算結果也是關系。關系代數運算符主要分為集合運算符和關系運算符兩大類。
集合運算符有笛卡爾積、并、交、差,關系運算符有除、選擇、投影、連接,下面詳細介紹兩類運算符的概念和運算規則。
1.笛卡兒積
在數學中,笛卡兒積是對兩個集合相乘,假沒對集合A和集合B進行笛卡兒積,結果中第1個對象是A的成員,第2個對象是B的所有可能有序對的其中一個成員。
在數據庫中,廣義笛卡兒積是對兩個關系進行操作,產生的新關系中記錄個數為兩個關系中記錄個數的乘積。
假設有關系R和關系S,關系R有n個字段,關系S有m個字段,R和S的笛卡兒積(即R×S)的結果是一個具有n+m個字段的新關系。在新關系中,記錄的前n個字段來自R,后m個字段來自S,記錄的總個數是R和S中記錄的乘積。
關系R中有2個字段分別為學號和學生姓名;2個記錄分別為(1,張三)和(2,李四)
關系S中有2個字段分別為班級號和班級名稱;2個記錄分別為(001,軟件班)和(002,網絡班),R×S共有2+2個字段,分別為學號、學生姓名、班級號和班級名稱。
R×S共有2×2個記錄,分別為(1,張三,001,軟件班)、(1,張三,002,網絡班)、(2,李四,001,軟件班)、(2,李四,002,網絡班)。
2.并、交、差
并、交、差運算要求參與運算的兩個關系具有相同數量的字段,其運算結果是一個具有相同數量字段的新關系。
假設有關系R和關系S,RUS表示合并兩個關系中的記錄,RnS表示找出既屬于R又屬于S的記錄,R~S表示找出屬于R但不屬于S的記錄。
關系R中有2個記錄,分別為(1,張三)、(2,李四)。
關系S中有2個記錄,分別為(1,張三)、(3,小明。
RS運算:關系R和關系S中都有記錄(1,張三),需要將該記錄去重,結果為(1,張三)、(2,李四)、(3,小明)。
RnS運算:記錄(1,張三)既在關系R中,又在關系S中,結果為(1,張三)。
RS運算:記錄(2,李四)屬于關系R,但不屬于關系S,結果為(2,李四)。
3.除
除運算是笛卡兒積的逆運算。
假設有關系R和關系S,除運算需滿足S的字段集是R字段集的真子集,R÷S的結果是R字段集減去S字段集的結果。例如,R(A,B,C,D)÷S(C,D)的結果由A和B兩個字段構成。
R÷S1表示查詢學號為2的學生所選擇的課程,由關系R可以得知學號為2的學生選擇的課程號為1、2、3。
R÷S2表示查詢學號為2和3的學生共同選擇的課程,根據關系R可以得知學號為3的學生選擇的課程號為1、2,學號為2的學生所選擇的課程為1、2、3,那么R:S2的結果為1、2。
4.選擇和投影
選擇是在一個關系中將滿足條件的記錄找出來,即水平方向篩選;
投影是在一個關系中去掉不需要的字段,保留需要的字段,即垂直方向篩選。
選擇操作:o學號=1(R)表示在關系R中查找學號為1的學生,找到了記錄(1,張三,男);
投影操作:π學號,學生姓名(R)表示在關系R中查找學號和學生姓名,也就是保留學號字段和學生姓名字段,去掉學生性別字段。
5.連接
連接是在兩個關系的笛卡兒積中選取字段間滿足一定條件的記錄。
常用的連接方式有等值連接和自然連接。
假設有關系R和關系S,使用A和B分別表示R和S中數目相等且可比的字段組。等值連接是在R和S的笛卡兒積中選取A、B字段值相等的記錄。
自然連接是一種特殊的等值連接,要求R和S必需有相同的字段組,進行等值連接后再去除重復的字段組。
關系R中有4個記錄,關系S中有3個記錄,R×S共有12個記錄,
等值連接運算結果為RxS中班級號相等的記錄。
自然連接運算結果就是在等值連接運算的結果中去除重復的字段組班級號。