第二章 實體關係模式:基本概念 目的 何謂實體關係模式和實體關係圖(ERD) 實體型態 關係型態 二元關係型態 弱實體型態 遞迴關係型態 完整的範例實體關係圖 黃三益2007 資料庫的核心理論與實務第三版
目的 迷你世界就是資料庫應用系統的範圍 瞭解迷你世界的需求後要進行功能面的分析和設計,以及資料塑模 資料塑模有三個階段,包括概念塑模、邏輯塑模和實體塑模。 “概念塑模”是用比較結構化的方式來擷取出迷你世界裡的資料種類和其關係 本章(和下一章)所要介紹的就是最常用的概念塑模工具:實體關係模式 黃三益2007 資料庫的核心理論與實務第三版
概念塑模的方法 要了解一資料庫應用系統(或簡稱為資訊系統)的迷你世界,可以透過以下兩個途徑: 收集相關文件和表單 訪談 瞭解現行作業方式 範例出貨單 訪談 訪談對象包括操作人員、客戶、高階主管 確認作業方式 對未來新作業方式的期待 黃三益2007 資料庫的核心理論與實務第三版
範例出貨單 黃三益2007 資料庫的核心理論與實務第三版
目的(Cont.) 黃三益2007 資料庫的核心理論與實務第三版
何謂實體關係模式 實體關係模式(Entity Relationship Model, 簡稱ER Model)是目前用的最普遍的概念資料模式 ,由美籍華人陳品山(Peter Chen)於1976年提出 實體關係模式的組成元件包括實體(Entity)和關係(Relationship) 範例迷你世界 假設我們要替一家網路書店的”線上購物系統”進行資料塑模。為簡化起見,我們假設該網路書店是採會員制(Membership store)。該系統可以記載會員的線上瀏覽記錄、交易記錄和購物車裡的商品(客戶是先將商品放在虛擬購物車裡,最後再進行結帳的動作)。會員可由線上訂購,或其他方式(比如傳真、email、電話,或直接到門市)訂購,經由確認程序後產生交易記錄。 黃三益2007 資料庫的核心理論與實務第三版
範例迷你世界 包括四種資料: 客戶 商品 購物車 交易 博客來網路書店範例 黃三益2007 資料庫的核心理論與實務第三版
會員登入 商品資訊 購物車 黃三益2007 資料庫的核心理論與實務第三版
實體 一個實體為迷你世界裡的一個事或物 一個實體會有一些迷你世界裡需要的屬性(Attributes) 以網路書店的線上購物系統為例,一位會員、一本書、一張CD、一台購物車、一筆交易等,都是一個實體 一個實體會有一些迷你世界裡需要的屬性(Attributes) 會員會有姓名、生日、職業、學歷等屬性,一本書則可能有書名、作者、定價等屬性,一筆交易則可能有交易時間、交易會員、包括商品等屬性 每一個實體對於一些屬性有它專屬的屬性值(Attribute values) 本書是一個實體,其書名屬性值為“資料庫的核心理論和實務”,商品種類屬性值為 “書”,作者的屬性值為“黃三益” 黃三益2007 資料庫的核心理論與實務第三版
屬性 屬性值可能不只一個時,我們稱該屬性為多值屬性(Multivalued attributes) 比如一張CD,其作者(歌手)的屬性值包括為“江惠”和”伍思凱” 屬性可由數個屬性所組成時,我們稱該屬性為複合屬性(Composite attributes) 比如一張CD,其發行者屬性可能包括公司名稱和住址兩個屬性 非多值屬性我們稱為單值屬性 ,非複合屬性則稱為簡單屬性 黃三益2007 資料庫的核心理論與實務第三版
實體型態 迷你世界裡的眾多實體中,有些實體是屬於同一類的, 每一類實體就稱為實體型態 一個實體型態有一些屬性,用來描述這些實體的性質 以線上購物系統為例,其迷你世界包含了以下四個實體型態,屬性和屬性的性質如下 實體型態 屬性 屬性性質 會員 會員姓名 會員編號 身分證ID 生日 住址 電話 email 介紹人 簡單,單值 購物車 購物車產生時間 購物車會員 購物車商品 簡單,多值 商品 商品代號 商品名稱 作者 商品種類 商品定價 交易 交易編號 交易方式 電子付款方式 會員 商品 購物車 簡單,單值 複合,單值 簡單,多值 黃三益2007 資料庫的核心理論與實務第三版
實體型態(Cont.) 在一個實體型態裡,如果存在一個屬性,使得不同實體的該屬性值必然不同,我們就稱該屬性為關鍵屬性 在會員實體型態裡,會員編號是關鍵屬性,而身分證ID也是關鍵屬性 在商品實體型態裡,商品代號是關鍵屬性 在交易實體型態裡,交易編號是關鍵屬性 在購物車實體型態裡,沒有任何一個屬性是關鍵屬性,但若將購物車產生時間和所屬會員整合成一複合屬性,則該複合屬性即為關鍵屬性 黃三益2007 資料庫的核心理論與實務第三版
實體型態的圖形表示法 實體關係模式定義了一套圖形化的表示法,稱為實體關係圖(Entity Relationship Diagram, 簡成ERD) 右圖有一個實體型態E,它有四個屬性 a1為一單值的簡單屬性 a2為關鍵屬性 a3為多值屬性 a4為複合屬性,由a41和a42所組成 黃三益2007 資料庫的核心理論與實務第三版
線上購物系統的四個實體型態表示法 黃三益2007 資料庫的核心理論與實務第三版
實體型態(Cont.) 一個屬性在定義時也會描述其定義域(Domain),不過在ERD裡,為了增加可讀性,通常不將屬性的定義域表示出來 一個實體的屬性值也可能是空值(null),空值的涵義有以下三種可能: 知道有值但還未填入 該實體的該屬性不可能有值(NA) 不知道該實體的該屬性是否有值 黃三益2007 資料庫的核心理論與實務第三版
關係型態 圖2-3中,有些屬性的名稱是用紅色字標示,稱之為相關屬性,相關屬性值應該可以識別某一個實體 以交易裡的會員屬性為例, 它是用來識別會員實體 為避免混淆,相關屬性值在ERD裡表示成一個關係 以交易裡的會員屬性為例, 它是是一筆交易和一位會員間的關係 關係型態(Relationship Type)來描述同一類關係 以交易裡的會員屬性為例,最好表示成會員與交易間關係型態,稱之為”確認”關係型態,如下圖所示 黃三益2007 資料庫的核心理論與實務第三版
關係型態 練習2-1:請將上圖裡的紅色屬性(包括介紹人、商品,和購物車)都改成關係型態(分別是會員(Member)與會員(Member)間的關係型態,交易(Transaction)和商品(Product)間的關係型態,交易(Transaction)和購物車(Cart)間的關係型態)。 黃三益2007 資料庫的核心理論與實務第三版
練習2-1(Cont.) 黃三益2007 資料庫的核心理論與實務第三版
關係型態(Cont.) 參與一個關係型態的實體型態來說,其所屬的實體可能不會參與關係,可能會參加一個關係,也可能會參加多個關係,如右圖所示 每一個關係型態裡,其相關實體型態的參與程度可以限制 黃三益2007 資料庫的核心理論與實務第三版
二元關係型態 如果一個關係是有關兩個實體,則描述這樣關係的型態就稱為二元關係型態 二元關係型態的結構限制包括兩部份:基數比和參與度 基數比用來表示一個實體最多可以跟幾個實體發生此類關係 1:1, 表示左邊的一個實體最多與右邊的一個實體發生此類關係,同時右邊的一個實體最多也只能跟左邊的一個實體發生此類關係 黃三益2007 資料庫的核心理論與實務第三版
二元關係型態(Cont.) 1:N, 表示左邊的一個實體最多與可跟右邊的多個實體發生此類關係,但右邊的一個實體最多也只能跟左邊的一個實體發生此類關係 M:N, 表示左邊的一個實體最多與可跟右邊的多個實體發生此類關係,同時右邊的一個實體最多也能跟左邊的多個實體發生此類關係 黃三益2007 資料庫的核心理論與實務第三版
二元關係型態(Cont.) 參與度是衡量一個實體型態裡的每一實體是否至少需參與一個關係,若是,稱為完全參與(以雙線表示),否則稱為部分參與(以單線表示) 練習2-2:如果我們將會員與交易間的關係型態的基數(1和N)位置對調如下圖,請解釋其意義 黃三益2007 資料庫的核心理論與實務第三版
練習2-2,3 Ans:一位會員(客戶)可能有也僅能有一筆交易, 而一筆交易必須包含一個或以上個會員(客戶) 練習2-3:請將圖2-6和圖2-8的關係型態加上基數比和參與度 黃三益2007 資料庫的核心理論與實務第三版
關係型態上的屬性 關係型態上也可以有屬性 交易與商品間的”記錄”關係型態,就可以有一個屬性“數量”(amount)及一個屬性“售價”〔salePrice〕,用來記載一筆交易裡,某一樣商品的數量及總售價 黃三益2007 資料庫的核心理論與實務第三版
弱實體型態 關鍵屬性必須依賴某個關係型態的實體型態被稱為弱實體型態 圖2-3的購物車實體型態,其關鍵屬性是一複合屬性,由會員和購物車產生時間所組成,若會員屬性變成一個關係型態,則購物車就變成一個弱實體型態 此時「購物車產生時間」被稱為部分鍵, 「有」被稱為識別關係型態, 「會員」被稱為主實體型態 黃三益2007 資料庫的核心理論與實務第三版
遞迴關係型態 有些二元關係型態的左右兩邊實體型態是相同,只是扮演不同角色,此時就稱其為遞迴關係型態 不管是介紹人的會員或被介紹的會員,均是會員,但扮演不同的角色(role),所以我們可以把角色名稱加入,並將上圖修改如下圖 黃三益2007 資料庫的核心理論與實務第三版
練習2-4 練習2-4:考慮圖2-13的ERD,如果將關係型態「 Introduce」上的兩個角色名稱(介紹人_Introducer和被介紹人_Introducee)互換,請問其代表的意義為何? Ans:代表的意義為:一位會員可被多位會員介紹,而每位會員最多只能介紹一位會員 黃三益2007 資料庫的核心理論與實務第三版
命名方式 ERD最好要有一個命名的慣例,成為寫的人和讀的人的一個共同的默契 實體型態及關係型態的名稱的第一個字元為大寫字母 屬性的名稱第一個字元為小寫字母 角色名稱第一個字元要底線(underscore)_。 實體型態的名稱用單數名詞 關係型態的名稱用單數動詞 屬性的名稱盡量用不同的名詞。 在畫ERD時內容文字要盡量符合人的讀書習慣,例如:A 實體 → 關係→ B實體,要讓看的人由左而右或由上而下很像在看一句話一樣。 黃三益2007 資料庫的核心理論與實務第三版
完整的線上購物系統實體關係圖 黃三益2007 資料庫的核心理論與實務第三版