E-R圖樣例


 

基本知識

基本的ER模型包含三類元素:實體、關系、屬性。

實體(Entities):實體是首要的數據對象,常用於表示一個人、地方、某樣事物或某個事件。一個特定的實體被稱為實體實例(entity instance或entity occurrence)。實體用長方形框表示,實體的名稱標識在框內。一般名稱單詞的首字母大寫。

  關系(Relationships):關系表示一個或多個實體之間的聯系。關系依賴於實體,一般沒有物理概念上的存在。關系最常用來表示實體之間,一對一,一對多,多對多的對應。關系的構圖是一個菱形,關系的名稱一般為動詞。關系的端點聯系着角色(role)。一般情況下角色名可以省略,因為實體名和關系名已經能清楚的反應角色的概念,但有些情況下我們需標出角色名來避免歧義。

  屬性(Attributes):屬性為實體提供詳細的描述信息。一個特定實體的某個屬性被稱為屬性值。Employee實體的屬性可能有:emp-id, emp-name, emp-address, phone-no……。屬性一般以橢圓形表示,並與描述的實體連接。屬性可被分為兩類:標識符(identifiers),描述符(descriptors)。Identifiers可以唯一標識實體的一個實例(key),可以由多個屬性組成。ER圖中通過在屬性名下加上下划線來標識。多值屬性(multivalued attributes)用兩條線與實體連接,eg:hobbies屬性(一個人可能有多個hobby,如reading,movies…)。復合屬性(Complex attributes)本身還有其它屬性。

  辨別強實體與弱實體:強實體內部有唯一的標識符。弱實體(weak entities)的標識符來自於一個或多個其它強實體。弱實體用雙線長方形框表示,依賴於強實體而存在。

關系

 關系在ER模型中扮演了非常重要的角色。通過ER圖可以描述實體間關系的度、連通數、存在性信息。我們一一來解釋這些概念。首先我們來看一下關系在ER圖中的各種語義。

關系的度(Degree of a Relationship)

表示關系所關聯的實體數量。二元關系與三元關系的度分別為2和3,以此可以類推至n元。二元關系是最常見的關系。

一個Employee與另一個Employee之間的領導關系稱為二元回歸關系。如圖2中所示,Employee實體通過關系manages與自身連接。由於Employee在這一關系中扮演兩個角色,故標出了角色名(manager和subordinate)。

三元關系聯系三個實體。當二元關系無法准確描述關聯的語義時,就需要使用三元關系。我們來看下面這個例子,下圖(1)能反映出一個Employee在某個Project中使用了什么Skill。下圖(2)只能看出Employee有什么Skill,參與了哪些Project,但無法知道在某個Project中使用的特定Skill。

三元關系蘊含的語義

需要注意的是有些情況下會錯誤的定義三元關系。這些三元關系可分解為2個或3個二元關系,來達到化簡與語義的純凈。以后的博文中會進一步詳細討論三元關系。

一個實體可以參與到任意多個關系中。每個關系可以聯系任意多個元(實體),而且兩個實體之間也能有任意多個二元關系。

 

 關系的連通數(Connectivity of a Relationship)

表示關系所關聯的實例數量的約束。

連通數的值可以是“一”或“多”。“一”這一端,在ER圖中通過在實體與關系間標記“1”表示。“多”一端標記“N”表示。如圖2中關系連通數部分,“一”對“一”:Department is managed by Employee;“一”對“多”:Department has Employees;“多”對“多”:Employee may work on many Projects and each Project may have many Employees。

有些情況下最大連通數是確定的,可以用數值代替N。如:田徑隊隊員有12人。

 關系的屬性

關系也能有屬性。如下圖4所示,某員工參與某項目的起始日期,某員工在某項目中被分配的任務只有放在關系works-on上才有意義。

image

關系的屬性

需要注意的是關系的屬性一般出現在“多”對“多”的二元關系或三元關系上。一般“一”對“一”或“一”對“多”關系上不會放屬性(會引起歧義)。而且這些屬性可以移至一端的實體中。如下圖5所示,如果部門與員工(經理)之間是“一”對“一”關系,在建模中可能把start-date作為關系is managed by的屬性(表示被接管的時間),這個屬性可以移至Department或Employee實體中。

image

部門與經理之間的一對一管理關系

大家可以思考一下如果部門和經理之間是“多”對“多”關系,即交叉管理,那又會怎樣?

 關系中實體的存在性(Existence of an Entity in a Relationship)

關系中實體的存在性可以是強制的或可選的。當關系中的某一邊實體(無論是“一”或“多”端)必須總是存在,則該實體為強制的。反之,該實體為可選的。

在實體與關系之間的連接線上標識“0”來表示可選存在性。含義是最小連通數為0。

強制存在性表示最小連通數為1。在存在性不確定或不可知的情況下,默認最小連通數為1。

在ER圖中最大連通數顯式地標識在實體旁邊。如圖6所示,其蘊含的語義為一個Department有且只有一個Employee來當經理,一個Employee可能是一個Department的經理,也可能不是。

image

關系中實體的存在性

 

 

 

樣例參考

E-R 圖為數據庫概念設計中一種輔助表示方式。因為相對不是太復雜,所以不作過多說明,繪制的樣例有如下:

 

 

 

 

   

 

實例

 畫出一個數據庫的實體關系圖(ER圖),其中的實體有公司(companies),人(people), 專業人士(professionals)。

在公司中工作的人(people)是專業人士(professionals),因此, professionals和people間是ISA(is a)的關系。 或者,我們可以說professionals是從people派生出來的。

除了people的屬性,每個professional還有自己額外的屬性,如:級別,工作經驗等。

一個professional只能去一家公司上班(一般情況下是這樣), 而一家公司可以雇佣很多的professional。因此,它們之間是多對一的關系。 “工作(work for)"關系可以有如下屬性:加入公司的時間,工資等。 為什么這兩個屬性是關系的屬性而不是professional的屬性呢? 因為只有當我們將professional和companies聯系起來,才會有這些屬性, 或是說這些屬性才有意義。

一個人可以有多個電話號碼,因此電話號碼是一個多值屬性。

ER圖如下:

 

 

E-R圖的繪制類型

前文中使用的ER構圖方法是Peter Chen 1976年提出的。在現代數據庫設計領域,還有其他多種ER模型標記法。我們來看一下另一種使用較多的標記法,“crow’s-foot”(魚尾紋)標記法,並與前面介紹的標記法進行一個簡單對比。學習每一種標記法沒有意義。在你的組織中推廣應用一種標記法,使其成為大家共通的“語言”。

Chen式標記法與crow’s-foot標記法對照

 

至於E-R圖之后的詳細設計中設計到的范式化,可參考 數據庫設計Step by Step (10)——范式化

 

 

 

 

參考資料

把這個ER圖實現成一個滿足3NF的關系模式

 畫一個數據庫的(ER圖),實體包括:公司、人、 專業人士

 數據庫設計 Step by Step

數據庫設計 Step by Step (3)

 Entity-relationship modelling

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM