E-R圖

實體-聯繫圖

E-R圖也稱實體-聯繫圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯繫的方法,用來描述現實世界的概念模型實體型(Entity):具有相同屬性的實體具有相同的特徵和性質,用實體名及其屬性名集合來抽象和刻畫同類實體;在E-R圖中用矩形表示,矩形框內寫明實體名;比如學生張三丰、學生李尋歡都是實體。由於成績既依賴於某名特定的學生又依賴於某門特定的課程,所以它是學生與課程之間的聯繫學的屬性。逐一設計分E-R圖每個局部應用都對應了一組數據流圖,局部應用涉及的數據都已經收集在數據字典中了。

方法


E-R方法是“實體-聯繫方法”(Entity-Relationship Approach)的簡稱。它是描述現實世界概念結構模型的有效方法。是表示概念模型的一種方式,用矩形表示實體型,矩形框內寫明實體名;用橢圓表示實體的屬性,並用無向邊將其與相應的實體型連接起來;用菱形表示實體型之間的聯繫,在菱形框內寫明聯繫名,並用無向邊分別與有關實體型連接起來,同時在無向邊旁標上聯繫的類型(1:1,1:n或m:n)。

成分


E-R圖
E-R圖
ER圖中有如下四個成分:
矩形框:表示實體,在框中記入實體名。
菱形框:表示聯繫,在框中記入聯繫名。
橢圓形框:表示實體或聯繫的屬性,將屬性名記入框中。對於主屬性名,則在其名稱下劃一下劃線。
連線:實體與屬性之間;實體與聯繫之間;聯繫與屬性之間用直線相連,並在直線上標註聯繫的類型。(對於一對一聯繫,要在兩個實體連線方向各寫1;對於一對多聯繫,要在一的一方寫1,多的一方寫N;對於多對多關係,則要在兩個實體連線方向各寫N,M。)

模型歷史


ER模型最早由Peter Chen於1976年提出,它在資料庫設計領域得到了廣泛的認同,但很少用作實際資料庫管理系統的數據模型。即使對SXL-92資料庫來說,設計好的資料庫也是具有挑戰性的。它們可以在許多關於資料庫設計的文獻中找到,比如Toby Teorsey 的著作(1994 )。
大部分資料庫設計產品使用實體-聯繫模型(ER模型)幫助用戶進行資料庫設計。ER資料庫設計工具提供了一個“方框與箭頭”的繪圖工具,幫助用戶建立ER圖來描繪數據。
實體聯繫模型,實體關係模型或實體聯繫模式圖(ERD)是由美籍華裔計算機科學家陳品山(Peter Chen)發明,是概念數據模型的高層描述所使用的數據模型或模式圖,它為表述這種實體聯繫模式圖形式的數據模型提供了圖形符號。這種數據模型典型的用在信息系統設計的第一階段;比如它們在需求分析階段用來描述信息需求和/或要存儲在資料庫中的信息的類型。但是數據建模技術可以用來描述特定論域(就是感興趣的區域)的任何本體(就是對使用的術語和它們的聯繫的概述和分類)。在基於資料庫的信息系統設計的情況下,在後面的階段(通常叫做邏輯設計),概念模型要映射到邏輯模型如關係模型上;它依次要在物理設計期間映射到物理模型上。注意,有時這兩個階段被一起稱為"物理設計"。

構成要素


