首頁(yè)技術(shù)文章正文

關(guān)系代數(shù)運(yùn)算中的集合運(yùn)算符和關(guān)系運(yùn)算符

更新時(shí)間:2023-08-16 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,是研究關(guān)系模型的數(shù)學(xué)工具。關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系。關(guān)系代數(shù)運(yùn)算符主要分為集合運(yùn)算符和關(guān)系運(yùn)算符兩大類。

集合運(yùn)算符和關(guān)系運(yùn)算符.png

集合運(yùn)算符有笛卡爾積、并、交、差,關(guān)系運(yùn)算符有除、選擇、投影、連接,下面詳細(xì)介紹兩類運(yùn)算符的概念和運(yùn)算規(guī)則。

1.笛卡兒積

在數(shù)學(xué)中,笛卡兒積是對(duì)兩個(gè)集合相乘,假?zèng)]對(duì)集合A和集合B進(jìn)行笛卡兒積,結(jié)果中第1個(gè)對(duì)象是A的成員,第2個(gè)對(duì)象是B的所有可能有序?qū)Φ钠渲幸粋€(gè)成員。
1692165537495_笛卡爾積.png

在數(shù)據(jù)庫(kù)中,廣義笛卡兒積是對(duì)兩個(gè)關(guān)系進(jìn)行操作,產(chǎn)生的新關(guān)系中記錄個(gè)數(shù)為兩個(gè)關(guān)系中記錄個(gè)數(shù)的乘積。

假設(shè)有關(guān)系R和關(guān)系S,關(guān)系R有n個(gè)字段,關(guān)系S有m個(gè)字段,R和S的笛卡兒積(即R×S)的結(jié)果是一個(gè)具有n+m個(gè)字段的新關(guān)系。在新關(guān)系中,記錄的前n個(gè)字段來自R,后m個(gè)字段來自S,記錄的總個(gè)數(shù)是R和S中記錄的乘積。

關(guān)系R中有2個(gè)字段分別為學(xué)號(hào)和學(xué)生姓名;2個(gè)記錄分別為(1,張三)和(2,李四)

關(guān)系S中有2個(gè)字段分別為班級(jí)號(hào)和班級(jí)名稱;2個(gè)記錄分別為(001,軟件班)和(002,網(wǎng)絡(luò)班),R×S共有2+2個(gè)字段,分別為學(xué)號(hào)、學(xué)生姓名、班級(jí)號(hào)和班級(jí)名稱。

R×S共有2×2個(gè)記錄,分別為(1,張三,001,軟件班)、(1,張三,002,網(wǎng)絡(luò)班)、(2,李四,001,軟件班)、(2,李四,002,網(wǎng)絡(luò)班)。

1692165994040_笛卡爾1.png

2.并、交、差

并、交、差運(yùn)算要求參與運(yùn)算的兩個(gè)關(guān)系具有相同數(shù)量的字段,其運(yùn)算結(jié)果是一個(gè)具有相同數(shù)量字段的新關(guān)系。

假設(shè)有關(guān)系R和關(guān)系S,RUS表示合并兩個(gè)關(guān)系中的記錄,RnS表示找出既屬于R又屬于S的記錄,R~S表示找出屬于R但不屬于S的記錄。

關(guān)系R中有2個(gè)記錄,分別為(1,張三)、(2,李四)。

關(guān)系S中有2個(gè)記錄,分別為(1,張三)、(3,小明。

RS運(yùn)算:關(guān)系R和關(guān)系S中都有記錄(1,張三),需要將該記錄去重,結(jié)果為(1,張三)、(2,李四)、(3,小明)。

RnS運(yùn)算:記錄(1,張三)既在關(guān)系R中,又在關(guān)系S中,結(jié)果為(1,張三)。

RS運(yùn)算:記錄(2,李四)屬于關(guān)系R,但不屬于關(guān)系S,結(jié)果為(2,李四)。

并、交、差

3.除

除運(yùn)算是笛卡兒積的逆運(yùn)算。

假設(shè)有關(guān)系R和關(guān)系S,除運(yùn)算需滿足S的字段集是R字段集的真子集,R÷S的結(jié)果是R字段集減去S字段集的結(jié)果。例如,R(A,B,C,D)÷S(C,D)的結(jié)果由A和B兩個(gè)字段構(gòu)成。

R÷S1表示查詢學(xué)號(hào)為2的學(xué)生所選擇的課程,由關(guān)系R可以得知學(xué)號(hào)為2的學(xué)生選擇的課程號(hào)為1、2、3。

R÷S2表示查詢學(xué)號(hào)為2和3的學(xué)生共同選擇的課程,根據(jù)關(guān)系R可以得知學(xué)號(hào)為3的學(xué)生選擇的課程號(hào)為1、2,學(xué)號(hào)為2的學(xué)生所選擇的課程為1、2、3,那么R:S2的結(jié)果為1、2。

除運(yùn)算

4.選擇和投影

選擇是在一個(gè)關(guān)系中將滿足條件的記錄找出來,即水平方向篩選;

投影是在一個(gè)關(guān)系中去掉不需要的字段,保留需要的字段,即垂直方向篩選。

選擇操作:o學(xué)號(hào)=1(R)表示在關(guān)系R中查找學(xué)號(hào)為1的學(xué)生,找到了記錄(1,張三,男);

投影操作:π學(xué)號(hào),學(xué)生姓名(R)表示在關(guān)系R中查找學(xué)號(hào)和學(xué)生姓名,也就是保留學(xué)號(hào)字段和學(xué)生姓名字段,去掉學(xué)生性別字段。

選擇和投影

5.連接

連接是在兩個(gè)關(guān)系的笛卡兒積中選取字段間滿足一定條件的記錄。

常用的連接方式有等值連接和自然連接。

假設(shè)有關(guān)系R和關(guān)系S,使用A和B分別表示R和S中數(shù)目相等且可比的字段組。等值連接是在R和S的笛卡兒積中選取A、B字段值相等的記錄。

自然連接是一種特殊的等值連接,要求R和S必需有相同的字段組,進(jìn)行等值連接后再去除重復(fù)的字段組。

關(guān)系R中有4個(gè)記錄,關(guān)系S中有3個(gè)記錄,R×S共有12個(gè)記錄,

等值連接運(yùn)算結(jié)果為RxS中班級(jí)號(hào)相等的記錄。

自然連接運(yùn)算結(jié)果就是在等值連接運(yùn)算的結(jié)果中去除重復(fù)的字段組班級(jí)號(hào)。

1692167221367_連接.png

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!