1.42k likes | 2.07k Views
第七章 關係. 7.1 關係及其性質. 研究集合間元素之關連性,會使用稱為 關係 (relation) 的結構,其實就是所探討集合所形成的笛卡耳積之子集合。 關係能用來求解下面的問題: 判斷在飛行航線網路中,兩城市間是否連結的航線 為一個複雜的計畫,針對不同階段的工作,找出一個可行的順序 生成一個有用的方式將資訊儲存至電腦的資料庫. 二元關係. 令 A 與 B 為集合。一個由 A 到 B 之二元關係 (binary relation) 是 A B 的子集合。
E N D
7.1 關係及其性質 • 研究集合間元素之關連性,會使用稱為關係(relation)的結構,其實就是所探討集合所形成的笛卡耳積之子集合。 • 關係能用來求解下面的問題: • 判斷在飛行航線網路中,兩城市間是否連結的航線 • 為一個複雜的計畫,針對不同階段的工作,找出一個可行的順序 • 生成一個有用的方式將資訊儲存至電腦的資料庫
二元關係 • 令A與B為集合。一個由A到B之二元關係(binary relation)是AB的子集合。 • 例:令 <≡ {(n, m)| n < m}ZZ是個由Z到Z的二元關係 • 用符號aRb來表示(a, b)R。 • 例:a <b means (a, b) < • 當(a, b)屬於R時,我們說a與b有關係R。
例:令A為學校中的學生集合,而B為開授課程所成集合。令關係R包含(a, b),表示學生a有選修課程b。例如,若傑森和狄波拉都選修了CS518,則有序對(傑森,CS518)和(狄波拉,CS518)都屬於關係R。若傑森還選修了CS510,則(傑森,CS510)也在關係R中。然而,若狄波拉沒有修CS510,則(狄波拉,CS510)不在關係R中。 我們注意到,若有個學生完全沒有選修任何課程,則以此學生為第一分量之有序對將不會在R中;同樣的,若以沒有開設的課程當成第二分量之有序對,也不會出現在R中。
例:令A為美國所有城市所成集合,而B為美國50個州所成集合。定義關係R中的元素為(a, b),若城市a位於b州中。 • 則(包爾德,科羅拉多),(班勾爾,緬因),(安那堡,密西根),(密斗鎮,紐澤西),(密斗鎮,紐約),(卡博蒂諾,加州)和 (紅岸,紐澤西)都在關係R中。
例:令A = {0, 1, 2}和B = {a, b}。則 R = {(0, a), (0, b), (1, a), (2, b)}為由A到B的關係。 可知:0Ra但1Rb。因為(0, a)R但是(1, b)R.
集合上的關係 • 一個在集合A上的關係,指的是由A到A的關係。 • 例:令A為集合{1, 2, 3, 4}。哪些有序數對屬於關係R = {(a, b)a整除b}? • 解:因為(a, b)在R中,若且唯若a與b都是不大於4的正整數,使得a整除b,我們發現 R = {(1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (2, 4), (3, 3), (4, 4)}
例:考慮下面整數集合上的關係: R1 = {(a, b)ab};R2 = {(a, b)a > b}; R3 = {(a, b)a = b或a = b};R4 = {(a, b)a = b}; R5 = {(a, b)a = b + 1};R6 = {(a, b)a + b 3} 哪個關係包含下列有序對(1, 1), (1, 2), (2, 1), (1, 1)和(2, 2)?
解: • (1, 1)關係R1,R3,R4和R6 • (1, 2)在關係R1和R6 • (2, 1)在關係R2,R5和R6 • (1, 1)在關係R2,R3和R6 • (2, 2)在關係R1,R3和R4
例:在包含n個集合的關係上,共有多少個不同的關係?例:在包含n個集合的關係上,共有多少個不同的關係? • 解:在集合A上的關係是AA的子集合。因為當A有n個元素時,AA有n2個元素;而一個包含m個元素的集合共有2m個子集合。所以,AA有 個子集合。譬如,在{a, b, c}上的關係共有 個不同的關係。
關係的性質--定義 • 集合A上的關係稱為反身性的(reflexive) 若(a, a)R,對所有的aA。 • 集合A上的關係稱為對稱性的(symmetric),若對所有的a, bA,當(a, b) R時,有(b, a) R。 • 集合A上的關係使得對所有的a, bA,當(a, b)R與(b, a)R時,有a = b,稱為反對稱的(antisymmetric)。 • 集合A上的關係R稱為有遞移性的(transitive),對所有的a, b, cR,若當(a, b)R且(b, c)R,則 (a, c)R。
範例 • 下列哪一個關係是有反身性的? R1={(a, b) | a b} R2={(a, b) | a >b} R3={(a, b) | a =b or a = b} R4={(a, b) | a =b} R5={(a, b) | a =b+1} R6={(a, b) | a +b 3} 是的,因為a a. 不是,因為a <a 是的,因為a = a 是的,因為a = a 不是,因為a a+1 不是,因為5+5 3
下列哪一個關係是有對稱性的,而哪一個是有反對稱性的?下列哪一個關係是有對稱性的,而哪一個是有反對稱性的? R1={(a, b) | a b} R2={(a, b) | a >b} R3={(a, b) | a =b or a = b} R4={(a, b) | a =b} R5={(a, b) | a =b+1} R6={(a, b) | a +b 3} 反對稱性 沒有對稱性 沒有對稱性 反對稱性,為什麼? 對稱性 沒有反對稱性 反對稱性 對稱性 沒有對稱性 反對稱性 對稱性 沒有反對稱性
下列哪一個關係是有遞移性的? R1={(a, b) | a b} R2={(a, b) | a >b} R3={(a, b) | a =b or a = b} R4={(a, b) | a =b} R5={(a, b) | a =b+1} R6={(a, b) | a +b 3} 有遞移性 有遞移性 有遞移性 有遞移性 沒有遞移性,因為 a=b+1, b=c+1 a=c+2c+1 沒有遞移性,因為 2+1 3, 1+2 3 2+2 > 3
正整數集合上的“整除”關係是否為對稱性的?是否違反對稱性的?是否有遞移性?正整數集合上的“整除”關係是否為對稱性的?是否違反對稱性的?是否有遞移性? • 解: • 此關係不為對稱的,因為12,但21。 • 然而此關係是反對稱的,因為兩個正整數a與b,若同時有ab與ba,則a = b。 • 假設a整除b,b整除c。則存在k和l,使得b= ak與c= bl。所以,c = a(kl),即a整除c。因此,這個關係是有遞移性的。
例:在含有n個元素之集合上的關係中,有多少是具有反身性的?例:在含有n個元素之集合上的關係中,有多少是具有反身性的? • 解:在集合A上的關係R是個AA的子集合。因此,R中的元素是由AA的n2個元素中取出。若R是有反身性的,則n個形如(a, a),aA,的有序對一定得包含於R中。至於其他的n(n1)個元素,即(a, b),ab,的有序對,則不一定要在R中。根據乘法原理,共有2n(n1)個不同的反身關係。【這個數字等於一一決定每個(a, b)的有序對是否在R中,其中ab。】
關係的組合 • 因為由A到B的關係是AB的子集合,因此,兩個關係間的組合可以使用所有集合間的組合來表現。 • 例:令A = {1, 2, 3}和B = {1, 2, 3, 4}。 關係R1 = {(1, 1), (2, 2), (3, 3)}和 R2 = {(1, 1), (1, 2), (1, 3), (1, 4)}能以下列方式組合 R1R2 = {(1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (3, 3)} R1R2 = {(1, 1)} R1R2 = {(2, 2), (3, 3)} R2R1 = {(1, 2), (1, 3), (1, 4)}
例:令A與B分別為學校中的學生集合與開授課程所成集合。假設關係R1包含所有有序對(a, b),表示學生a選修課程b;而關係R2包含所有有序對(a, b),表示學生a必須修課程b方能畢業。則下列關係之組合R1R2,R1R2,R1R2,R1R2與R2R1分別表示什麼?
解:關係R1R2包含所有的有序對(a, b),其中學生a選修課程b或是學生a必須修課程b方能畢業。關係R1R2包含所有的有序對(a, b),其中學生a選修課程b而且學生a必須修課程b方能畢業。關係R1R2包含所有的有序對(a, b),其中學生a選修無關畢業的課程b或是學生a必須修課程b方能畢業但他卻沒選。關係R1R2包含所有的有序對(a, b),其其中學生a選修無關畢業的課程b。關係R2R1包含所有的有序對(a, b),其中學生a必須修課程b方能畢業但他卻沒選。
例:假設關係R1為實數集合中“小於”關係;而關係R2為實數集合中“大於”關係。即,R1 = {(x, y)x < y}而 R2 = {(x, y)x > y},則下列關係之組合R1R2,R1R2,R1R2,R2R1與R1R2分別為何?
解:(x, y) R1R2若且唯若(x, y) R1或是(x, y)R2。所以,(x, y) R1R2若且唯若x < y或x > y,其實就是xy。即,R1R2 = {(x, y)x y}。“小於”關係與“大於”關係的聯集就是“不等於”關係。 接下來,我們發現不可能有個有序數對同時在R1又在R2中,因為不可能x < y又x > y。所以,R1R2 = 。我們同時發現R1R2 = R1,R2R1 = R2與R1R2 = R1R2R1R2= {(x, y)x y}。
定義 • 令R為由集合A到集合B的關係,而S為由集合B到集合C的關係。R與S的合成(composite)也是個關係包含有序對(a, c),其中aA,cC,而且存在一個bB使得(a, b)R和(b, c)S。我們將R和S的合成記為 SR • 我們注意到函數的合成fg即為一個範例。 • 令R為集合A上的關係。冪次Rn,n = 1, 2, 3, …,遞迴定義如下:R1 = R而且Rn+1 = RnR • 負數冪次可定義如下:R−n:≡ (R−1)n.
例:令R為由{1, 2, 3}到{1, 2, 3, 4}的關係 R = {(1, 1), (1, 4), (2, 3), (3, 1), (3, 4)}, 而S為由{1, 2, 3, 4}到{0, 1, 2}的關係 S = {(1, 0), (2, 0), (3, 1), (3, 2), (4, 1)}。 R與S的合成為何? 下面關係R2, R3, R4又各為何? • 解:SR = {(1, 4), (2, 4), (3, 4), (4, 1), (4, 2)} R2=RR = {(1, 1), (2, 1), (3, 1), (4, 2)} R3=R2R = {(1, 1), (2, 1), (3, 1), (4, 1)} R4=R3R = {(1, 1), (2, 1), (3, 1), (4, 1)} = Rn, n3
定理:集合A上的關係R是有遞移性的若且唯若Rn R,n = 1, 2, 3, …。 • 證明:首先證明 “若”的部份。假設Rn R,n = 1, 2, 3, …。因此,R2 R。我們能由此證明R是有遞移性的。若(a, b)R和(b, c)R,根據合成的定義(a, c)R2。由於R2R,得到(a, c)R,也因此R是有遞移性的。
使用數學歸納法來證明“唯若”的部份。當n = 1時,定理明顯成立。假定歸納假說為:Rn R,其中n為正整數。往證Rn+1亦為R的子集合。首先假設(a, b)Rn+1 = RnR。因而存在xA使得(a, x) R且(x, b) Rn。根據歸納假說,Rn R, 有(x, b)R。由於R是有遞移性的,(a, x) R且(x, b)R,可推導出(a, b)R。因而Rn+1 R,定理得證。
7.2 n元關係及其應用 • 令A1, A2, …, An為集合。一個在這些集合上的n元關係,是A1A2…An的子集合。集合A1, A2, …, An稱為這個關係的域(domain),而n稱為這個關係的階(degree)。 • 例:令R為NNN上的關係,包含有序三項 (a, b, c),其中a,b和c為a < b < c的整數。 則(1, 2, 3) R,但(2, 4, 3) R。此關係的階數為3,而其域為自然數集合。
例:令R為ZZZ上的關係,包含有序三項 (a, b, c),其中a,b和c形成一個算術數列。 即,(a, b, c)R若且唯若存在整數k,使得b = a + k且c = a + 2k;或是,ba = k且cb = k。 • 我們發現(1, 3, 5)R,因為3 = 1 + 2且5 = 1 + 22;但是(2, 5, 9)R,因為5 2 = 3而9 5 = 4。此關係的階數為3,而其域為整數集合。
例:令R為ZZZ+上的關係,包含有序三項(a, b, m),其中a,b和m為整數m 1,而a b (mod m)。 • 則(8, 2, 3),(1, 9, 5)和(14, 0, 7)都屬於R, 但是(7, 2, 3),(2, 8, 5)和(11, 0, 6)不屬於R。 因為8 2 (mod 3),1 9 (mod 5)和14 0 (mod 7); 然而,7 2 (mod 3),2 8 (mod 5)與11 0 (mod 6)。 • 此關係的階數為3,而其域前兩個為整數集合,第三個為正整數集合。
例:令R為有序5元(A, N, S, D, T)所組成的關係,用來表現飛行航班間的關係,其中A為航空公司,N為航班數,S是出發地,D是目的地,而T為起飛時間。 • 例如,若那達航空公司在15:00有班963班機由紐沃克機場飛班國鎮,則我們知道(那達,963,紐沃克機場,班國鎮,15:00)。 • 此關係的階數為5,而其域為所有航空公司所成集合、航班集合、城市的集合與時間集合。
資料庫和關係 • 在資料庫中進行資訊操作所需時間,與資訊儲存的方式有關。各種運算在一個大型資料每天都要執行好幾百萬次。因為這些運算的重要性,已經開發了好多種表現資料庫的方法。我們將討論一種根據關係的概念而來的關聯式資料模型(relational data model)。 • 資料庫由記錄(record)組成,所謂記錄是由欄位(field)形成的有序n項。
n元關係的域稱為主鍵(primary key),如果有序n項的值能由這個關係之域來決定。 • 在n元關係中,域的組合也可用來判斷出唯一的有序n項。當一組域能確定關係中之有序n項時,這些域的笛卡耳積稱為複合鍵(composite key)。
下面是一個簡單的資料庫,包含六筆資料 (阿克曼,231455,電腦科學,3.88) (亞當斯,888323,物理,3.45) (趙,102147,電腦科學,3.49) (古德弗瑞德,453876,數學,3.45) (羅奧,678543,數學,3.90) (史帝芬斯,786576,心理,2.99)
表格-- 學生 姓名 學號 主修科系 平均分數 阿克曼 231455 電腦科學 3.88 亞當斯 888323 物理 3.45 趙 102147 電腦科學 3.49 古德弗瑞德 453876 數學 3.45 羅奧 678543 數學 3.90 史帝芬斯 786576 心理 2.99
例:假設未來不會有序n項會再加入,則呈現於學生表格之n元關係哪一個域是主鍵?例:假設未來不會有序n項會再加入,則呈現於學生表格之n元關係哪一個域是主鍵? • 解:因為再表中每個學生的姓名只有一個有序4項,學生姓名的域是一個主鍵。同樣的,學號在表中也是唯一出現的,所以學號這個域也是個主鍵。總之,主修科系這個域因為出現了不只一次,所以不會是主鍵。同樣的道理,平均成績也不是主鍵,因為有兩個有序4項出現了相同的平均成績。
例:假設未來不會有序n項會再加入,呈現於學生表格之n元關係中,主修科目和平均成績的笛卡耳積會不會是複合鍵?例:假設未來不會有序n項會再加入,呈現於學生表格之n元關係中,主修科目和平均成績的笛卡耳積會不會是複合鍵? • 解:因為在表中沒有兩個有序4項有相同之主修科目和平均成績,所以,修科目和平均成績的笛卡耳積是複合鍵。
n元關係上的運算--定義 • 令R為一個n元關係而C是個R中元素必須滿足的條件。則選擇算子(selection operator)sC,將n元關係R對應至n元關係中所有滿足條件C的所有有序n項。 • 投影(projection) ,其中i1< i2< … < im,將有序n項(a1, a2, …, an)對應到有序m項 ,其中mn。 • 令R為一個m階關係,而S是個n階關係。連結Jp(R, S),pn且pn,是個m + np階關係,包含所有的有序(m+np)項(a1, a2, …, amp, c1, c2, …, cp, b1, b2, …, bnp),其中有序m項(a1, a2, …, amp, c1, c2, …, cp)屬於R,而有序n項(c1, c2, …, cp, b1, b2, …, bnp)屬於S。
例:為找出學生表格呈現的n元關係中主修電腦科之記錄,使用算子sC1,其中C1為條件“主修科系” = “電腦科學”。結果將得到兩個有序4項(阿克曼,231455,電腦科學,3.88)和(趙,102147,電腦科學,3.49)。同樣的,為找出學生資料庫中平均成績大於3.5的記錄,我們使用算子sC2,其中C2為條件“平均成績” > “3.5”。結果也是兩個有序4項(阿克曼,231455,電腦科學,3.88)和(羅奧,678543,數學,3.90)。最後,為找出學生資料庫中主修科系微電腦科學,且平均成績大於3.5的記錄,我們使用算子sC3,其中C3為條件(“主修科系” = “電腦科學” “平均成績” > “3.5”。結果指剩下一個有序4項(阿克曼,231455,電腦科學,3.88)。
例:執行P1, 3後,有序4項(2, 3, 0, 4),(珍,2354111001,地理,3.14)和(a1, a2, a3, a4)會變成什麼? • 解:投影P1, 3執行後,這些有序4項將變成(2, 0),(珍,地理)和(a1, a3)。
例:當執行投影P1, 4後,學生表格之關係將會變成怎樣的關係? 解:當執行投影P1, 4後,表中的第二和第三列將被刪去,而剩下表現學生姓名和平均成績的有序對。右表呈現執行運算後之結果關係。 姓名 平均分數 阿克曼 3.88 亞當斯 3.45 趙 3.49 古德弗瑞德 3.45 羅奧 3.90 史帝芬斯 2.99
例:利用連結算子J2將表5與表6呈現之關係連結在一起會得到什麼結果?例:利用連結算子J2將表5與表6呈現之關係連結在一起會得到什麼結果? • 解:連結J2所產生的關係如下表所示。
資料庫查詢語言SQL(Structured Query Language的縮寫)可用來實踐本節所描述的運算。 • 我們將藉由說明SQL如何利用下頁之表格來查詢飛機航班。來描述SQL如何用來作查詢運算。SQL陳述如下: SELECT 起飛時間 FROM 航空公司 WHERE 目的地 = ‘底特律’
通常用來找出投影P5(在起飛時間的屬性)在飛機航班資料庫滿足條件:“目的地” = “底特律”,所選出的有序5項。所得結果是一個表單包含以底特律為目的地之航班起飛時間:08:10,08:47和09:44。SQL使用FROM來辨識n元關係所要查詢的欄位;利用WHERE來指定選擇運算的條件;SELECT來指定被應用之投影運算。
利用矩陣表現關係 • 有限集合間的關係能以零-一矩陣來表現。假設R是由集合A = {a1, a2, …, am}到集合B = {b1, b2, …, bn}(此處集合的元素可以任意方式排序,但若A = B時,我們使用相同的排列順序)。關係R能以矩陣MR = [mij]表示,其中 換句話說,表現關係R的零-壹矩陣中,第(i, j)個位置的元素為1,若ai與bj有關係;而第(i, j)個位置的元素為0,若ai與bj沒有關係。(這種表示法與集合A與B使用之順序相關。)
例:假設A = {1, 2, 3}而B = {1, 2}。令R為由A到B的關係,包含所有的有序對(a, b),如果aA,bB,而且a > b。何為R之矩陣表示法,其中a1= 1, a2 = 2, a3 = 3,而且b1 = 1, b2 = 2? • 解:因為R = {(2, 1), (3, 1), (3, 2)},R的矩陣為 MR中的1說明(2, 1), (3, 1)和(3, 2)屬於R,而0說明沒有其他的有序對屬於R。
例:令A = {a1, a2, a3}而B = {b1, b2, b3, b4, b5}。若R的表現矩陣如下,則哪些有序對再關係R中? • 解:因為R中包含的有序對(ai, bj)使得mij = 1。所以,R = {(a1, b2), (a2, b1), (a2, b3), (a2, b4), (a3, b1), (a3, b3), (a3, b5)}。
7.3 表現關係 • 當關係R是反身的若(a, a)R,當aA。所以,R是反身的若且唯若(ai, ai)R,i = 1, 2, ..., n。因而,R是反身的若且唯若mii = 1,i = 1, 2, …, n。換句話說,R是反身的,如果矩陣MR的主對角線之元素都為1。 • 關係R是對稱的,若(a, b)R,能推導出(b, a)R。所以,A = {a1, a2, …, an}是對稱的,若且唯若當(ai, aj)R,能推導出(aj, ai)R。以矩陣的觀點來看,R是對稱的若且唯若當mij = 1時,mji = 1,而且當mij = 0時,mji = 0。也就是說,R是對稱的若且唯若對所有的整數對i與j,mij = mji。即,(MR) = (MR)t。
關係R是反對稱的,若(a, b)R且(b, a)R,則a = b。因此,反對稱關係的矩陣有下列性質,若ij,有mij = 1,則mji = 0。換言之,當ij,要不是mij = 0就是mji = 0。
例:假設表現關係R的矩陣為 判斷R是否為反身的?對稱的?反對稱的? • 解:因為所有對角線的元素都是1,所以R是反身的。由於MR是對稱的,所以R是對稱的。很容易就能看出R並不是反對稱的。