1. 程式人生 > >E-R圖簡介

E-R圖簡介

語言 地方 實體 年齡 key 集合 數據 ron 慢慢

版權聲明:本文為作者創作,轉載請註明出處:https://www.cnblogs.com/Feq1007/p/9687270.html

在學習E-R圖之前,我們應該先搞清楚,E-R圖是幹什麽的E-R圖由什麽構成以及如何才能畫一個E-R圖

我們就按照這個順序來一起學習一下E-R圖。

首先,E-R圖,全稱為實體聯系模型實體關系模型實體聯系模式圖(ERD)英語:Entity-relationship model)由美籍華裔計算機科學家陳品山發明,是概念數據模型的高層描述所使用的數據模型或模式圖。也就是說,我們可以通過E-R圖,對信息世界進行建模,對現實世界進行第一層抽象。說白了就是用圖的方式描述事物的屬性和事物之間的關系!

既然是要描述事物屬性,我們首先要知道一些信息世界的基本概念

(1)實體(Entity):

  客觀存在並可相互區別的事物。實體可以是具體的人、事、物,也可以是抽象的概念或聯系。比如一個學生、一門課、老師與學院的工作關系等都屬於實體。

(2)屬性(Attribute):

  實體所具有的某一特性。一個實體可以由多個屬性來刻畫。這個應該很好理解,就像人的實體有名字,身高,體重,出生年月等等。這些屬性組合起來表征一個人。

(3)(Key):

  唯一標識實體的屬性集稱為碼。例如學生的學號就唯一標識了學生實體,還有我們的身份證唯一標識了我們。

(4)(Key):

  域是一組具有相同數據類型的值和集合。屬性的取值範圍來自某個域。比如,姓名的域是字符串集合,年齡的域是整數,性別的域為(男,女)。

(5)實體型(Entity Type):

  具有相同屬性的實體必然具有共同的特征和性質。用實體名以及其屬性名集合來抽象和刻畫同類實體,稱為實體型。舉個栗子:學生(學號、姓名、性別、出生年月、所在院系、入學時間)就是一個實體型。

(6)實體集(Entity Set):

  同一類實體的集合就是實體集。比如:全體學生就是一個實體集。

(7)聯系(Relationship):

  現實世界中,事物內部及事物之間的關系,反映在信息世界中即是實體(型)內部的聯系和實體(型)之間的聯系。實體內部的聯系通常指實體各屬性之間的聯系;實體間的聯系通常指不同實體集之間的聯系。

介紹完信息世界中基本概念後,即是完成了描述事物的屬性這一步,接下來就是事物之間的關系

這一步了。

首先是兩個實體型之間的聯系,幾乎所有復雜的聯系,都可以簡化為好幾個兩個實體集之間的聯系,所以我們先討論兩個實體型之間的聯系。

兩個實體型之間的聯系可以分為三類:

(1)一對一聯系(1:1):

  對於實體集A中每一個實體,實體集B中最多有一個(也可以沒有)實體與之聯系,反之亦然,則稱實體集A和實體集B具有一對一聯系。

  舉個梨子:一般來說,一個班級只有一個正班長,且一個班長只在一個班中任職,所以我們說班長和班級之間具有一對一聯系。

(2)一對多聯系(1:n):

  實體集A中每一個實體,實體集B中有n個實體(n? ≥ 0)與之聯系,反之,B中的每一個實體,實體集A中至多只有一個與之聯系,則稱實體集A與實體集B具有一對多聯系。

  舉個蘋果:一般來說,一個班級中有若幹個學生,而每個學生只在一個班級中學習,則班級與學生之間具有一對多的聯系。

(3)多對多聯系(m:n):

  因該不難推測,多對多就是實體集A中每一個實體,在實體集B中有n(n ?≥ 0)個與之聯系,反正實體集B中每一個實體,A中也有m(m ?≥ 0)個實體與之聯系。我們則稱A與B具有多對多聯系。

  舉個香蕉:一門課程同時有若幹個學生選修,一個學生一次可以選擇若幹門課程,所以課程與學生之間的聯系屬於多對多的聯系。

然後是單個實體型內的聯系:

  我們首先要知道,單個實體型之間也是存在一對一,一對多和多對多的聯系的。例如職工實體型就有領導和被領導的聯系,一般來說這是一種一對多的聯系,一名領導領導多名員工,多名員工被一個領導領導。

  在我們實際生活中,更多的是多個實體集之間的聯系,由於可以存在多個實體集之間有著共同的關系,所以當我們要描述的問題比較大的時候,很難用語言來描述其中的關系,我們需要一種能夠簡化這種關系,讓我們簡單清楚的發現其中的關系的一種方法,所以才有了E-R圖。

要畫E-R圖,我們要先知道E-R由什麽組成

E-R圖的組成很簡單,就四個:

