第十三章 擴充實體關係模式
DESCRIPTION
第十三章 擴充實體關係模式. 目的 物件導向基本觀念 特殊化和一般化 特殊化的多階層架構 多重繼承 群類 UML 的類別圖 轉成關聯綱目. 目的. 本章所探討的是加上物件導向功能的實體關係模式 擴充後的實體關係圖則稱為擴充實體關係圖 ﹝ 簡稱 EERD﹞ 物件導向的概念結合了資料和運算方法 我們著重的是資料面. 物件導向基本觀念. 最相關的物件導向概念是繼承 實體關係模式的組成元件包括實體( Entity )和關係( Relationship ) 範例 Student(pId, name, sex, sId, major, degree) - PowerPoint PPT PresentationTRANSCRIPT
黃三益 2007資料庫的核心理論與實務第三版
12-1
第十三章 擴充實體關係模式 目的物件導向基本觀念特殊化和一般化特殊化的多階層架構
多重繼承群類 UML 的類別圖轉成關聯綱目
黃三益 2007資料庫的核心理論與實務第三版
12-2
目的本章所探討的是加上物件導向功能的實體關係模式
擴充後的實體關係圖則稱為擴充實體關係圖﹝簡稱 EERD ﹞
物件導向的概念結合了資料和運算方法我們著重的是資料面
黃三益 2007資料庫的核心理論與實務第三版
12-3
物件導向基本觀念 最相關的物件導向概念是繼承 實體關係模式的組成元件包括實體( Entity )和關係( Relations
hip ) 範例
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資料庫的核心理論與實務第三版
12-4
物件導向基本觀念 (Cont.)
「實體」改稱「物件」( Object ) 「實體型態」改稱「類別」( Class ) 上例中有四個類別: Person, Teacher, Student, TA ,有繼
承關係
PersonmajortId dept
Student
sId
Teacher
TA
pId name sex
level
degree
course
黃三益 2007資料庫的核心理論與實務第三版
12-5
物件導向基本觀念 (Cont.)
一個繼承關係是由一個父類別( Superclass )和一個子類別( Subclass )所構成 ,有以下特點: 每一個子類別的物件,也必然是父類別的成員 父類別的成員不一定要屬於子類別 子類別的物件繼承了父類別的所有屬性和其所參與的所有關係型態
黃三益 2007資料庫的核心理論與實務第三版
12-6
練習 12-1
以圖13-1為例,分別列出 Student 和 Teache
r 的所有屬性 Ans:
Student 屬性: pId, name, sex, level, tId, dept Teacher 屬性: pId, name, sex, sId, major, degr
ee
黃三益 2007資料庫的核心理論與實務第三版
12-7
特殊化和一般化 給定一個父類別,按照某個標準分化出數個子類別的過程就稱為「特殊化」( Specialization )
給定數個子類別,並具以歸納出其父類別的過程就稱為「一般化」
範例:產品有三個特殊化分類 按商品種類來分 按商品是否為促銷品來分 按產品庫存地來分
黃三益 2007資料庫的核心理論與實務第三版
12-8
特殊化和一般化( Cont.)
Product
pNo unitPrice
catalogname
DVD Book CD
d
pieces
minutes isbn
songName length
SalesProduct
discount
KaohsiungStockProduct
TaipeiStockProduct
o
warehouse
catalog
‘ DVD’‘ Book’
‘ CD’
黃三益 2007資料庫的核心理論與實務第三版
12-9
特殊化和一般化( Cont.)
一個特殊化分類,可以設定它的限制 條件分類或使用者分類
第一個特殊化分類(按商品種類來分類)是條件分類,其他為使用者分類
重複或非重複限制重複限制用 o 來圖示,非重複限制用 d 來圖示
完全或部分參與限制完全參與用雙線來圖示,部分參與用單線來圖示
參考上頁圖13-2
黃三益 2007資料庫的核心理論與實務第三版
12-10
練習 12-2
假設該網路書店還兼賣文具( SchoolSupply ),且還可能賣一些無法歸類的產品,請重劃第一個特殊化(依商品種類來分)
Product
pNo unitPrice catalogname
DVD Book CD
d
pieces
minutes isbn
songName length
SalesProduct
discount
KaohsiungStockProduct
TaipeiStockProduct
o
warehouse
catalog
‘ DVD’‘ Book’‘ CD’
SchoolSupply
name
'SchoolSupply'
黃三益 2007資料庫的核心理論與實務第三版
12-11
特殊化的過程 有四個步驟:
決定該特殊化分類的子類別 設定該特殊化分類的限制 決定每一個子類別的特有屬性 檢視 EERD 的其他實體型態(或類別),以決定是否要為某一個子類別建立新的關係型態
範例:將 Product 的創作者抽離成一獨立的類別,並進行特殊化
黃三益 2007資料庫的核心理論與實務第三版
12-12
AuthorArtist Actor
o
Product
DVD Book CD
d
pieces
minutes isbn
songName length
SalesProduct
discount
KaohsiungStockProduct
TaipeiStockProduct
o
warehouse
catalog
Creator
Acts
Performs
Authors
M N
M
M N
N
namecId
‘ DVD’ ‘ cd’‘ book’
pNo unitPrice catalogname
rolesstylesartTypes
黃三益 2007資料庫的核心理論與實務第三版
12-13
練習 12-3
在上頁圖 13-3 裡,創作者的特殊化的重複限制是用( o ),請問其含意為何?
Ans:表示一位創作者可同時是 artist 、 author, 或 actor
黃三益 2007資料庫的核心理論與實務第三版
12-14
特殊化的多階層架構 一個子類別,我們可以再將其特殊化。如此繼承關係將這些類別串連成一個樹狀結構,稱之為特殊化階層
範例:銀行客戶 可特殊化成子類別貸款戶和存款戶 貸款戶可特殊化成子類別信貸戶、動產貸款戶 ,和不動產貸款戶
存款戶可特殊化成子類別儲蓄戶、支票戶,和定存戶
黃三益 2007資料庫的核心理論與實務第三版
12-15
存款戶Depositor
定存戶CD
貸款戶Loaner
客戶Customer
o
o貸款編號
loanNo
貸款歷史loanHist
不動產貸款戶EstateLoaner
o
建物貸款戶BuildingLoaner
土地貸款戶LandLoaner
動產貸款戶PropertyLoaner
o
支票戶Checking
保證人IDguarantorId
扺押歷史eHist
貸款年限fYear
貸款日期fDate
貸款利率fRate 貸款年限
eYear
貸款日期eDate
貸款利率eRate
貸款年限pYear
貸款日期pDate
貸款利率pRate
扺押品規格mDesc
扺押品名稱mName
建號bNo
地號lNo
客戶IDcId
姓名name
客戶帳號account
開戶日期startDate
定存起訖日期cdDate
定存利率cdRate
定存額cdAmount
被保人關係guarantship
存款歷史history
儲蓄戶Saving
存款餘額balance
存款利率savingRate
支票張數freeCheckNum
保證人姓名guarantorName
保證人guarantor
信貨戶FiduciaryLoaner
扺押品pMortgages
存款餘額balance
黃三益 2007資料庫的核心理論與實務第三版
12-16
多重繼承 當一子類別有兩個或以上的父類別時,稱為多重繼承 比如某些同時擁有定存和不動產貸款的客戶可以成為「貴賓專戶」,如下圖所示
有多重繼承關係的類別會形成晶格 圖 13-1 所顯示的 Person, Student, Teacher, 和
TA 的繼承關係也是一個晶格,這是因為 TA 擁有多重繼承的關係
黃三益 2007資料庫的核心理論與實務第三版
12-17
存款戶Depositor
定存戶CD
貸款戶Loaner
客戶Customer
o
o貸款編號
loanNo
貸款歷史loanHist
不動產貸款戶EstateLoaner
o
建物貸款戶BuildingLoaner
土地貸款戶LandLoaner
動產貸款戶PropertyLoaner
o
支票戶Checking
保證人IDguarantorId
扺押歷史eHist
貸款年限fYear
貸款日期fDate
貸款利率fRate 貸款年限
eYear
貸款日期eDate
貸款利率eRate
貸款年限pYear
貸款日期pDate
貸款利率pRate
扺押品規格mDesc
扺押品名稱mName
建號bNo
地號lNo
客戶IDcId
姓名name
客戶帳號account
開戶日期startDate
定存起訖日期cdDate
定存利率cdRate
定存額cdAmount
被保人關係guarantship
存款歷史history
儲蓄戶Saving
存款餘額balance
存款利率savingRate
支票張數freeCheckNum
保證人姓名guarantorName
保證人guarantor
信貨戶FiduciaryLoaner
扺押品pMortgages
存款餘額balance
貴賓專戶VIP
專戶帳號VIPAccount
黃三益 2007資料庫的核心理論與實務第三版
12-18
練習 12-4
請解釋圖 13-4 中,各特殊化(存款戶,貸款戶,不動產貸款戶)重疊限制的意義
Ans: 表示一位存款戶可同時有定存、支票和儲蓄帳戶。一位貸款戶可同時有動產和不動產貸款。一位不動產貸款戶可同時有土地和建物貸款
黃三益 2007資料庫的核心理論與實務第三版
12-19
練習 12-5
圖 13-5 中,貴賓專戶共有哪些屬性? Ans:
VIPAccount , cdDate , cdAmount , cdRate , history , eYear , eDate , eRate , eHist , guarantor , loanHist , loanNo , cId , name , account , startDate
黃三益 2007資料庫的核心理論與實務第三版
12-20
群類 某些本質上完全不同的類別有時候可以群聚起來合成一個類別,這樣的類別我們就稱為群類( Category)
範例:銀行的帳戶可以屬於個人或公司,此時帳戶( AccountOwner)為個人 (Person) 和公司(Company) 所組成的群類
AccountOwner
U
Person Company
pId cNamepName
accountNo startDate
cId
黃三益 2007資料庫的核心理論與實務第三版
12-21
群類 (Cont.)
群類不同於繼承
AccountOwner
d
Person CompanyAccountOwner
Person Company
黃三益 2007資料庫的核心理論與實務第三版
12-22
群類 (Cont.)
CA B (b) C ∪ A∩B (c) CA B ∪
C
A B
U
C
A B
C
A B
d
黃三益 2007資料庫的核心理論與實務第三版
12-23
群類 (Cont.)
群類裡也可設定完全參與限制 具備完全參與限制的群類等同於繼承
C
A B
U
C
A B
d
黃三益 2007資料庫的核心理論與實務第三版
12-24
貴賓專戶VIP
專戶帳號vipAccount
信貨戶FiduciaryLoaner
存款戶Depositor
定存戶CD
貸款戶Loaner
客戶Customer
o
o貸款編號
loanNo保證人guarantor
貸款歷史loanHist
不動產貸款戶EstateLoaner
o
建物貸款戶BuildingLoaner
土地貸款戶LandLoaner
動產貸款戶PropertyLoaner
o
支票戶Checking
保證人IDguarantorId
保證人姓名guarantorName
扺押歷史eHist
貸款年限fYear
貸款日期fDate
貸款利率fRate
貸款年限eYear
貸款日期eDate
貸款利率eRate
貸款年限pYear
貸款日期pDate
貸款利率pRate
扺押品規格mDesc 扺押品名稱
mName
扺押品pMortgages
建號bNo
地號lNo
客戶IDcId
姓名name
客戶帳號account
開戶日期startDate
定存起訖日期cdDate
定存利率cdRate
定存款cdAmount
被保人關係guarantship
存款歷史history
儲蓄戶Saving
存款餘額balance 存款利率
savingRate
支票張數freeCheckNum
國內投資戶DomesticInvestor
o
投資帳號dAccount
投資帳號oAccount
董事Director
監事Supervisor
理事CouncilMember
d
銀行股東Owner
國外投資戶OverseasInvestor
股東身份ownerPosition
股東姓名ownerName
持有股份shares
ownerPosition
‘ director’ ‘ councilmember’‘ supervisor’
投資標的物Product
標的物種類
pTyped
股票Stock
基金Fund
債券Bond
期貨Futures
投資Investment
N
M
標的物名稱pName
pType
‘ futures’‘ stock’
‘ fund’ ‘ bond’
投資日期vipInvDate
投資額vipInvestment
理財戶
U
存款餘額balance
黃三益 2007資料庫的核心理論與實務第三版
12-25
UML 的類別圖表示法 UML 裡定義了許多圖
絕大部分的圖都跟程式功能流程相關,其中只有類別圖( Class diagram)主要與資料面相關
類別圖的基本組成份子包括類別和關連
類別的描述包括三個部分: 類別名稱 屬性( Attribute ) 運算方法( Operation )
Transaction
tNopayment bankId bankName cardType cardId dueDatetransTimemethod
:屬性
:類別名稱
:運算方法 get-method ( )get-transTime ( )set-method ( )......
黃三益 2007資料庫的核心理論與實務第三版
12-26
UML 的類別圖表示法 (Cont.)
類別圖裡的關連是用來描述類別與類別間的關係 關連上也可以設定角色( role ),也有結構上的限制,採用類似( min,
max )的方式 一個 "* " 表示 "0..* " ,一個 "1" 表示 "1..1" , "* " 表示沒上限
C1 C2(min1..max1)(min2..max2)
每一個 C1( C2)物件至少有min1(min2)至多有max1(max2)個 C2( C1)物件與它關連
黃三益 2007資料庫的核心理論與實務第三版
12-27
練習 12-7 : 考慮公司和員工的關係,其中一個公司可以有 1到多個員工,但每一位員工只能屬於一家公司。 用 UML 類別圖的關連來表示 用第二章 M:N 的關係型態來表示 用第二章 (min, max) 的關係型態來表
Ans:
UML
M:N
(min, max)
(1..*)(1..1)擁有
員工公司公司 員工1 N擁有
公司 員工擁有(1,n) (1,1)
黃三益 2007資料庫的核心理論與實務第三版
12-28
UML 的類別圖表示法 (Cont.)
類似關連的概念:彙總( Aggregation )和組合( Composition ) 彙總:引擎是汽車的組成部分,員工是公司的組成部分
用空心菱形表示與關連間的區別不清楚
組合:類似彙總但隱含組成類別的物件不可單獨存在 用實心凌形表示常用來表示弱實體型態或多值屬性
公司 員工1 *
汽車 零件1 *
黃三益 2007資料庫的核心理論與實務第三版
12-29
mId pIdnamebirthdayphoneaddressemailintroducerId
Member
get mIdget pId...
cartTime
Cart
get cartTime
tNotransTimemethodpayment bankId bankName cardType cardId dueDate
Transaction
*1
1
*
*
**
*
* 1..*
0..1
Product
pNopNamecatalogunitPrice
Has
Corresponds
0..1
Confirms Order
amount
Borwse
browseTime
RecordsalePriceamount
Author
name
*1
黃三益 2007資料庫的核心理論與實務第三版
12-30
UML 的特殊化分類表示法 UML 的類別圖用一個三角形來表示特殊化分類。對於特殊化分類的限制,其表示法如下所述: 分類標準:將特殊化分類名稱書寫於三角形旁。 重複限制( Disjoint constraints ):若是父類別的物件不可重複出現在子類別裡,則用空心三角形表示(擴充實體關係模式用「 d 」來表示);若是可重複出現,則用實心三角形表示(擴充實體關係模式用「 o 」來表示)。
完全參與限制( Completeness constraints ):若是完全特殊化(即一個父類別的物件一定要屬於至少一個子類別),則在三角形旁註解 {complete} 。
黃三益 2007資料庫的核心理論與實務第三版
12-31
Product
pNopNamecatalogunitPrice
catalog(complete)
DVD Book CDminutes isbn
CDpiecessongNamelength
*SalesProduc
tdiscount
1
KaohsiungStockProduct
TaipeiStockProduct
warehouse
‘ DVD’ ‘ CD’‘ Book’
黃三益 2007資料庫的核心理論與實務第三版
12-32
特殊化分類轉成關聯模式 愈來愈多的系統分析師採用物件導向方法論來設計系統,但物件導向資料庫管理系統的使用很不普遍 雖以物件導向的的方式來做資料塑模,最後還是需轉換成關聯模式
特殊化分類的轉換 ,三種方式 子類別和父類別分別產生關聯綱目 只有子類別產生關聯綱目 只有父類別產生關聯綱目
黃三益 2007資料庫的核心理論與實務第三版
12-33
特殊化分類轉成關聯模式方式一(每個類別產生一個關聯綱目) 替 C 產生一個關聯綱目,有 C 的所有屬性並以 k 為主鍵
替每個子類別 Si產生一個關聯綱目,有 Si
的所有屬性再加上 k ,並以 k 為主鍵。
C
. . .
k
S1 S2 Sn
黃三益 2007資料庫的核心理論與實務第三版
12-34
特殊化分類轉成關聯模式 (Cont.)
範例:圖 13-2
Product pNo name catalog unitPrice
DVD pNo minutes
Book pNo isbn
CDpieces pNo songName length
SalesProduct pNo discount
KaohsiungStockProduct pNo
TaipeiStockProduct pNo warehouse
黃三益 2007資料庫的核心理論與實務第三版
12-35
特殊化分類轉成關聯模式 (Cont.)
方式二(只有子類別產生關聯綱目) 替每個子類別 Si 產生一個關聯綱目,有 Si 的所有屬性再加上 C 的全部屬性,並以 k 為主鍵
只適用於完全特殊化分類
黃三益 2007資料庫的核心理論與實務第三版
12-36
特殊化分類轉成關聯模式 (Cont.)
範例:圖 13-2 按產品種類的特殊化分類
DVD
Book
CDpieces
pNo
name catalog unitPrice isbn
pNo
name catalog unitPrice minutes
pNo
songName length
pNo
name catalog unitPrice CD
黃三益 2007資料庫的核心理論與實務第三版
12-37
特殊化分類轉成關聯模式 (Cont.)
方式三(只有父類別產生關聯綱目) Case 1: 不重複限制
替 C 產生一個關聯綱目,有 C及所有子類別的屬性,再加上一個額外屬性用來辨別紀錄所屬的子類別,並以 k 為主鍵
Case 2: 重複限制替 C 產生一個關聯綱目,有 C及所有子類別的屬性,再加上 n 個額外布林( Boolean )屬性用來辨別紀錄是否屬於每個子類別,並以 k 為主鍵
黃三益 2007資料庫的核心理論與實務第三版
12-38
特殊化分類轉成關聯模式 (Cont.)
範例:圖 13-2 Product
pNo name catalog unitPrice minutes isbn salesflag discount
CDPieces
pNo songName length
Product
pNo name catalog unitPrice KaohsiungFlag TaipeiFlag warehouse
黃三益 2007資料庫的核心理論與實務第三版
12-39
群類轉成關聯綱目 替 C 產生一個關聯綱目,每個類別 Si 也個別產生一個關聯綱目 C :群類 C 的屬性,再加上一個新的主鍵 kc。若 C 本身已有關聯主鍵則不須另外附加 。
Si:類別 Si上的屬性,再加上一個外部鍵,參考到 C 的關聯主鍵 kc 。
C
S1 Sn
U
S2
k1 k2 kn
. . .
黃三益 2007資料庫的核心理論與實務第三版
12-40
群類轉成關聯綱目( Cont.)
範例:圖 13-6
accountNo
startDate
AccountOwner
Person Company
pId
pName personAccount
cId cName companyAccount
黃三益 2007資料庫的核心理論與實務第三版
12-41
轉成關聯綱目的問題不管使用哪一種方式來將特殊化分類轉成關聯綱目都有可能喪失一些限制的資訊
考慮圖 13-17 的第一種轉換方式所得到的關聯綱目,該關聯綱目並無法確保 「每一個 Book 、 DVD 和 CD 的 pNo值都存在於 Product 裡」
「 Book 、 DVD 和 CD 的 pNo值必然不同」 這些喪失的限制必須靠 SQL 的 Trigger 來設定或使用應用程式來確保