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