【第153期 June 5, 2010】
 

研發新視界

實體關係資料模型(Entity-Relationship Model)研究

作者/許至輝

[發表日期:2010/6/5]




概述

E-R Model的全名為Entity-Relationship Data Model(E-R Model)實體關係資料模型。為陳品山博士於西元1976提出的高階資料模組化模型。其應用價值對關聯式資料庫(Relational Database)架構設計、資料管理(Data Management)以及資料探勘(Data Mining)而言,是極其重要的理論基礎。

資料庫之於資訊相關領域,就像是頭腦之於人類一樣重要。我們將所吸收的資訊通通存在腦袋中,並做好分類管理;當面對各種情境時,便能迅速從大腦中取出過去大量的資訊對當下情境做出適當反應。因此一個系統穩不穩定、成不成功,和資料庫的設計有著絕對關係。

關聯式資料庫為目前使用率最高的資料庫系統,其概念主要是根據1970年任職於IBM的Dr. E.F. Codd所發表的論文”A Relational Model For Large Shared Data Banks”。關聯式資料模型最重要的就是講求如何有效儲存、處理甚至分析資料之間的關聯性(Relation),而關聯性的觀念便是以數學領域中的集合為基礎。

一個好的關聯性資料模型設計,必須滿足Codd所提出的正規化(1NF, 2NF, 3NF etc…)以符合完善的資料庫架構。藉由ER-Model來進行關聯性資料模型設計,再將其轉換為各資料表,便可輕鬆達到符合正規化的設計。

下圖一顯示一個簡化的資料庫設計過程描述。


《圖一》


在進行需求整理與分析後,接著就可採用高階資料模型來為資料庫建立概念綱要(Conceptual Schema)。我們將使用者對於資料的需求,包括資料型態、關係與限制的詳細描述,以高階資料模型所提供的概念來表達,也就是E-R Model。接下來將一一介紹ER-Model圖形所代表意義。

ER-Model介紹

接下來一一介紹ER-Model的成員。

所謂ER-Model主要就是由實體(Entity)和關係(Relationship)所構成的資料模型。下圖二中(a),(b)分別就是代表實體和關係的圖式。


《圖二》


實體可以作為對應於真實世界的物件集合,或是一個概念集合。而關係則作為對應於兩個至多個實體間的關係集合。舉例: 若要記錄有哪些人擁有哪些房地產的資料,則可用以下表示法來說明人和房地產之間的關係。


《圖三》


上圖三說明了人可以擁有房子的關係(或者反過來說房子被人擁有),我們用線將實體和關係連接起來,意味著連結的實體擁有著何種關係。附著於實體週遭的橢圓形,稱之為屬性(Attribute),其目的便是說明需要記錄下此實體的哪些資訊;屬性名稱利用底線來標示出可作為唯一性的屬性。而連接實體和關係的線下標示著N代表著一個人可以擁有不只一間房子,而且一間房子也不一定只被一個人擁有。若此關係需要有特別的資訊來辨別,亦可將屬性加註在關係圖上。

若要表示關聯性的實體皆屬於同一性質的物件或概念,則可利用遞迴式表示法來表達出資料間的關係。舉例: 父母與孩子的關係可用下面表示法(省略屬性)。


《圖四》


除了上面介紹的基本實體,還有一種特殊的實體稱為弱實體(Weak Entity)。如果一個實體沒有其唯一性,而需要依賴其它實體的存在,則使用弱實體表示之。舉例:假設一個縣市裡,每條路名都是唯一的,但同一條路名可能出現於多個縣市,此時可用下面表示法。


《圖五》


Enhanced ER-Model介紹

為了能夠更符合真實世界複雜的資料結構,需要利用類似繼承的概念來更有效率地表示資料模型。子類別(Subclass)實體和超類別(Superclass)實體即滿足了此需求,讓我們對實體可以做更詳細的分類。舉例: 建築物又可以分為商業建築或是住宅建築,可用下列表示法。


《圖六》


上圖六顯示了一個建築物實體,可以再細分為商業建築和住宅建築,其中子類別實體(Commercial, Residential)可繼承於超類別實體(Building)的屬性。填寫d符號的圓圈代表著兩個子類別實體為互斥的(disjoint),即若一棟建築物不可同時登記為商業用途又是住宅用途。假設上述情況是允許發生的,則可用填寫o符號的圓圈替代代表著可重疊(overlap)的子類別實體。

在某些情況,一個實體可以有兩個以上的超類別實體。舉例: 一間房子可以掛名於人,也可掛名於公司,可用下圖表示(省略屬性)。


《圖七》


上例表示出房子的擁有者,可能是人也可能是公司,或兩者都是。但Company實體和Person實體中的元素不一定要存在於Owner實體。因此可以說Owner是Company和Person聯集的子集合。

實例

接下來我們以ER-Model來表達出一個簡略的房地產資料庫。需求描述如下:

一、Land

  • 土地的資訊包括: 坪數、價格、擁有者、居住者。


  • 每一塊土地有唯一的地址,地址的規格為: 縣市、路名、號碼。


  • 一個縣市內,每條路都是唯一的。但同一條路名可以出現在兩個以上的縣市。


  • 一塊土地最多蓋一棟建築物。


  • 同一條路上的土地每坪價格都一樣。


二、Building

  • 建築物的資料包含: 地址、屋齡、坪數、擁有者。


  • 建築物有兩個種類: 住宅和商業。其中商業用建築物不能作為居住用。


  • 需要記錄住宅用建築的居住人資料。


三、Person

  • 人的資料包含: 身分證號或居留證號、名字、性別、出生年月日。


  • 配偶、小孩、父母可以繼承房地產。其中繼承的優先順序為: 配偶、小孩、父母。


下圖為符合上述需求所設計的ER-Model圖:


《圖八》


1.首先從Person實體圖討論起。因為考慮到房地產繼承人的需求,因此需要有家人之間的關係資訊,我們用一個實體表示所有的人,再利用兩個遞迴關係圖來記錄兩個人之間的關係。

2.接著討論Building區塊的實體圖。房子可分為住宅或商業用途,這邊不用一個屬性來辨別其用途,主要是因為若為住宅建築,需要記錄居住人是誰,但商業建築則不需要。因此較適當的做法是將Building實體特殊化成Residential和Commercial兩個實體。

3.另一個重點就是道路(Road),土地(Land)需要有道路作為地指來辨別其唯一性。因此土地必須是道路的弱實體。又因為同一個路名(但實際上不同一條路)可出現在不同縣市,因此將道路設計為County的弱實體。

最後,我們再把Land,Building,Person三大主體之間的關聯串起來就完成了此系統的資料庫結構規劃。

結論

由於E-R Model沒有包含任何實作的細節,所以通常較容易瞭解,並可用來與非技術性使用者做溝通也確保滿足所有使用者的需求。此外,也可以讓資料庫設計師更專注於系統資料的功能面,而非技術的細節。

參考文獻

‧Ramakrishnan, Gehrke. "DATABASE MANAGEMENT SYSTEMS" , third edition, McGRAW Hill

‧Peter Chen, "English Sentence Structure and Entity-Relationship Diagram." Information Sciences, Vol. 1, No. 1, Elsevier, May 1983, Pages 127-149