模型歷史 ER模型最早由Peter Chen(
陳品山 )於1976年提出,它在
資料庫設計 領域得到了廣泛的認同,但很少用作實際
資料庫管理系統 的
數據模型 。即使對SXL-92資料庫來說,設計好的資料庫也是具有挑戰性的。它們可以在許多關於資料庫設計的文獻中找到,比如Toby Teorsey 的著作(1994 )。
大部分資料庫設計產品使用實體-聯繫模型(ER模型)幫助用戶進行資料庫設計。ER資料庫設計工具提供了 一個“方框與箭頭”的繪圖工具,幫助用戶建立ER圖來描繪數據。
實體聯繫模型,實體
關係模型 或實體聯繫模式圖(ERD)是由美籍華裔計算機科學家陳品山(Peter Chen)發明,是概念數據模型的高層描述所使用的數據模型或模式圖,它為表述這種實體聯繫模式圖形式的
數據模型 提供了圖形符號。這種數據模型典型的用在
信息系統 設計的第一階段;比如它們在
需求分析 階段用來描述信息需求和/或要存儲在資料庫中的信息的類型。但是數據建模技術可以用來描述特定論域(就是感興趣的區域)的任何本體(就是對使用的術語和它們的聯繫的概述和分類)。在基於資料庫的信息系統設計的情況下,在後面的階段(通常叫做邏輯設計),
概念模型 要映射到邏輯模型如
關係模型 上;它依次要在物理設計期間映射到物理模型上。注意,有時這兩個階段被一起稱為"物理設計"。
成分 在ER圖中有如下四個成分:
矩形框:表示實體,在框中記入實體名。
橢圓形框:表示實體或聯繫的屬性,將屬性名記入框中。對於
主屬性 名,則在其名稱下劃一下劃線。
連線:實體與屬性之間;實體與聯繫之間;聯繫與屬性之間用直線相連,並在直線上標註聯繫的類型。(對於一對一聯繫,要在兩個實體連線方向各寫1; 對於一對多聯繫,要在一的一方寫1,多的一方寫N;對於多對多關係,則要在兩個實體連線方向各寫N,M。)
構圖要素 構成E-R圖的3個基本要素是
實體型 、屬性和聯繫,其表示方法為:
實體 一般認為,客觀上可以相互區分的事物就是實體,實體可以是具體的人和物,也可以是抽象的概念與聯繫。關鍵在於一個實體能與另一個實體相區別,具有相同屬性的實體具有相同的特徵和性質。用實體名及其屬性名集合來抽象和刻畫同類實體
。 在E-R圖中用
矩形 表示,矩形框內寫明實體名;比如學生
張三 、學生李四都是實體。如果是
弱實體 的話,在矩形外面再套實線矩形。
屬性 實體所具有的某一特性,一個實體可由若干個屬性來刻畫。屬性不能脫離實體,屬性是相對實體而言的。在E-R圖中用橢圓形 表示,並用無向邊將其與相應的實體連線起來;比如學生的姓名、學號、性別、都是屬性。如果是多值屬性的話,在橢圓形外面再套實線橢圓。如果是派生屬性則用虛線橢圓表示。
聯繫 聯繫也稱關係,信息世界中反映實體內部或實體之間的關聯。實體內部的聯繫通常是指組成實體的各屬性之間的聯繫;實體之間的聯繫通常是指不同
實體集 之間的聯繫。在E-R圖中用
菱形 表示,菱形框內寫明聯繫名,並用無向邊分別與有關實體連線起來,同時在無向邊旁標上聯繫的類型(1 : 1,1 : n或m : n)。比如老師給學生授課存在授課關係,學生選課存在選課關係。如果是弱實體的聯繫則在菱形外面再套菱形。
一般性約束 實體-聯繫數據模型中的聯繫型,存在3種一般性約束:一對一約束(聯繫)、一對多約束(聯繫)和多對多約束(聯繫),它們用來描述實體集之間的數量約束:
(1) 一對一聯繫(1 ∶1)
對於兩個實體集A和B,若A中的每一個值在B中至多有一個實體值與之對應,反之亦然,則稱實體集A和B具有一對一的聯繫。
一個學校只有一個正校長,而一個校長只在一個學校中任職,則學校與校長之間具有一對一聯繫。
(2) 一對多聯繫(1 ∶N)
對於兩個實體集A和B,若A中的每一個值在B中有多個實體值與之對應,反之B中每一個實體值在A中至多有一個實體值與之對應,則稱實體集A和B具有一對多的聯繫。
例如,某校教師與課程之間存在一對多的聯繫“教”,即每位教師可以教多門課程,但是每門課程只能由一位教師來教。一個專業中有若干名學生,而每個學生只在一個專業中學習,則專業與學生之間具有一對多聯繫
(3) 多對多聯繫(M ∶N)
對於兩個實體集A和B,若A中每一個實體值在B中有多個實體值與之對應,反之亦然,則稱實體集A與實體集B具有多對多聯繫
例如,表示學生與課程間的聯繫“選修 ”是多對多的,即一個學生可以學多門課程,而每門課程可以有多個學生來學。聯繫也可能有屬性。例如,學生“ 選修” 某門課程所取得的成績,既不是學生的屬性也不是課程的屬性。由於“ 成績” 既依賴於某名特定的學生又依賴於某門特定的課程,所以它是學生與課程之間的聯繫“ 選修”的屬性。
實際上,一對一聯繫是一對多聯繫的特例,而一對多聯繫又是多對多聯繫的特例。聯繫是隨著資料庫語義而改變的,假如有如下3種語義規定:
例如,一個部門有一個經理,而每個經理只在一個部門任職,則部門與經理的聯繫是一對一的。
一個員工可以同時是多個部門的經理,而一個部門只能有一個經理,則這種規定下“員工”與“部門”之間的“管理”聯繫就是1:n的聯繫了。
一個員工可以同時在多個部門工作,而一個部門有多個員工在其中工作,則“員工”與“部門”的“工作”聯繫為m:n聯繫。
弱實體 弱實體(weak entity)是一種
資料庫系統 術語。其定義為一個實體對於另一個實體(一般為強實體,也可以是依賴於其他強實體的弱實體)具有很強的依賴聯繫,而且該實體主鍵的一部分或全部從其強實體(或者對應的弱實體依賴的強實體)中獲得,則稱該實體為弱實體。
作圖步驟 (1)確定所有的實體集合;
(2)選擇實體集應包含的屬性;
(3)確定實體集之間的聯繫;
(4)確定實體集的
關鍵字 ,用下劃線在屬性上表明關鍵字的屬性組合;
(5)確定聯繫的類型,在用線將表示聯繫的菱形框聯繫到實體集時,線上旁註明是1或n(多)來表示聯繫的類型。
設計步驟 調查分析 (1)選擇局部套用在需求分析階段,通過對套用環境和要求進行詳盡的調查分析,用多層數據流圖和數據字典描述了整個系統。
設計分E-R圖的第一步,就是要根據系統的具體情況,在多層的數據流圖中選擇一個適當層次的(經驗很重要)數據流圖,讓這組圖中每一部分對應一個局部套用,我們即可以以這一層次的數據流圖為出發點,設計分E-R圖。一般而言,中層的數據流圖能較好地反映系統中各局部套用的子系統組成,因此人們往往以中層數據流圖作為設計分E-R圖的依據。
(2)逐一設計分E-R圖每個局部套用都對應了一組數據流圖,局部套用涉及的數據都已經收集在數據字典中了。現就是要將這些數據從數據字典中抽取出來,參照數據流圖,<1> 標定局部套用中的實體, <2> 實體的屬性、標識實體的碼,<3> 確定實體之間的聯繫及其類型(1:1、1:n、m:n)。
下面是對<1>、<2>和<3>步驟的具體說明:
<1> 標定局部套用中的實體現實世界中一組具有某些共同特性和行為的對象就可以抽象為一個實體。對象和實體之間是"is member of "的關係。例如在學校環境中,可以把張三、
李四 、王五等對象抽象為學生實體。對象類型的組成成分可以抽象為實體的屬性。組成成分與對象類型之間是"is part of "的關係。例如學號、姓名、專業、年級等可以抽象為學生實體的屬性。其中學號為標識學生實體的碼。
<2> 實體的屬性、標識實體的碼實際上實體與屬性是相對而言的,很難有截然劃分的界限。同一事物,在一種套用環境中作為"屬性 ",在另一種套用環境中就必須作為"實體 "。一般說來,在給定的套用環境中:
a、屬性不能再具有需要描述的性質。即屬性必須是不可分的
數據項 。
b、屬性不能與其他實體具有聯繫。聯繫只發生在實體之間。
<3> 確定實體之間的聯繫及其類型(1:1、1:n、 m:n)。根據
需求分析 ,要考察實體之間是否存在聯繫,有無多餘聯繫。
合併生成 各分E-R圖之間的衝突主要有三類:屬性衝突、命名衝突和結構衝突。
1.屬性衝突 。
(1) 屬性域衝突,即屬性值的類型、取值範圍或取值集合不同。例如:屬性“零件號”有的定義為字元型,有的為數值型;
(2) 屬性取值單位衝突。例如:屬性“重量”有的以克為單位,有的以公斤為單位。
2.命名衝突 。
(1) 同名異義。不同意義對象相同名稱;
(2) 異名同義(一義多名)。同意義對象不相同名稱。例如:“項目”和“課題”。
3.結構衝突。
(1) 同一對象在不同套用中具有不同的抽象。例如"課程 "在某一局部套用中被當作實體,而在另一局部套用中則被當作屬性;
(2) 同一實體在不同局部視圖中所包含的屬性不完全相同,或者屬性的排列次序不完全相同;
(3) 實體之間的聯繫在不同局部視圖中呈現不同的類型。例如實體E1與E2在局部套用A中是多對多聯繫,而在局部套用B中是一對多聯繫;又如在局部套用X中E1與E2發生聯繫,而在局部套用Y中E1、E2、E3三者之間有聯繫。解決方法是根據套用的語義對實體聯繫的類型進行綜合或調整。
修改重構 生成基本E-R圖分E-R圖經過合併生成的是初步E-R圖。之所以稱其為初步E-R圖,是因為其中可能存在冗餘的數據和冗餘的實體間聯繫,即存在可由基本數據導出的數據和可由其他聯繫導出的聯繫。冗餘數據和冗餘聯繫容易破壞資料庫的完整性,給資料庫維護增加困難,因此得到初步E-R圖後,還應當進一步檢查E-R圖中是否存在冗餘,如果存在,應設法予以消除。修改、重構初步E-R圖以消除冗餘,主要採用分析方法。除此外,還可以用
規範化 理論來消除冗餘。
E-R圖的設計 E-R圖設計的正確與否取決於資料庫設計人員能否真正把握套用環境的業務流程以及在該業務流程中所涉及的各個客觀對象和他們之間發生的活動,這需要作準確深入的用戶需求分析。這些客觀對象如果需要記錄的話,就抽象為E-R圖中的
實體 (描述實體的眾多相關數據就抽象為實體的屬性,將具有相同屬性的眾多實體抽象為實體型)。它們之間發生的活動如果也需要記錄的話,就抽象為E-R圖中的聯繫,這是E-R圖設計的重點。