E-R圖

E-R圖

描述現實世界的概念模型
E-R圖也稱實體-聯系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯系的方法,用來描述現實世界的概念模型。它是描述現實世界關系概念模型的有效方法。是表示概念關系模型的一種方式。用“矩形框”表示實體型,矩形框内寫明實體名稱;用“橢圓圖框”或圓角矩形表示實體的屬性,并用“實心線段”将其與相應關系的“實體型”連接起來;用”菱形框“表示實體型之間的聯系成因,在菱形框内寫明聯系名,并用”實心線段“分别與有關實體型連接起來,同時在”實心線段“旁标上聯系的類型(1:1,1:n或m:n)。[1]
  • 中文名:實體-聯系圖
  • 英文名:Entity Relationship Diagram
  • 簡稱:E-R圖
  • 類别:概念模型
  • 提出者:Peter Chen(陳品山)
  • 提出時間:1976年

模型曆史

ER模型最早由Peter Chen于1976年提出,它在數據庫設計領域得到了廣泛的認同,但很少用作實際數據庫管理系統的數據模型。即使對SXL-92數據庫來說,設計好的數據庫也是具有挑戰性的。它們可以在許多關于數據庫設計的文獻中找到,比如Toby Teorsey的着作(1994)。

大部分數據庫設計産品使用實體-聯系模型(ER模型)幫助用戶進行數據庫設計。ER數據庫設計工具提供了一個“方框與箭頭”的繪圖工具,幫助用戶建立ER圖來描繪數據。

實體聯系模型,實體關系模型或實體聯系模式圖(ERD)是由美籍華裔計算機科學家陳品山(Peter Chen)發明,是概念數據模型的高層描述所使用的數據模型或模式圖,它為表述這種實體聯系模式圖形式的數據模型提供了圖形符号。這種數據模型典型的用在信息系統設計的第一階段;比如它們在需求分析階段用來描述信息需求和/或要存儲在數據庫中的信息的類型。但是數據建模技術可以用來描述特定論域(就是感興趣的區域)的任何本體(就是對使用的術語和它們的聯系的概述和分類)。在基于數據庫的信息系統設計的情況下,在後面的階段(通常叫做邏輯設計),概念模型要映射到邏輯模型如關系模型上;它依次要在物理設計期間映射到物理模型上。注意,有時這兩個階段被一起稱為"物理設計"。

方法

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

成分

在ER圖中有如下四個成分:

矩形框:表示實體,在框中記入實體名。

菱形框:表示聯系,在框中記入聯系名。

橢圓形框:表示實體或聯系的屬性,将屬性名記入框中。對于主屬性名,則在其名稱下劃一下劃線。

連線:實體與屬性之間;實體與聯系之間;聯系與屬性之間用直線相連,并在直線上标注聯系的類型。(對于一對一聯系,要在兩個實體連線方向各寫1;對于一對多聯系,要在一的一方寫1,多的一方寫N;對于多對多關系,則要在兩個實體連線方向各寫N,M。)

構成要素

構成E-R圖的基本要素是實體型、屬性和聯系,其表示方法為:

實體型(Entity):具有相同屬性的實體具有相同的特征和性質,用實體名及其屬性名集合來抽象和刻畫同類實體;在E-R圖中用矩形表示,矩形框内寫明實體名;比如學生張三豐、學生李尋歡都是實體。如果是弱實體的話,在矩形外面再套實線矩形。

屬性(Attribute):實體所具有的某一特性,一個實體可由若幹個屬性來刻畫。在E-R圖中用橢圓形表示,并用無向邊将其與相應的實體連接起來;比如學生的姓名、學号、性别、都是屬性。如果是多值屬性的話,再橢圓形外面再套實線橢圓。如果是派生屬性則用虛線橢圓表示。

聯系(Relationship):聯系也稱關系,信息世界中反映實體内部或實體之間的聯系。實體内部的聯系通常是指組成實體的各屬性之間的聯系;實體之間的聯系通常是指不同實體集之間的聯系。在E-R圖中用菱形表示,菱形框内寫明聯系名,并用無向邊分别與有關實體連接起來,同時在無向邊旁标上聯系的類型(1:1,1:n或m:n)。比如老師給學生授課存在授課關系,學生選課存在選課關系。如果是弱實體的聯系則在菱形外面再套菱形。

聯系可分為以下3種類型:

一對一聯系(1∶1)

例如,一個部門有一個經理,而每個經理隻在一個部門任職,則部門與經理的聯系是一對一的。

一對多聯系(1∶N)

例如,某校教師與課程之間存在一對多的聯系“教”,即每位教師可以教多門課程,但是每門課程隻能由一位教師來教

多對多聯系(M∶N)

例如,圖1表示學生與課程間的聯系(“學”)是多對多的,即一個學生可以學多門課程,而每門課程可以有多個學生來學。聯系也可能有屬性。例如,學生“學”某門課程所取得的成績,既不是學生的屬性也不是課程的屬性。由于“成績”既依賴于某名特定的學生又依賴于某門特定的課程,所以它是學生與課程之間的聯系“學”的屬性。

一般性約束

實體-聯系數據模型中的聯系型,存在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具有多對多聯系

例如,表示學生與課程間的聯系“選修 ”是多對多的,即一個學生可以學多門課程,而每門課程可以有多個學生來學。聯系也可能有屬性。例如,學生“ 選修” 某門課程所取得的成績,既不是學生的屬性也不是課程的屬性。由于“ 成績” 既依賴于某名特定的學生又依賴于某門特定的課程,所以它是學生與課程之間的聯系“ 選修”的屬性。

實際上,一對一聯系是一對多聯系的特例,而一對多聯系又是多對多聯系的特例。 [2]  聯系是随着數據庫語義而改變的,假如有如下3種語義規定:

例如,一個部門有一個經理,而每個經理隻在一個部門任職,則部門與經理的聯系是一對一的。

一個員工可以同時是多個部門的經理,而一個部門隻能有一個經理,則這種規定下“員工”與“部門”之間的“管理”聯系就是1:n的聯系了。

一個員工可以同時在多個部門工作,而一個部門有多個員工在其中工作,則“員工”與“部門”的“工作”聯系為m:n聯系。

弱實體

弱實體(weak entity)是一種數據庫系統術語。其定義為一個實體對于另一個實體(一般為強實體,也可以是依賴于其他強實體的弱實體)具有很強的依賴聯系,而且該實體主鍵的一部分或全部從其強實體(或者對應的弱實體依賴的強實體)中獲得,則稱該實體為弱實體。

作圖步驟

确定所有的實體集合。

選擇實體集應包含的屬性。

确定實體集之間的聯系。

确定實體集的關鍵字,用下劃線在屬性上表明關鍵字的屬性組合。

确定聯系的類型,在用線将表示聯系的菱形框聯系到實體集時,在線旁注明是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、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圖設計的重點。

上一篇:宜興市網上家長學校

下一篇:學習時報

相關詞條

相關搜索

其它詞條