43
著作權所有 © 旗標出版股份有限公司 10 利用實體-關係模型 (E-R Model) 規劃資料庫

(E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

  • Upload
    vanmien

  • View
    235

  • Download
    0

Embed Size (px)

Citation preview

Page 1: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

著作權所有 © 旗標出版股份有限公司

第 10 章

利用實體-關係模型

(E-R Model)

規劃資料庫

Page 2: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

2

本章提要

10-1 何謂『實體 - 關係模型』

10-2 『實體 - 關係模型』的組成要素

10-3 擴充實體 - 關係模型

Page 3: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

3

10-1 何謂『實體 - 關係模型』

實體 - 關係模型 (Entity-Relationship Model,

簡稱 E-R Model) 是陳品山 (Peter P.S. Chen)

博士於 1976 年提出的一套資料庫的設計工具,

他運用真實世界中事物和關係的觀念, 來解釋資料庫中抽象的資料架構。

由於利用實體 - 關係模型設計資料庫時, 並不會牽涉到資料庫的操作、儲存方式...等複雜的電腦運作。

所以, 對於初學者而言, 不必花費太多的時間即可了解資料庫設計的基本方法。

Page 4: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

4

何謂『實體 - 關係模型』

此外, 實體 - 關係模型利用圖形的方式–實體 -

關係圖 (Entity-Relationship Diagram) 來表示資料庫的概念設計, 有助於設計過程中的構思及溝通討論。

如下圖所示:

Page 5: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

5

何謂『實體 - 關係模型』

Page 6: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

6

何謂『實體 - 關係模型』

這是客戶、訂單及產品的實體 - 關係圖 (設計者經過收集資料的過程, 利用實體 - 關係模型發展出資料庫大致的架構)。

經過和其他設計者或客戶討論後, 便可依照規則轉換為實際的資料庫。

Page 7: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

7

10-2 『實體 - 關係模型』的組成要素

實體 - 關係模型主要是由實體 (Entity)、關係(Relationship) 及屬性 (Attribute) 所組成, 以下分別為您介紹這些要素。

Page 8: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

8

實體 (Entity)

所謂實體 (Entity) 就是真實世界中的物件。

例如:

實體集合 (Entity Set)、實體類型 (Entity Type)

與實例 (Instance)

弱實體和一般實體

Page 9: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

9

實體集合 (Entity Set)、實體類型(Entity Type) 與實例 (Instance) 在實體 - 關係模型中, 我們會將同一類型的實

體集合起來成為實體集合 (Entity Set), 它們都具有相同的特性。

例如 Randy、Admas、George...等學生都是同類型的實體, 集合起來成為實體集合, 他們都有相同的特性, 像學號、姓名、性別...等等:

Page 10: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

10

實體集合 (Entity Set)、實體類型(Entity Type) 與實例 (Instance)

Page 11: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

11

實體集合 (Entity Set)、實體類型(Entity Type) 與實例 (Instance) 為了能明確區別每一個實體集合, 我們便依照

其特性之不同, 賦予一個識別的名稱。

例如將上圖的實體集合稱為學生實體類型(Entity Type)。而 Randy、Admas 及 George

就稱為學生實體類型中的實例 (Instance)。

在實體 - 關係圖中, 我們以單矩形來表示實體類型, 並將其名稱標示在矩形中。例如:

Page 12: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

12

弱實體和一般實體

實體依其存在的條件又可分為弱實體 (Weak

Entity) 及一般實體 (Regular Entity) 兩種:

弱實體:

所謂弱實體就是必須依靠其他實體才能存在。如果弱實體所依靠的實體消失了, 則該弱實體也就變得沒有意義了。

例如學校的學生是一個實體, 而學生家長就可算是弱實體, 必須依靠學生實體才能存在, 如果學生從學校畢業了, 則該學生的家長自然也就跟著被刪除了。

Page 13: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

13

弱實體和一般實體

在實體 - 關係圖中, 弱實體是以雙矩形來表示,

並將名稱標示在其中。

例如:

一般實體:

弱實體以外的實體都算是一般實體, 它不必依靠其他實體存在。

例如學生、書籍都是一般實體。通常我們所稱的實體就是指一般實體。

Page 14: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

14

關係 (Relationship)

實體和實體之間必須透過關係 (Relationship)

才能產生聯繫, 否則只是兩個不相干的實體。例如學生 Randy 必須要選修電腦概論, 才能上該門課, 並取得學分。

如果沒有選修該門課程, 就無法上該門課及取得學分。也就是說學生實體必須透過選修關係和課程實體產生關聯。

實體和實體之間的關係, 在實體 - 關係圖中我們以菱形表示 (名稱標示其中), 並利用直線連接兩個實體。

Page 15: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

15

關係 (Relationship)

例如:

Page 16: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

16

關係的類型

實體 - 關係模型為建立關聯式資料庫的過程之一, 我們在前一章曾提到關聯式資料庫的關聯類型有一對一、一對多及多對多三種。

同樣, 在實體 - 關係模型中, 我們亦可將實體與實體之間的關係分為一對一、一對多及多對多等 3 種關係:

Page 17: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

17

『一對一』關係 (One to One)

這是最簡單的關係, 在具有關係的兩個實體中,

甲實體的任一實例只能對應到乙實體的單一實例;而乙實體中的任一實例也只能對應到甲實體的單一實例。

例如:一個學生只能分配到一個座位, 而一個座位同時也只能分配給一個學生。

如下圖 (我們以 "1" 分別代表一對一的兩方):

Page 18: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

18

『一對多』關係 (One to Many)

在具有關係的兩個實體中, 甲實體的任一實例可對應到乙實體的多個實例;但乙實體的任一實例只能對應到甲實體的單一實例。

例如一個學生只能分配一間宿舍, 但一間宿舍卻可同時容納多個學生。

如下圖所示 (我們以 "1" 代表一對多關係中一的一方, 而 "m" 代表一對多關係中多的一方):

Page 19: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

19

『多對多』關係 (Many to Many)

在具有關係的兩個實體中, 甲實體的任一實例可對應到乙實體的多個實例;而乙實體的任一實例也可對應到甲實體的多個實例。

例如一個學生可選修多門課程, 而一個課程也可同時讓多位學生選修。

如下圖所示 (我們以英文字母 "m" 及 "n" 分別代表多對多的兩方):

Page 20: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

20

實體與弱實體的表示法

以上這 3 種關係皆適用於實體與弱實體之間的關係。

不過, 為了區分和一般實體的關係, 我們會以雙菱形來表示實體與弱實體之間的關係, 而弱實體和關係之間以雙直線連接, 如下圖所示 :

Page 21: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

21

屬性 (Attribute)

實體由若干屬性 (Attribute) 所組成, 每個屬性都代表實體某方面的特性。例如一本書有書名、出版社、出版年份、定價...等特性。

若有一本書的書名為『數位相機聖經』、出版社為旗旗出版公司、出版年份為 2006 年、定價 860 元...等等, 這些都是該本書的屬性。

在實體 - 關係圖中, 屬性是以 “橢圓形” 來表示, 並且以實線和實體相連接, 屬性名稱放至於橢圓形中。

例如書籍實體的屬性表示如下:

Page 22: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

22

屬性 (Attribute)

屬性尚可分為數種類型, 以下分別說明。

Page 23: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

23

鍵屬性 (Key Attribute)

在實體的所有屬性中, 若有一個屬性能唯一識別該實體中的實例, 則我們稱之為鍵 (Key) 屬性。

例如以學號屬性就能識別學生實例, 或利用訂單編號 + 產品編號來識別訂單實例。學號及訂單編號 + 產品編號都是鍵屬性。

若為鍵屬性, 在實體 - 關係圖中會在屬性名稱底下畫 “底線” 表示。

Page 24: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

24

鍵屬性 (Key Attribute)

例如書籍實體中的書籍編號屬性:

Page 25: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

25

弱實體中的識別屬性

在一般實體中, 我們會選擇一個唯一識別該實體的屬性做為鍵屬性;

同理, 在弱實體中, 亦會選擇一個屬性做為該弱實體中各個實例的識別屬性, 如下圖所示:

Page 26: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

26

推導屬性 (Derived Attribute)

實體中若某些屬性可由其他屬性推算出而來,

則這些屬性我們稱之為推導屬性 (Derived

Attribute)。

在實體 - 關係圖中, 以 "虛線" 的橢圓形來表示:

Page 27: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

27

複合屬性 (Composite Attribute)

若某些屬性又可再細分為多個小屬性, 我們稱這些屬性為複合屬性 (Composite Attribute)。例如姓名屬性就可再細分為姓氏及名字兩種屬性。

在實體 - 關係圖中, 其表示方式如下:

Page 28: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

28

多值屬性 (Multi-Valued Attribute)

當一個屬性具有一個以上的值時, 我們稱為多值屬性。

在實體 - 關係圖中以 "雙橢圓形" 來表示:

Page 29: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

29

10-3 擴充實體 - 關係模型

擴充實體 - 關係模型 (Extended Entity-

Relationship Model, 簡稱 EER Model) 是實體- 關係模型的擴充, 除了包含前述實體 - 關係模型的概念外, 還加入了超類型和子類型的觀念。

Page 30: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

30

超類型 (Super Type) /子類型 (Sub Type) 的關聯 在設計資料庫的過程中, 其實實體並不如想像

中單純。因為有時實體還可依據某些特性上的差異, 再細分為更多的實體。

例如圖書公司的員工, 還必須區分出哪些員工是寫作人員、哪些是美編人員、哪些是銷售人員...等。因此, 必須要利用超類型 (Super Type)

和子類型 (Sub Type) 的觀念來操作。

如下圖所示:

Page 31: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

31

超類型 (Super Type) /子類型 (Sub Type) 的關聯

在員工實體中, 依照職務上的特殊性再區分為寫作人員、美編人員及銷售人員等實體。

員工實體就是超類型, 而寫作人員、美編人員及銷售人員就是員工實體的子類型。

Page 32: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

32

什麼時候會運用到超類型 /子類型的關聯 我們在設計資料庫的時後, 可能會因為下列因

素而採用超類型 / 子類型的觀念:

在一個實體集合中, 可能某些實體具有特殊的屬性, 而我們必須要將它們和其他實體做區別, 此時就必須運用到超類型和子類型。

例如健身俱樂部的客戶實體, 又區分了一般會員及 VIP 會員, 主要是在 VIP 會員實體中具有特殊的屬性-是否可以到俱樂部所有的分部使用, 而一般會員因為僅限於特定的一家分店內使用, 故沒有這個屬性。

Page 33: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

33

什麼時候會運用到超類型 / 子類型的關聯

可能某些關係只關聯到一個實體集合中的某些實體, 此時就必須運用到超類型和子類型。

例如健身俱樂部開設了新的 SPA 水療、芳療室...等設施, 而這些設施僅限 VIP 會員使用, 此時便需要在客戶實體中細分出 VIP 會員實體, 然後再將它和設施建立關係。

Page 34: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

34

擴充實體 - 關係模型的屬性繼承關係

在擴充實體 - 關係模型中, 有一個非常重要的觀念, 那就是繼承。

因為子類型中的任一實例都是由超類型再細分出來, 所以一定也屬於超類型的實例之一。

因此, 超類型的屬性會被子類型繼承, 也就是說子類型的實例除了本身的特殊屬性外, 還會包括超類型的所有屬性。

例如在圖書公司的員工範例中:

Page 35: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

35

擴充實體 - 關係模型的屬性繼承關係

Page 36: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

36

特殊化 (Specialization)

將員工實體依照其特殊特性, 細分為寫作人員、美編人員及銷售人員實體的過程, 我們稱為特殊化 (Specialization)。

在實體 - 關係圖中, 我們會將此種關係表示如下:

Page 37: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

37

歸納化 (Generalization)

在圖書公司的員工實體例子中, 我們是利用實體中部份相異的特性, 區分出許多子類型。

但反過來, 我們亦可將許多實體中共同的特性集合起來, 合成一個超類型。

例如我們可將大學生、中學生及小學生等子類型中相同的特性抽出來 (例如姓名、年齡、地址...), 歸納成一個學生超類型。

這種處理過程, 我們稱為歸納化(Generalization)。

Page 38: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

38

歸納化 (Generalization)

特殊化和歸納化最大的差別在於前者強調一個實體類型中不同的特性。而後者是強調多個實體中的共同特性。

Page 39: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

39

子類型的 disjoint 與 overlap 關係

在特殊化的過程中, 依照實體在子類型中的隸屬關係, 還可區分為 disjoint (不相交) 與overlap (重疊) 的關係。

Page 40: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

40

子類型的 disjoint 關係

在 disjoint 的關係中, 所有的實例最多都只能隸屬於一個子類型。

例如我們將某大學的學生實體區分為大學生及研究生兩種子類型, 被歸類到其中一個子類型的學生, 就不可能再屬於其它的子類型, 意即不是大學生就是研究生, 不可能出現既是大學生又是研究生的情形。

Page 41: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

41

子類型的 disjoint 關係

在實體 - 關係圖中, 我們以英文字母 "d" 來表示disjoint 關係:

Page 42: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

42

子類型的 overlap 關係

在 overlap 的關係中, 子類型中的實例可包含在一個以上的子類型中。

例如我們簡單將某房地產公司的客戶實體再細分為買屋者及租屋者實體, 但是有可能某些客戶既屬於買屋者又屬於租屋者實體。

Page 43: (E-R Model)spaces.isu.edu.tw/upload/19225/0/news/postfile_308.pdf · 關係圖(Entity-Relationship Diagram)

43

子類型的 overlap 關係

在實體 - 關係圖中, 我們以英文字母 "o" 來表示overlap 關係: