370 likes | 594 Views
第一章 實體關聯模型. 課前指引 實體關聯模型 (Entity Relationship Model 或 E-R Model) ,是最接近模擬真實世界現象之一種模型。在我們周圍有許多物件 (Objects) 或稱實體 (Entities) 中,物件與物件之間有著某些必然的關係 (Relationship) 。我們以此思維方向,架構出真實世界之形態,作為資料在資料庫中的一種模型。本章內容將提供我們在應用或設計資料庫時,有一幅邏輯思維之架構圖。. 章節大綱. 1-1 簡介. 1-4 索引鍵. 1-2 概念. 1-5 實體關聯圖. 1-3 限制.
E N D
第一章 實體關聯模型 課前指引 實體關聯模型(Entity Relationship Model 或E-R Model),是最接近模擬真實世界現象之一種模型。在我們周圍有許多物件(Objects) 或稱實體(Entities) 中,物件與物件之間有著某些必然的關係(Relationship)。我們以此思維方向,架構出真實世界之形態,作為資料在資料庫中的一種模型。本章內容將提供我們在應用或設計資料庫時,有一幅邏輯思維之架構圖。
章節大綱 1-1 簡介 1-4 索引鍵 1-2 概念 1-5 實體關聯圖 1-3 限制 1-6 設計觀點 備註:可依進度點選小節
1-1 簡介 • 實體關聯模型(Entity Relationship Model 或E-R Model),是最接近模擬真實世界現象之一種模型。在我們周圍有許多物件(Objects) 或稱實體(Entities) 中,物件與物件之間有著某些必然的關係(Relationship)。我們以此思維方向,架構出真實世界之形態,作為資料在資料庫中的一種模型。
1-2 概念 • 為了完整且清楚地模擬真實世界,我們建立實體關聯資料模型(E-R Data Model),其中有三個組成元件: • 實體集(Entity Sets)、 • 屬性欄位(Attributes)、 • 關聯集(Relationship Sets)。
1-2 概念 • 實體集(Entity Sets) • 在真實世界(Real World) 中,實體(Entity) 是一個物件(Object);在資料庫(Database)中,實體(Entity) 是一組結構型態的資料(Structure Data)。 • 如圖(a) 為一組銀行客戶基本資料實體,包括姓名(Name)、社安碼(Social Security Number)、街名(Street)、與城市(City);圖(b) 為銀行帳戶實體,包括帳號(Account)、與餘額(Balance)。 (a) (b)
1-2 概念 • 實體集(Entity Sets) • 實體集(Entity Set) 是同型實體之集合,如圖(Customer Set) 為銀行客戶基本資料實體集;圖(Account Set) 為銀行帳戶實體集。
1-2 概念 • 屬性欄位(Attributes) • 屬性欄位(Attribute) 是組成實體結構項目之描述(Description),如圖-實體Customer之結構屬性欄位(Attributes) 有姓名(Name)、社安碼(Social Security Number)、街名(Street)、與城市(City)。
1-2 概念 • 屬性欄位(Attributes) • 模型的屬性欄位(Attributes),可區隔為: • (1)單純欄位(Simple) 或組合欄位(Composition)、 • (2)單值欄位(Single Value) 或多值欄位(Multi Values)、 • (3)原始值欄位(Original Value) 或計算值欄位(Derived Value)。
1-2 概念 • 屬性欄位(Attributes) • 模型的屬性欄位(Attributes),可區隔為: • (1)單純欄位(Simple) 或組合欄位(Composition):屬性欄位定義為不可分割者。組合型如圖1-2-2-2,屬性欄位由多個次屬性欄位(Sub Attributes) 組合而成。如本例Name = (First-name, Middle-name, Last-name)。
1-2 概念 • 屬性欄位(Attributes) • 模型的屬性欄位(Attributes),可區隔為: • (2)單值欄位(Single Value) 或多值欄位(Multi Values):圖(a) 實體集Cst之客戶Oliver有一個對應的銀行帳戶實體Acnt。圖(b) Acnt僅有一個值{(123, 1000)} 是謂 “單值屬性欄位(Single Value Attribute)”。圖(c) Acnt有多個值{(123, 1000), (456, 2000), (789, 3000)} 是謂 “多值屬性欄位(Multi Value Attribute)”。
1-2 概念 • 屬性欄位(Attributes) • 模型的屬性欄位(Attributes),可區隔為: • (2)單值欄位(Single Value) 或多值欄位(Multi Values)
1-2 概念 • 屬性欄位(Attributes) • 模型的屬性欄位(Attributes),可區隔為: • (3)原始值欄位(Original Value) 或計算值欄位(Derived Value):如圖1-2-2-4,生日(Birth Day) 是謂 “原始值屬性欄位(Original Value Attribute)”;年齡(Age) 是由Birth Day 推算而得,每年有不同的值,是謂 “計算值屬性欄位(Derived Value Attribute)”。
1-2 概念 • 關聯集(Relationship Sets) • 實體(Entity) 與實體(Entities) 間之連接關係(Associates) 是謂 “關聯(Relationship)”,如圖1-2-3-1,令ec為實體Customer、ea為實體Account,則關聯r = (ec, ea)。
1-2 概念 • 關聯集(Relationship Sets) • 同類型之關聯(Association) 是謂關聯集(Relationship Set),如圖1-2-3-2,有客戶集Customer Set為Ec、帳戶集Account Set為Ea,則關聯集為R = (Ec, Ea)。
1-2 概念 • 關聯集(Relationship Sets) • 為了得以更清楚的模擬真實世界,我們以 “實體關聯圖(Entity Relationship Diagram)” 表示(如圖1-2-3-3)。其中實體集Customer與Account因連接而產生關聯集CustAcnt。
1-3 限制 • 我們可對E-R模型提出一些限制定義(Constraints Definition),使在某些環境下的資料形態得以符合該環境限制的要求。常用的定義限制有: • 對映限制(Mapping Cardinalities)、 • 參與限制(Participation Constraints)。
1-3 限制 • 對映限制(Mapping Cardinalities) • 實體(Entity) 與實體(Entities) 間對應連線的要求是謂 “對映限制(Mapping Cardinalities)”,亦即是其間關聯集之定義(Definition of Relationship Set),如圖1-3-1。常用的對映限制有: • 一對一(One to One)如圖(a):A中的任一實體可最多連接B中的一個實體;而B中的任一實體最多可連接A中的一個實體。 • 一對多(One to Many)圖(b):A中的任一實體可連接B中的任意數量實體;而B中的任一實體最多可連接A中的一個實體。
1-3 限制 • 對映限制(Mapping Cardinalities) • 多對多(Many to Many)圖(c):A中的任一實體可連接B中的任意數量實體;且B中的任一實體亦可連接A中的任意數量實體。 • 多對一(Many to One)圖(d):A中的任一實體最多可連接B中的一個實體;而B中的任一實體可連接A中的任意數量實體。
1-3 限制 • 對映限制(Mapping Cardinalities)
1-3 限制 • 參與限制(Participation Constraints) • 在實體集(Entity Set)中,各實體間連線的程度是謂 “參與限制(Participation Constraints)”,可分為 • 完全參與(Total Participation):是指每一個實體至少有一條連線與其他實體連接(如圖1-3-1);部份參與(Partial Participation) • 部份參與(Partial Participation):是指有一些實體未能與其他實體建立連接(如圖1-3-2),其中圖(a)之a2、b2;圖(b)之b3;圖(c)之a2;圖(d)之a1。
1-3 限制 • 參與限制(Participation Constraints)
1-4 索引鍵 • 在一個實體集(Entity Set) 中有多個實體(Entities) 存在,如何辨識或區隔其中每一個實體,是資料庫重要執行項目之一。我們以索引鍵(Key) 為辨識實體的依據,於實體集,我們認定一個具有 “獨一(Unique)” 特性的屬性欄位(Attributes) 作為索引鍵,用以區隔各個實體。
1-4 索引鍵 • 實體集索引(Entity Sets and Keys) • 於實體集(Entity Sets),我們設定索引鍵(Keys) 用以辨識各個實體(Entities),依範圍的大小可分為: • 超級索引鍵(Super Keys)、 • 候選索引鍵(Candidate Keys)、 • 主索引鍵(Primary Key)。
1-4 索引鍵 • 關聯集索引(Relationship Sets and Keys) • 實體(Entity) 與實體(Entities) 間之連接(Associates) 是謂 “關聯(Relationship)”;同類型之關聯(Association) 是謂關聯集(Relationship Set)。 • 實體集Customer與Account之關聯集是CustAcnt。如果關聯集無任何屬性欄位(Attributes) 且為一對一連接(One to One),則其主索引鍵摘取自兩個關聯實體主索引鍵之組合,如本例CustAcnt之主索引鍵為Social Security Number(SSN)、Account Number、或兩者之組合。
1-5 實體關聯圖 • 實體關聯圖(E-R Diagram) 可對應描述一個資料庫的架構,且可導覽我們的邏輯思考方向,圖之要件包括: • 方塊(Rectangles):表示實體集(Entity Sets)。 • 橢圓(Ellipses):表示屬性欄位集(Attribute Sets)。 • 菱形(Diamonds):表示關聯集(Relationship Sets)。 • 連線(Lines):連接實體集、屬性欄位集、關聯集等,以建立所屬關係。 • 箭頭(Arrow):表示單一數量的一端。
1-5 實體關聯圖 • 實體關聯圖 • 1、一對一關聯(One to One):如圖Customer Set中的任一實體可經過關聯集CustAcnt Set最多連接Account Set中的一個實體;而Account中的任一實體經過CustAcnt最多可連接Customer中的一個實體。Customer的主索引鍵為SSN,Account的主索引鍵為Account Number,CustAcnt的主索引鍵是SSN 或是Account Number。
1-5 實體關聯圖 • 實體關聯圖 • 一對多關聯(One to Many):如圖Customer Set中的任一實體可經過關聯集CustAcnt Set連接Account Set中的任意數量實體;而Account中的任一實體經過關聯集CustAcnt Set最多連接Customer Set中的一個實體。Customer的主索引鍵為SSN,Account的主索引鍵為Account Number,CustAcnt的主索引鍵為SSN。
1-5 實體關聯圖 • 實體關聯圖 • 多對一關聯(One to One):如圖Customer Set中的任一實體可經過關聯集CustAcnt Set最多連接Account Set中的一個實體;而Account Set中的任一實體可經過關聯集CustAcnt Set連接Customer Set中的任意數量實體。Customer的主索引鍵為SSN,Account的主索引鍵為Account Number,CustAcnt的主索引鍵為Account Number。
1-5 實體關聯圖 • 實體關聯圖 • 多對多關聯(One to One):如圖,Customer Set中的任一實體可經過關聯集CustAcnt Set連接Account Set中的任意數量實體;且Account Set中的任一實體可經過關聯集CustAcnt Set連接Customer Set中的任意數量實體。Customer的主索引鍵為SSN,Account的主索引鍵為Account Number,CustAcnt的主索引鍵為SSN和Account Number之組合。
1-6 設計觀點(Design Issues) • 實體(Entities)與屬性欄位(Attributes) • 當我們在設計一個實體關聯模型時,往往會陷入長考,一個物件應設計成實體(Entity) 呢?還是應設計成屬性欄位(Attribute)? • 如圖,本例如果將Telephone設計成實體,則一位客戶可能擁有多具電話。
1-6 設計觀點(Design Issues) • 實體(Entities)與屬性欄位(Attributes) • 如圖,本例如果將Telephone設計成屬性欄位,則一位客戶僅能擁有一具電話。
1-6 設計觀點(Design Issues) • 實體(Entities)與屬性欄位(Attributes) • 上述兩種方法中何者較佳?事實上沒有當然的答案,要視當時的需求而定。一般來言,(1)設計成屬性欄位,其優點是設計較簡單,付出執行代價較低;缺點是不具靈活性,不適用於變化多或需相容的環境。(2)設計成實體,其優點是具靈活性,適用於變化多或需相容的環境;缺點是設計較複雜,付出執行代價較高。
1-6 設計觀點(Design Issues) • 關聯集(Relationship Set) 與屬性欄位(Attributes) • 關聯集原本用於實體與實體間之連接,如果在其中加入屬性欄位,將使關聯圖能表達出更深切之含義。 • 如圖,於關聯集CustAcnt加置屬性欄位Date,將可表達某時間之存取餘額,使資料更為生動。
1-6 設計觀點(Design Issues) • 二元(Binary)與多元(n-ary)關聯集(Relationship Set) • 如果其中一個實體Ei與其他任何實體無關係意義,則該多元關聯集亦將隨之無意義,應將Ei分隔處理。
1-6 設計觀點(Design Issues) • 二元(Binary)與多元(n-ary)關聯集 • 如果其中一個實體Ei與其他任何實體無關係意義,則該多元關聯集亦將隨之無意義,應將Ei分隔處理。 • 如圖,表達某客戶在某分行某帳戶之存款,實體集Customer、Account、Branch彼此就有密切之關係意義。
本章結束 Q&A討論時間