410 likes | 573 Views
第十三章 擴充實體關係模式. 目的 物件導向基本觀念 特殊化和一般化 特殊化的多階層架構 多重繼承 群類 UML 的類別圖 轉成關聯綱目. 目的. 本章所探討的是加上物件導向功能的實體關係模式 擴充後的實體關係圖則稱為擴充實體關係圖 ﹝ 簡稱 EERD﹞ 物件導向的概念結合了資料和運算方法 我們著重的是資料面. 物件導向基本觀念. 最相關的物件導向概念是繼承 實體關係模式的組成元件包括實體( Entity )和關係( Relationship ) 範例 Student(pId, name, sex, sId, major, degree)
E N D
第十三章 擴充實體關係模式 • 目的 • 物件導向基本觀念 • 特殊化和一般化 • 特殊化的多階層架構 • 多重繼承 • 群類 • UML的類別圖 • 轉成關聯綱目 黃三益2007 資料庫的核心理論與實務第三版
目的 • 本章所探討的是加上物件導向功能的實體關係模式 • 擴充後的實體關係圖則稱為擴充實體關係圖﹝簡稱EERD﹞ • 物件導向的概念結合了資料和運算方法 • 我們著重的是資料面 黃三益2007 資料庫的核心理論與實務第三版
物件導向基本觀念 • 最相關的物件導向概念是繼承 • 實體關係模式的組成元件包括實體(Entity)和關係(Relationship) • 範例 • Student(pId, name, sex, sId, major, degree) • Teacher((pId, name, sex, tId, dept, level) • 有的實體(助教)可以同時是老師和學生 • 老師和學生都是學校成員 • 共有以下四個實體型態: • Person(pId, name, sex) • Student(sId, major, degree) • Teacher((tId, dept, level) • TA(course) • TA is-a(繼承)Student is-a(繼承) Person • TA is-a(繼承) Teacher is-a(繼承) Person 黃三益2007 資料庫的核心理論與實務第三版
物件導向基本觀念(Cont.) • 「實體」改稱「物件」(Object) • 「實體型態」改稱「類別」(Class) • 上例中有四個類別:Person, Teacher, Student, TA,有繼承關係 黃三益2007 資料庫的核心理論與實務第三版
物件導向基本觀念(Cont.) • 一個繼承關係是由一個父類別(Superclass)和一個子類別(Subclass)所構成 ,有以下特點: • 每一個子類別的物件,也必然是父類別的成員 • 父類別的成員不一定要屬於子類別 • 子類別的物件繼承了父類別的所有屬性和其所參與的所有關係型態 黃三益2007 資料庫的核心理論與實務第三版
練習12-1 • 以圖13-1為例,分別列出Student和Teacher的所有屬性 • Ans: • Student屬性:pId, name, sex, level, tId, dept • Teacher屬性:pId, name, sex, sId, major, degree 黃三益2007 資料庫的核心理論與實務第三版
特殊化和一般化 • 給定一個父類別,按照某個標準分化出數個子類別的過程就稱為「特殊化」(Specialization) • 給定數個子類別,並具以歸納出其父類別的過程就稱為「一般化」 • 範例:產品有三個特殊化分類 • 按商品種類來分 • 按商品是否為促銷品來分 • 按產品庫存地來分 黃三益2007 資料庫的核心理論與實務第三版
特殊化和一般化(Cont.) 黃三益2007 資料庫的核心理論與實務第三版
特殊化和一般化(Cont.) • 一個特殊化分類,可以設定它的限制 • 條件分類或使用者分類 • 第一個特殊化分類(按商品種類來分類)是條件分類,其他為使用者分類 • 重複或非重複限制 • 重複限制用o來圖示,非重複限制用d來圖示 • 完全或部分參與限制 • 完全參與用雙線來圖示,部分參與用單線來圖示 • 參考上頁圖13-2 黃三益2007 資料庫的核心理論與實務第三版
練習12-2 • 假設該網路書店還兼賣文具(SchoolSupply),且還可能賣一些無法歸類的產品,請重劃第一個特殊化(依商品種類來分) 黃三益2007 資料庫的核心理論與實務第三版
特殊化的過程 • 有四個步驟: • 決定該特殊化分類的子類別 • 設定該特殊化分類的限制 • 決定每一個子類別的特有屬性 • 檢視EERD的其他實體型態(或類別),以決定是否要為某一個子類別建立新的關係型態 • 範例:將Product的創作者抽離成一獨立的類別,並進行特殊化 黃三益2007 資料庫的核心理論與實務第三版
黃三益2007 資料庫的核心理論與實務第三版
練習12-3 • 在上頁圖13-3裡,創作者的特殊化的重複限制是用(o),請問其含意為何? • Ans: 表示一位創作者可同時是artist、author, 或 actor 黃三益2007 資料庫的核心理論與實務第三版
特殊化的多階層架構 • 一個子類別,我們可以再將其特殊化。如此繼承關係將這些類別串連成一個樹狀結構,稱之為特殊化階層 • 範例:銀行客戶 • 可特殊化成子類別貸款戶和存款戶 • 貸款戶可特殊化成子類別信貸戶、動產貸款戶 ,和不動產貸款戶 • 存款戶可特殊化成子類別儲蓄戶、支票戶,和定存戶 黃三益2007 資料庫的核心理論與實務第三版
黃三益2007 資料庫的核心理論與實務第三版
多重繼承 • 當一子類別有兩個或以上的父類別時,稱為多重繼承 • 比如某些同時擁有定存和不動產貸款的客戶可以成為「貴賓專戶」,如下圖所示 • 有多重繼承關係的類別會形成晶格 • 圖13-1所顯示的Person, Student, Teacher, 和TA的繼承關係也是一個晶格,這是因為TA擁有多重繼承的關係 黃三益2007 資料庫的核心理論與實務第三版
黃三益2007 資料庫的核心理論與實務第三版
練習12-4 • 請解釋圖13-4中,各特殊化(存款戶,貸款戶,不動產貸款戶)重疊限制的意義 • Ans: • 表示一位存款戶可同時有定存、支票和儲蓄帳戶。一位貸款戶可同時有動產和不動產貸款。一位不動產貸款戶可同時有土地和建物貸款 黃三益2007 資料庫的核心理論與實務第三版
練習12-5 • 圖13-5中,貴賓專戶共有哪些屬性? • Ans: • VIPAccount, cdDate, cdAmount, cdRate, history, eYear, eDate, eRate, eHist, guarantor, loanHist, loanNo, cId, name, account, startDate 黃三益2007 資料庫的核心理論與實務第三版
群類 • 某些本質上完全不同的類別有時候可以群聚起來合成一個類別,這樣的類別我們就稱為群類(Category) • 範例:銀行的帳戶可以屬於個人或公司,此時帳戶(AccountOwner)為個人(Person)和公司(Company)所組成的群類 黃三益2007 資料庫的核心理論與實務第三版
群類(Cont.) • 群類不同於繼承 黃三益2007 資料庫的核心理論與實務第三版
群類(Cont.) CA∪B (b) C A∩B (c) CA∪B 黃三益2007 資料庫的核心理論與實務第三版
群類(Cont.) • 群類裡也可設定完全參與限制 • 具備完全參與限制的群類等同於繼承 黃三益2007 資料庫的核心理論與實務第三版
黃三益2007 資料庫的核心理論與實務第三版
UML的類別圖表示法 • UML裡定義了許多圖 • 絕大部分的圖都跟程式功能流程相關,其中只有類別圖(Class diagram)主要與資料面相關 • 類別圖的基本組成份子包括類別和關連 • 類別的描述包括三個部分: • 類別名稱 • 屬性(Attribute) • 運算方法(Operation) 黃三益2007 資料庫的核心理論與實務第三版
UML的類別圖表示法(Cont.) • 類別圖裡的關連是用來描述類別與類別間的關係 • 關連上也可以設定角色(role),也有結構上的限制,採用類似(min, max)的方式 • 一個"*"表示"0..*",一個"1"表示"1..1","*"表示沒上限 每一個C1(C2)物件至少有min1(min2) 至多有max1(max2)個C2(C1)物件與它關連 黃三益2007 資料庫的核心理論與實務第三版
練習12-7: • 考慮公司和員工的關係,其中一個公司可以有1到多個員工,但每一位員工只能屬於一家公司。 • 用UML類別圖的關連來表示 • 用第二章M:N的關係型態來表示 • 用第二章(min, max) 的關係型態來表 • Ans: M:N UML (min, max) 黃三益2007 資料庫的核心理論與實務第三版
UML的類別圖表示法(Cont.) • 類似關連的概念:彙總(Aggregation)和組合(Composition) • 彙總:引擎是汽車的組成部分,員工是公司的組成部分 • 用空心菱形表示 • 與關連間的區別不清楚 • 組合:類似彙總但隱含組成類別的物件不可單獨存在 • 用實心凌形表示 • 常用來表示弱實體型態或多值屬性 黃三益2007 資料庫的核心理論與實務第三版
黃三益2007 資料庫的核心理論與實務第三版
UML的特殊化分類表示法 • UML的類別圖用一個三角形來表示特殊化分類。對於特殊化分類的限制,其表示法如下所述: • 分類標準:將特殊化分類名稱書寫於三角形旁。 • 重複限制(Disjoint constraints):若是父類別的物件不可重複出現在子類別裡,則用空心三角形表示(擴充實體關係模式用「d」來表示);若是可重複出現,則用實心三角形表示(擴充實體關係模式用「o」來表示)。 • 完全參與限制(Completeness constraints):若是完全特殊化(即一個父類別的物件一定要屬於至少一個子類別),則在三角形旁註解{complete}。 黃三益2007 資料庫的核心理論與實務第三版
黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式 • 愈來愈多的系統分析師採用物件導向方法論來設計系統,但物件導向資料庫管理系統的使用很不普遍 • 雖以物件導向的的方式來做資料塑模,最後還是需轉換成關聯模式 • 特殊化分類的轉換 ,三種方式 • 子類別和父類別分別產生關聯綱目 • 只有子類別產生關聯綱目 • 只有父類別產生關聯綱目 黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式 • 方式一(每個類別產生一個關聯綱目) • 替C產生一個關聯綱目,有C的所有屬性並以k為主鍵 • 替每個子類別Si產生一個關聯綱目,有Si的所有屬性再加上k,並以k為主鍵。 黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式(Cont.) • 範例:圖13-2 黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式(Cont.) • 方式二(只有子類別產生關聯綱目) • 替每個子類別Si產生一個關聯綱目,有Si的所有屬性再加上C的全部屬性,並以k為主鍵 • 只適用於完全特殊化分類 黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式(Cont.) • 範例:圖13-2按產品種類的特殊化分類 黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式(Cont.) • 方式三(只有父類別產生關聯綱目) • Case 1:不重複限制 • 替C產生一個關聯綱目,有C及所有子類別的屬性,再加上一個額外屬性用來辨別紀錄所屬的子類別,並以k為主鍵 • Case 2: 重複限制 • 替C產生一個關聯綱目,有C及所有子類別的屬性,再加上n個額外布林(Boolean)屬性用來辨別紀錄是否屬於每個子類別,並以k為主鍵 黃三益2007 資料庫的核心理論與實務第三版
特殊化分類轉成關聯模式(Cont.) • 範例:圖13-2 Product CDPieces Product 黃三益2007 資料庫的核心理論與實務第三版
群類轉成關聯綱目 • 替C產生一個關聯綱目,每個類別Si也個別產生一個關聯綱目 • C:群類C的屬性,再加上一個新的主鍵kc。若C本身已有關聯主鍵則不須另外附加 。 • Si:類別Si上的屬性,再加上一個外部鍵,參考到C的關聯主鍵kc。 黃三益2007 資料庫的核心理論與實務第三版
群類轉成關聯綱目(Cont.) • 範例:圖13-6 黃三益2007 資料庫的核心理論與實務第三版
轉成關聯綱目的問題 • 不管使用哪一種方式來將特殊化分類轉成關聯綱目都有可能喪失一些限制的資訊 • 考慮圖13-17的第一種轉換方式所得到的關聯綱目,該關聯綱目並無法確保 • 「每一個Book、DVD和CD的pNo值都存在於Product裡」 • 「Book、DVD和CD的pNo值必然不同」 • 這些喪失的限制必須靠SQL的Trigger來設定或使用應用程式來確保 黃三益2007 資料庫的核心理論與實務第三版