Chapter 3 補充 合併理論
本章內容 4-1簡介 4-2卡氏積 4-3內部合併 4-4外部合併 4-5合併之間的比較 4-6不同的合併對應關係 4-7自我合併 德明財經科技大學 資訊科技系
『分分、合合』 正規化的目的 合併的目的 分:依據Codd博士所提出的正規化 合:合併理論 去除關聯異動的異常現象 透過『合併』(Join)過程得到一個虛擬關聯來達到查詢上的方便 德明財經科技大學 資訊科技系
本章內容 4-1簡介 4-2卡氏積 4-3內部合併 4-4外部合併 4-5合併之間的比較 4-6不同的合併對應關係 4-7自我合併 德明財經科技大學 資訊科技系
『卡氏積』 (Cartesian Product) 也稱之為『交叉乘積』 (Cross Product) 或稱為『交叉合併』 (Cross Join) 德明財經科技大學 資訊科技系
關聯R有m個屬性的集合(A1, A2, …, Am) 關聯S有n個屬性的集合(B1, B2, …, Bn) 可以分別表示成 R(A1, A2, …, Am) S(B1, B2, …, Bn) 卡氏積的操作中,兩個關聯R與S的乘積會 以『×』的符號來表示 R(A1,A2,…,Am) ×S(B1,B2,…,Bn) 簡寫成R × S 德明財經科技大學 資訊科技系
倘若有兩個關聯,分別為R與S t(R)={t1(R), t2(R)} 且 t(S)={t1(S), t2(S), t3(S)} 則 R×S={ ( t1(R), t1(S) ), ( t1(R), t2(S) ),( t1(R), t3(S) ), ( t2(R), t1(S) ), ( t2(R), t2(S) ), ( t2(R), t3(S) ) } 示意圖如下一頁 德明財經科技大學 資訊科技系
× t1(R) t1(S) t1(R) t2(R) 關聯R t1(S) t2(S) t3(S) 關聯S t2(S) t1(R) t3(S) = t1(S) t2(R) t2(R) t2(S) t3(S) t2(R) 關聯R的屬性 關聯S的屬性 圖4-1 關聯R與S的卡氏積 德明財經科技大學 資訊科技系
……. ……. … × … 筆值組 m個屬性 i 筆值組 n個屬性 j m+n 個屬性 筆值組 i× j = 關聯R的屬性 關聯S的屬性 t1(A1,A2,…,Am) m個屬性 ……. t2(A1,A2,…,Am) ti(A1,A2,…,Am) i t1(B1,B2,…,Bn) t2(B1,B2,…,Bn) t3(B1,B2,…,Bn) 筆值組 n個屬性 ……. tj(B1,B2,…,Bn) j m+n 個屬性 t1(A1,A2,…,Am) t1(B1,B2,…,Bn) 筆值組 i× j t1(A1,A2,…,Am) t2(B1,B2,…,Bn) … × = t1(A1,A2,…,Am) tj(B1,B2,…,Bn) t2(A1,A2,…,Am) t1(B1,B2,…,Bn) … ti(A1,A2,…,Am) tj(B1,B2,…,Bn) 圖4-2 關聯R與S的卡氏積和屬性關係 關聯R的屬性 關聯S的屬性 德明財經科技大學 資訊科技系
關聯 員工×客戶 員工(員工代號, 姓名, 部門, 職稱) 客戶(負責人代號, 客戶代號, 地區代號) 員工(員工代號, 姓名, 部門, 職稱) × 客戶(負責人代號, 客戶代號, 地區代號) = (員工代號, 姓名, 部門, 職稱, 負責人代號, 客戶代號, 地區代號) 德明財經科技大學 資訊科技系
(a)關聯『員工』 (b)關聯『客戶』 圖4-3 (a) 合併原理之範例關聯 員工代號 姓名 部門 職稱 00001 陳明明 業務部 經理 00002 林立人 研發部 主任 00003 劉銘船 專案經理 00004 趙子龍 專員 (a)關聯『員工』 負責人代號 客戶代號 地區代號 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D (b)關聯『客戶』 圖4-3 (a) 合併原理之範例關聯 德明財經科技大學 資訊科技系
圖4-3 (b) 卡氏積的結果 同1筆﹃員工﹄對應4筆不同﹃客戶﹄ 關聯『員工』的屬性 關聯『客戶』的屬性 員工代號 姓名 部門 職稱 負責人代號 客戶代號 地區代號 00001 陳明明 業務部 經理 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D 林立人 研發部 主任 劉銘船 專案經理 00004 趙子龍 專員 德明財經科技大學 資訊科技系 關聯『員工』的屬性 關聯『客戶』的屬性 12
本章內容 4-1簡介 4-2卡氏積 4-3內部合併 4-4外部合併 4-5合併之間的比較 4-6不同的合併對應關係 4-7自我合併 德明財經科技大學 資訊科技系
亦稱為『條件式合併』(Condition Join) 兩關聯之間的『條件限制』或稱為『對應』(Mapping)關係 『內部合併』講究的是兩個關聯之間 必須有相對應的屬性 彼此做一對應關係或比較關係 『比較關係』 (Comparison Relationship) 包括 =、!=、>、>=、<、<= 德明財經科技大學 資訊科技系
關聯A的屬性 關聯B的屬性 關聯A和B相等的屬性 關聯A 合併後 關聯B (a)合併前的示意圖 (b)合併後的示意圖 圖4-4 內部合併(Inner Join) 德明財經科技大學 資訊科技系
(a)關聯『員工』 1筆對應2筆 (b)關聯『客戶』 內部合併( Inner Join )後 圖4-5 內部合併(Inner Join)範例 姓名 部門 職稱 員工代號 陳明明 業務部 經理 00001 趙子龍 專員 00004 林立人 研發部 主任 00002 劉銘船 專案經理 00003 (a)關聯『員工』 1筆對應2筆 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D 負責人代號 客戶代號 地區代號 (b)關聯『客戶』 內部合併( Inner Join )後 圖4-5 內部合併(Inner Join)範例 姓名 部門 職稱 員工代號 負責人代號 客戶代號 地區代號 林立人 研發部 主任 00002 C0005 A C0010 B 劉銘船 專案經理 00003 C0020 C 關聯『員工』的屬性 關聯『客戶』的屬性 德明財經科技大學 資訊科技系
Inner Join 圖4-6 (a) 值組的包含關係 關聯『員工』的屬性 關聯『客戶』的屬性 員工代號 姓名 部門 職稱 負責人代號 客戶代號 地區代號 00001 陳明明 業務部 經理 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D 林立人 研發部 主任 劉銘船 專案經理 00004 趙子龍 專員 Inner Join 德明財經科技大學 資訊科技系 關聯『員工』的屬性 關聯『客戶』的屬性
關聯『員工』 關聯『客戶』 為何消失不見? 合理嗎? { ( 0001, 陳明明, 業務部, 經理) , ( 0004, 趙子龍, 業務部, 專員) } 關聯『客戶』 { ( 00005, C0025, D) } 為何消失不見? 彼此對應不到 合理嗎? 視需求而定 德明財經科技大學 資訊科技系
本章內容 4-1簡介 4-2卡氏積 4-3內部合併 4-4外部合併 4-5合併之間的比較 4-6不同的合併對應關係 4-7自我合併 德明財經科技大學 資訊科技系
外部合併(Outer Join)主要可分為三種 左邊外部合併 (Left Outer Join) 右邊外部合併 (Right Outer Join) 完全外部合併 (Full Outer Join) 德明財經科技大學 資訊科技系
以左邊的關聯為主要關聯 合併後的值組 包括兩者關聯彼此能互相對應的值組 包括左邊關聯未能對應到右邊關聯的其他值組 對應不到右邊關聯的值組,會在右邊關聯中的屬性填入空值(Null Value) 德明財經科技大學 資訊科技系
關聯A 關聯B (a)合併前的示意圖 Null Value 關聯A 關聯B (b)合併後的示意圖 合併後 圖4-7 左邊外部合併 德明財經科技大學 資訊科技系
Null Value (a)關聯『員工』 (b)關聯『客戶』 左邊外部合併( Left Outer Join )後 姓名 部門 職稱 員工代號 陳明明 業務部 經理 00001 趙子龍 專員 00004 林立人 研發部 主任 00002 劉銘船 專案經理 00003 (a)關聯『員工』 Null Value 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D 負責人代號 客戶代號 地區代號 (b)關聯『客戶』 左邊外部合併( Left Outer Join )後 圖4-8 左邊外部合併範例 姓名 部門 職稱 員工代號 負責人代號 客戶代號 地區代號 陳明明 業務部 經理 00001 Null 趙子龍 專員 00004 林立人 研發部 主任 00002 C0005 A C0010 B 劉銘船 專案經理 00003 C0020 C Inner Join 德明財經科技大學 資訊科技系 關聯『員工』的屬性 關聯『客戶』的屬性
以右邊的關聯為主要關聯 合併後的值組 包括兩者關聯彼此能互相對應的值組 包括右邊關聯未能對應到左邊關聯的其他值組 對應不到左邊關聯的值組,會在左邊關聯中的屬性填入空值(Null Value) 德明財經科技大學 資訊科技系
關聯A 關聯B (a)合併前的示意圖 Null Value 關聯A 關聯B (b)合併後的示意圖 合併後 圖4-9 右邊外部合併 德明財經科技大學 資訊科技系
Null Value (a)關聯『員工』 (b)關聯『客戶』 右邊外部合併( Right Outer Join )後 姓名 部門 職稱 員工代號 陳明明 業務部 經理 00001 趙子龍 專員 00004 林立人 研發部 主任 00002 劉銘船 專案經理 00003 (a)關聯『員工』 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D 負責人代號 客戶代號 地區代號 Null Value (b)關聯『客戶』 右邊外部合併( Right Outer Join )後 圖4-10右邊外部合併範例 姓名 部門 職稱 員工代號 負責人代號 客戶代號 地區代號 林立人 研發部 主任 00002 C0005 A C0010 B 劉銘船 專案經理 00003 C0020 C Null 00005 C0025 D Inner Join 關聯『員工』的屬性 德明財經科技大學 資訊科技系 關聯『客戶』的屬性
內部合併 左邊外部合併 右邊外部合併 『列出有負責客戶的員工及所負責客戶之資料』 『列出所有員工以及所負責客戶的全部資料』 『列出所有客戶,以及所負責的員工資料』 德明財經科技大學 資訊科技系
關聯A 關聯B (a)合併前的示意圖 Null Value 關聯A 關聯B (b)合併後的示意圖 合併後 圖4-11 完全外部合併 德明財經科技大學 資訊科技系
Null Value (a)關聯『員工』 (b)關聯『客戶』 完全外部合併(Full Outer Join )後 姓名 部門 職稱 員工代號 陳明明 業務部 經理 00001 趙子龍 專員 00004 林立人 研發部 主任 00002 劉銘船 專案經理 00003 (a)關聯『員工』 Null Value 00002 C0005 A C0010 B 00003 C0020 C 00005 C0025 D 負責人代號 客戶代號 地區代號 (b)關聯『客戶』 完全外部合併(Full Outer Join )後 圖4-12 完全外部合併範例 姓名 部門 職稱 員工代號 負責人代號 客戶代號 地區代號 陳明明 業務部 經理 00001 Null 趙子龍 專員 00004 林立人 研發部 主任 00002 C0005 A C0010 B 劉銘船 專案經理 00003 C0020 C 00005 C0025 D Left Join Inner Join Right Join 德明財經科技大學 資訊科技系 關聯『員工』的屬性 關聯『客戶』的屬性
左邊外部合併 ( Left Outer Join ) 右邊外部合併 ( Right Outer Join ) 完全外部合併 ( Full Join ) 左邊外部合併 ( Left Outer Join ) 右邊外部合併 ( Right Outer Join ) 內部合併 ( Inner Join ) 圖4-13 內部合併與外部合併 德明財經科技大學 資訊科技系
本章內容 4-1簡介 4-2卡氏積 4-3內部合併 4-4外部合併 4-5合併之間的比較 4-6不同的合併對應關係 4-7自我合併 德明財經科技大學 資訊科技系
(d) (b) (a) (c) Cross Join Full Outer Join Left Outer Join Right Outer Join Inner Join 圖4-14 所有合併之間的包含關係 德明財經科技大學 資訊科技系