一、除法概述:設關係r除以s的結果為關係t,則t包含所有在r但不在s中的屬性及值,且t的元組與s的元組的所有組合都在r中。
二、關於除法的兩類題型的解題方法:(2)題目敘述了乙個查詢語句,要我們寫出關係代數表示式,構造除法(這裡又要分為兩類,主要就是要構造出除數和被除數):
i:除數(屬性列)的值包含了某個關係表中的該屬性的全部值,那麼直接把該表中的該屬性列當做除數,被除數的屬性在除數的基礎上加上所求屬性。
ii:除數(屬性列)的值沒有包含某個關係表中的該屬性的全部值,那麼可以自己構造乙個關係,該關係只有該屬性和其值組成。或者採用自身笛卡爾積加選擇投影的方法。
示例1:
分析:首先教大家怎麼由題目敘述得到除數和被除數的屬性組成。很顯然,題目中要我們求學號,這就是所求屬性。然後剩下的屬性就只有課程號,所以除數的屬性列只有課程號。被除數的屬性由除數的屬性列和所求屬性組成。所以這裡我們就用選修表sc投影得到被除數,即把sno,cno這兩個屬性投影出來得到的新關係當做被除數。當然也可以直接得出被除數,很明顯由題目就可以看出被除數是選修表。由於課程號的屬性值有1,2,3等等,而題目中給出的屬性值只有1,3,不包含全部的屬性值,屬於第二類。題目中的解法是構造了乙個關係,接下來我再講一種自身笛卡爾積加選擇投影的方法。
先將sc表本身做自然連線,得到關係的屬性組成:
sno cno grade sno cno grade
1 2 3 4 5 6
注:下面的數字是屬性在表中的下標索引,jdbc中也經常用下標來取得屬性列的值。
接下來開始選擇投影:
中的選擇部分的解釋:1=4,即兩個sno相等,表明這是同乙個學生,2=』1』,5=』3』則表示該同學既選修了1號課程有選修了3號課程,符合題意。最後把學號投影出來即可。這也很好理解,以後這類題都是這種解法,套公式用就行了。
下面在舉乙個第一類的例子:
分析:在上面例子的基礎上,我這裡就快速分析出除數和被除數的屬性組成。
除數:課程號cno
所求屬性:學號sno和姓名sname
被除數:按理來說是有cno sno sname這3個屬性,但是學生選課資料庫中沒有這樣的表,如果自己構造一張這樣的表那很麻煩,所以做除法時,我們先把sno求出來,到時候在與學生表student連線投影一下就可以得到結果。所以被除數的屬性由sno cno組成。
全部課程說明除法中的cno屬性包含了該cno屬性的所有屬性值,為第一類題型。那麼直接將該錶作為除數。即從課程表course中把cno屬性投影出來得到一張表,把該錶作為除數。被除數依然是從sc選修表中投影出來的sno和cno屬性。再解釋一下後面的連線:關係代數中,有除法就先算除法,再算其他的。當然這裡在除法前面加上括號就更清晰了,前面的除法得到了學號,再與學生表做自然連線即可得到結果。
三、總結:
資料庫系統概論 關係代數
關聯式資料庫不是僅僅用來看的,必須有相應的運算來支撐才能得到我們想要的結果。之前也提到,關聯式資料庫有完整的數學模型來支撐,因此這一節可能就要考一考筆者的數學能力了!雖然上學期離散考得還行,但數學乃我一生之大敵 對資料庫系統下達指令需要語言。分為三類 至於這些語言的特點將分別展開說明。關係代數的運算...
資料庫系統概論 關係代數
關係代數語言用對關係的運算來表達查詢的要求,是一種抽象的查詢語言,其運算結果和物件均為關係,包括集合運算子和專門運算子 並運算 union 要求兩個關係具有相同的目且相應的屬性取自同一域,符號為 並運算的結果目不變,由屬於前乙個關係或屬於後乙個關係的元組構成 差運算 difference 要求兩個關...
資料庫系統概論 03 關係代數
關係 乙個扁平二維表。n個集合的笛卡爾積集合的子集。每一行為乙個元組,每一列為乙個屬性。關係模型為資料庫表的表頭。主鍵 碼 選乙個候選碼作為身份區別。超碼 乙個關係中,能夠標識乙個元組的屬性。候選碼 乙個關係中,能夠標識乙個元組,最小屬性集合。可能有多個,基於使用者的使用環境。null值與其他值比較...