矩形框:表示實體,在框中記入實體名。 菱形框:表示聯系,在框中記入聯系名。 橢圓形框:表示實體或聯系的屬性,將屬性名記入框中。對於主屬性名,則在其名稱下劃一下劃線。 連線:實體與屬性之間;實體與聯系之間;聯系與屬性之間用直線相連,並在直線上標註聯系的類型。(對於一對一聯系,要在兩個實體連線方向各寫1; 對於一對多聯系,要在一的一方寫1,多的一方寫N;對於多對多關系,則要在兩個實體連線方向各寫N,M。) 然後我們就可以畫了,以上面舉的例子為例: 兩個實體(1:1):技術分享圖片 兩個實體(1:n):技術分享圖片兩個實體(n:m):技術分享圖片

三個實體之間:技術分享圖片單個實體之間一對多實例:技術分享圖片

這就是簡單的E-R圖。

接下來我們動手分析幾個題目,試著去畫他們的E-R圖。

例1:學校中有若幹個系,每個系有若幹個班級和教研室,每個教研室有若幹教員,其中有的教授和副教授每人各帶若幹研究生,每個班有若幹學生,每個學生選修若幹課程,沒門課程可由若幹學生選修。請畫出此學校的E-R圖。

  首先我們要找到所有的名詞:學校、系、班級、教研室、教員、教授、副教授、研究生、學生、課程。

  接下來就是按照上面說的基本概念找到所有的實體

    學校屬於實體,系、班級、教研室、課程這些是實體大家應該沒有疑問,但是其他的教員、教授、副教授、研究生、學生之間究竟是不是各自都是一個實體就不一定了。我們先分析一下他們的關系,首先我們要清楚,學生和研究生其實是兩個不同的實體,既然分開了研究生和學生,而我們這裏說的教員就是研究生,教授和副教授都屬於教授這一實體,不用分開。所以最終這幾個其實只是教授、學生、研究生。

  了解了所有實體後,開始找他們的關系了。

  首先學校只與系有關,如果懶得給關系命名的話我們直接用他們的名字關聯命名,並且一個學校對應多個系,一個系只能屬於一個學校(這裏只爭對一個學校的所有系,與其他學校無關),所以學校和系的關系是:校-系(1:n);

  通過題目可知系下面分為班級和研究室,一個系下面有多個教研室,是所屬關系:屬於(1:n),同理班級也是:屬於(1:n)關系,他們都只能屬於一個系;

  一個教研室裏面由多個教授組成,一個教授只能在一個教研室,所以是:組成(1:n)

  一個教授可以指導多名學生,一名學生只能有一個教授,所以是:指導(1:n)

  一個班級由多個學生組成,一個學生只能屬於一個班,所以是:組成(1:n)

  一個學生可以修很多門課程,一個課程可以有多個學生選,所以是:選修(m:n)

綜上可以畫出如下的E-R圖(由於這裏沒有涉及到屬性,所以不用考慮):

  技術分享圖片

例2:某工廠生產若幹產品,每種產品由不同零件組成,有的零件可用在不同產品上。這些零件由不同的原材料制成,不同零件所有的材料可以相同。這些零件按所屬的不同產品分別放在不同的倉庫中,原材料按照類別放在若幹倉庫。請用E-R圖畫出上述的概念模型。

  同上題,我們先找出所有的名詞:工廠、產品、零件、原材料、倉庫。

  然後分析找出實體,發現他們並沒有交叉關系,與上體不同,不會造成誤解。

  然後我們分析關系:

  一個工廠可以生產若幹產品,一個產品只能由這個工廠產生,所以是:生產(1:n)

  一個產品由多個零件組成,一個零件可以用在不同產品上,所以是:組成(m:n)

  一個零件由多種材料制造,一種材料可以去制造不同的零件,所以是:制造(m:n)

  不同的零件放在不同的倉庫,所以是:儲存(m:n)

  原材料是按照類別來放在倉庫的,所以不同的材料可以放在同一個倉庫,但是一個倉庫只能放一類原材料,所以是:存放(n:1)

  這裏還是沒有提到實體的屬性,所以E-R圖為:

技術分享圖片

最後總結一下吧:

  首先要找到所有的名詞,然後去掉具有相同含義的詞,還有就是確認兩個是不是同一實體,如果是的話就保留一個,如果不是就千萬不能合在一起;

  然後就是從一個實體出發,分析與他有關的其他實體,像網一樣慢慢展開,註意分析考察每一對究竟是三種當中的哪一種;

  對於不同實體連接到統一實體的,如果可以合並的就合並;

  最後,我們可以暫時不用管實體的屬性,在其他地方將實體的屬性單獨畫出來,因為有時候實體屬性太多,如果全部花在圖上的話會反而變得“難看”。

內容參考自:數據庫系統概論(第四版)

歡迎各位指出錯誤:[email protected]

  

  

E-R圖簡介