構成E-R圖的基本要素是實體型、屬性和聯繫,其表示方法為:
實體型(Entity):如果是弱實體的話,在矩形外面再套實線矩形。
屬性(Attribute):實體所具有的某一特性,一個實體可由若干個屬性來刻畫。在E-R圖中用橢圓形表示,並用無向邊將其與相應的實體連接起來;比如學生的姓名、學號、性別、都是屬性。如果是多值屬性的話,再橢圓形外面再套實線橢圓。如果是派生屬性則用虛線橢圓表示。
聯繫(Relationship):聯繫也稱關係,信息世界中反映實體內部或實體之間的聯繫。實體內部的聯繫通常是指組成實體的各屬性之間的聯繫;實體之間的聯繫通常是指不同實體集之間的聯繫。在E-R圖中用菱形表示,菱形框內寫明聯繫名,並用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯繫的類型(1 : 1,1 : n或m : n)。比如老師給學生授課存在授課關係,學生選課存在選課關係。如果是弱實體的聯繫則在菱形外面再套菱形。
聯繫可分為以下3種類型:
(1) 一對一聯繫(1∶1)
例如,一個部門有一個經理,而每個經理只在一個部門任職,則部門與經理的聯繫是一對一的。
(2) 一對多聯繫(1∶N)
例如,某校教師與課程之間存在一對多的聯繫“教”,即每位教師可以教多門課程,但是每門課程只能由一位教師來教
(3) 多對多聯繫(M∶N)
例如,圖1表示學生與課程間的聯繫(“學”)是多對多的,即一個學生可以學多門課程,而每門課程可以有多個學生來學。聯繫也可能有屬性。例如,學生“學”某門課程所取得的成績,既不是學生的屬性也不是課程的屬性。由於“成績”既依賴於某名特定的學生又依賴於某門特定的課程,所以它是學生與課程之間的聯繫“學”的屬性。

作圖步驟


⑴確定所有的實體集合。
⑵選擇實體集應包含的屬性。
⑶確定實體集之間的聯繫。
⑷確定實體集的關鍵字,用下劃線在屬性上表明關鍵字的屬性組合。
⑸確定聯繫的類型,在用線將表示聯繫的菱形框聯繫到實體集時,在線旁註明是1或n(多)來表示聯繫的類型。

設計步驟


調查分析

⑴選擇局部應用在需求分析階段,通過對應用環境和要求進行詳盡的調查分析,用多層數據流圖和數據字典描述了整個系統。
設計分E-R圖的第一步,就是要根據系統的具體情況,在多層的數據流圖中選擇一個適當層次的(經驗很重要)數據流圖,讓這組圖中每一部分對應一個局部應用,我們即可以以這一層次的數據流圖為出發點,設計分E-R圖。一般而言,中層的數據流圖能較好地反映系統中各局部應用的子系統組成,因此人們往往以中層數據流圖作為設計分E-R圖的依據
⑵逐一設計分E-R圖每個局部應用都對應了一組數據流圖,局部應用涉及的數據都已經收集在數據字典中了。現在就是要將這些數據從數據字典中抽取出來,參照數據流圖,<1> 標定局部應用中的實體, <2> 實體的屬性、標識實體的碼,<3> 確定實體之間的聯繫及其類型(1:1、1:n、m:n)。
<1> 標定局部應用中的實體現實世界中一組具有某些共同特性和行為的對象就可以抽象為一個實體。對象和實體之間是"is member of "的關係。例如在學校環境中,可以把張三、李四、王五等對象抽象為學生實體。對象類型的組成成分可以抽象為實體的屬性。組成成分與對象類型之間是"is part of "的關係。例如學號、姓名、專業、年級等可以抽象為學生實體的屬性。其中學號為標識學生實體的碼。
<2> 實體的屬性、標識實體的碼實際上實體與屬性是相對而言的,很難有截然劃分的界限。同一事物,在一種應用環境中作為"屬性 ",在另一種應用環境中就必須作為"實體 "。一般說來,在給定的應用環境中:⑴屬性不能再具有需要描述的性質。即屬性必須是不可分的數據項。⑵屬性不能與其他實體具有聯繫。聯繫只發生在實體之間。
<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、E2E3三者之間有聯繫。解決方法是根據應用的語義對實體聯繫的類型進行綜合或調整。

修改重構

生成基本E-R圖分E-R圖經過合併生成的是初步E-R圖。之所以稱其為初步E-R圖,是因為其中可能存在冗餘的數據和冗餘的實體間聯繫,即存在可由基本數據導出的數據和可由其他聯繫導出的聯繫。冗餘數據和冗餘聯繫容易破壞資料庫的完整性,給資料庫維護增加困難,因此得到初步E-R圖后,還應當進一步檢查E-R圖中是否存在冗餘,如果存在,應設法予以消除。修改、重構初步E-R圖以消除冗餘,主要採用分析方法。除此外,還可以用規範化理論來消除冗餘。