【知識(shí)】實(shí)體關(guān)系圖(ERD)的定義和繪制

數(shù)據(jù)倉庫2.png

1. 摘要

您將獲得關(guān)于ER圖和數(shù)據(jù)庫設(shè)計(jì)的基本知識(shí)和技能。你會(huì)學(xué)到ERD是什么涂身,為什么吮炕,ERD符號(hào),如何畫ERD访得,等等,以及一些ERD的例子陕凹。

2.內(nèi)容

2.1 ERD定義

實(shí)體 - 關(guān)系(ER)圖(也稱為ERD或ER模型)是Peter最初在1976年提出的經(jīng)典且流行的概念數(shù)據(jù)模型悍抑。它是系統(tǒng)內(nèi)不同實(shí)體的視覺表示以及它們?nèi)绾蜗嗷リP(guān)聯(lián)。實(shí)體關(guān)系圖廣泛用于設(shè)計(jì)關(guān)系數(shù)據(jù)庫杜耙。ER模式中的實(shí)體成為表搜骡,屬性和轉(zhuǎn)換的數(shù)據(jù)庫模式。由于它們可用于可視化數(shù)據(jù)庫表及其關(guān)系佑女,因此它通常也用于數(shù)據(jù)庫故障排除记靡。

ER-Diagrams有三個(gè)基本要素:

  • 實(shí)體是我們想要存儲(chǔ)信息的“事物”。實(shí)體是一個(gè)人团驱,地點(diǎn)摸吠,事物或事件。
  • 屬性是我們要為權(quán)利收集的數(shù)據(jù)嚎花。
  • 關(guān)系描述了實(shí)體之間的關(guān)系寸痢。
ERD - Illustrated by Visual Paradigm

2.2 什么時(shí)候畫ER圖?

什么時(shí)候畫erd ?雖然ER模型主要用于在概念可視化和物理數(shù)據(jù)庫設(shè)計(jì)方面設(shè)計(jì)關(guān)系數(shù)據(jù)庫,但是在其他情況下紊选,ER圖也可以提供幫助啼止。下面是一些典型的用例。

2.2.1 數(shù)據(jù)庫設(shè)計(jì)

——根據(jù)變化的規(guī)模兵罢,直接在DBMS中更改數(shù)據(jù)庫結(jié)構(gòu)可能有風(fēng)險(xiǎn)献烦。為了避免破壞生產(chǎn)數(shù)據(jù)庫中的數(shù)據(jù),仔細(xì)計(jì)劃更改是很重要的卖词。ERD是一個(gè)有用的工具巩那。通過繪制ER圖來可視化數(shù)據(jù)庫設(shè)計(jì)思想,您有機(jī)會(huì)識(shí)別錯(cuò)誤和設(shè)計(jì)缺陷,并在數(shù)據(jù)庫中執(zhí)行更改之前進(jìn)行更正拢操。

2.2.2 數(shù)據(jù)庫調(diào)試

——調(diào)試數(shù)據(jù)庫問題很有挑戰(zhàn)性锦亦,特別是當(dāng)數(shù)據(jù)庫包含許多表時(shí),需要編寫復(fù)雜的SQL來獲取所需的信息令境。通過使用ERD可視化數(shù)據(jù)庫模式杠园,您可以全面了解整個(gè)數(shù)據(jù)庫模式。您可以輕松地定位實(shí)體舔庶、查看它們的屬性并確定它們與其他實(shí)體之間的關(guān)系抛蚁。所有這些都允許您分析現(xiàn)有數(shù)據(jù)庫并更容易地發(fā)現(xiàn)數(shù)據(jù)庫問題。

2.2.3 數(shù)據(jù)庫創(chuàng)建和補(bǔ)丁

—Visual Paradigm是一個(gè)ERD工具惕橙,它支持一個(gè)數(shù)據(jù)庫生成工具瞧甩,可以通過ER圖的方式自動(dòng)創(chuàng)建和補(bǔ)丁數(shù)據(jù)庫。因此弥鹦,有了這個(gè)ER圖工具肚逸,ER設(shè)計(jì)就不再是一個(gè)靜態(tài)的圖,而是反映物理數(shù)據(jù)庫結(jié)構(gòu)的一面鏡子彬坏。

2.2.4 幫助收集需求

——通過繪制描述系統(tǒng)高級(jí)業(yè)務(wù)對(duì)象的概念性ERD來確定信息系統(tǒng)的需求朦促。這樣的初始模型還可以演化為物理數(shù)據(jù)庫模型,以幫助創(chuàng)建關(guān)系數(shù)據(jù)庫栓始,或幫助創(chuàng)建流程圖和數(shù)據(jù)流模式务冕。

2.3 ERD符號(hào)指南

ER圖包含實(shí)體、屬性和關(guān)系幻赚。在這一節(jié)中禀忆,我們將詳細(xì)討論ERD符號(hào)。

2.3.1 實(shí)體

ERD實(shí)體是一個(gè)系統(tǒng)內(nèi)可定義的事物或概念落恼,例如人/角色(例如學(xué)生)箩退、對(duì)象(例如發(fā)票)、概念(例如概要)或事件(例如交易)(注:在ERD中佳谦,術(shù)語“實(shí)體”經(jīng)常被用來代替“表”乏德,但它們是相同的)。在確定實(shí)體時(shí)吠昭,將它們視為名詞喊括。在ER模型中,實(shí)體顯示為圓角矩形矢棚,其名稱位于頂部郑什,其屬性列在實(shí)體形狀的主體中。下面的ERD示例顯示了一個(gè)ER實(shí)體的示例蒲肋。

2.3.2 實(shí)體屬性

屬性也稱為列蘑拯,是持有它的實(shí)體的屬性或特征钝满。

屬性具有描述屬性的名稱和描述屬性類型的類型,如字符串的varchar和整數(shù)的int申窘。在為物理數(shù)據(jù)庫開發(fā)繪制ERD時(shí)弯蚜,務(wù)必確保使用目標(biāo)RDBMS支持的類型。

下面的ER關(guān)系圖示例顯示了一個(gè)包含一些屬性的實(shí)體剃法。

2.3.3 主鍵

主鍵是一種特殊的實(shí)體屬性碎捺,它惟一地定義了數(shù)據(jù)庫表中的一條記錄。換句話說贷洲,不能有兩個(gè)(或多個(gè))記錄共享主鍵屬性的相同值收厨。下面的ERD示例顯示了具有主鍵屬性“ID”的實(shí)體“Product”,以及數(shù)據(jù)庫中表記錄的預(yù)覽优构。第三條記錄無效诵叁,因?yàn)榱硪粭l記錄已經(jīng)使用了ID 'PDT-0002'的值。

2.3.4 外鍵

外鍵也稱為FK钦椭,是對(duì)表中主鍵的引用拧额。它用于標(biāo)識(shí)實(shí)體之間的關(guān)系。注意彪腔,外鍵不一定是唯一的侥锦。多條記錄可以共享相同的值。下面的ER關(guān)系圖示例顯示了一個(gè)具有一些列的實(shí)體漫仆,其中外鍵用于引用另一個(gè)實(shí)體。

2.3.5 關(guān)系

兩個(gè)實(shí)體之間的關(guān)系表示這兩個(gè)實(shí)體以某種方式相互關(guān)聯(lián)泪幌。例如盲厌,一個(gè)學(xué)生可能注冊(cè)了一個(gè)課程。因此祸泪,實(shí)體學(xué)生與課程是相關(guān)的吗浩,而一種關(guān)系是連接他們之間的連接器。

2.3.6 基數(shù)

基數(shù)定義一個(gè)實(shí)體中可能出現(xiàn)的事件數(shù)没隘,該實(shí)體與另一個(gè)實(shí)體中可能出現(xiàn)的事件數(shù)相關(guān)聯(lián)懂扼。例如,一個(gè)隊(duì)有很多隊(duì)員右蒲。當(dāng)在ERD中出現(xiàn)時(shí)阀湿,實(shí)體團(tuán)隊(duì)和玩家以一對(duì)多的關(guān)系相互連接。

在ER圖中瑰妄,基數(shù)表示為連接器兩端的魚尾紋陷嘴。三種常見的基本關(guān)系是一對(duì)一、一對(duì)多和多對(duì)多间坐。

2.3.6.1 一對(duì)一的基數(shù)的例子

一對(duì)一關(guān)系主要用于將一個(gè)實(shí)體一分為二灾挨,以提供簡明的信息并使其更易于理解邑退。下圖顯示了一對(duì)一關(guān)系的一個(gè)示例。

2.3.6.2 一對(duì)多的基數(shù)的例子

一對(duì)多關(guān)系是指兩個(gè)實(shí)體X和Y之間的關(guān)系劳澄,其中X的一個(gè)實(shí)例可能鏈接到Y(jié)的多個(gè)實(shí)例地技,而Y的一個(gè)實(shí)例只鏈接到X的一個(gè)實(shí)例。

image.png

2.3.6.3 多對(duì)多的基數(shù)的例子

多對(duì)多關(guān)系是指兩個(gè)實(shí)體X和Y之間的關(guān)系秒拔,其中X可以鏈接到Y(jié)的多個(gè)實(shí)例莫矗,反之亦然。下圖顯示了一個(gè)多對(duì)多關(guān)系的示例溯警。注意趣苏,在物理ERD中,多對(duì)多關(guān)系被分割為一對(duì)一對(duì)多關(guān)系梯轻。在下一節(jié)中食磕,您將了解什么是物理ERD。

2.4 概念喳挑、邏輯和物理數(shù)據(jù)模型

ER模型通常是在三個(gè)抽象層次上繪制的:

  • 概念ERD /概念數(shù)據(jù)模型
  • 邏輯ERD /邏輯數(shù)據(jù)模型
  • 物理ERD /物理數(shù)據(jù)模型

雖然ER模型的所有三個(gè)級(jí)別都包含具有屬性和關(guān)系的實(shí)體彬伦,但是它們?cè)趧?chuàng)建的目的和目標(biāo)受眾方面有所不同。

2.4.1 概念數(shù)據(jù)模型

概念性的ERD對(duì)系統(tǒng)中應(yīng)該存在的業(yè)務(wù)對(duì)象及其之間的關(guān)系進(jìn)行建模伊诵。開發(fā)了一個(gè)概念模型单绑,通過識(shí)別所涉及的業(yè)務(wù)對(duì)象來呈現(xiàn)系統(tǒng)的總體情況。它定義了哪些實(shí)體存在曹宴,而不是哪些表搂橙。例如,“多對(duì)多”表可能存在于邏輯或物理數(shù)據(jù)模型中笛坦,但在概念數(shù)據(jù)模型中区转,它們只是作為沒有基數(shù)的關(guān)系顯示。

概念數(shù)據(jù)模型示例

注意:概念性ERD支持在建模兩個(gè)實(shí)體之間的“一種”關(guān)系時(shí)使用泛化版扩,例如废离,三角形是一種形狀。這種用法類似于UML中的泛化礁芦。注意蜻韭,只有概念性的ERD支持泛化。

2.4.2 邏輯數(shù)據(jù)模型

邏輯ERD是概念ERD的詳細(xì)版本柿扣。通過顯式定義每個(gè)實(shí)體中的列并引入操作實(shí)體和事務(wù)實(shí)體肖方,可以開發(fā)邏輯ER模型來豐富概念模型。雖然邏輯數(shù)據(jù)模型仍然獨(dú)立于將要?jiǎng)?chuàng)建數(shù)據(jù)庫的實(shí)際數(shù)據(jù)庫系統(tǒng)未状,但是如果它影響設(shè)計(jì)窥妇,您仍然可以考慮這一點(diǎn)。

邏輯數(shù)據(jù)模型示例

2.4.3 物理數(shù)據(jù)模型

物理ERD表示關(guān)系數(shù)據(jù)庫的實(shí)際設(shè)計(jì)藍(lán)圖娩践。物理數(shù)據(jù)模型通過為每個(gè)列分配類型活翩、長度烹骨、可空值等來詳細(xì)說明邏輯數(shù)據(jù)模型。由于物理ERD表示在特定DBMS中數(shù)據(jù)應(yīng)該如何結(jié)構(gòu)化和關(guān)聯(lián)材泄,因此考慮實(shí)際數(shù)據(jù)庫系統(tǒng)的約定和限制是很重要的沮焕。確保DBMS支持列類型,并且在命名實(shí)體和列時(shí)不使用保留字拉宗。

物理數(shù)據(jù)模型示例

2.5 如何繪制ER圖?

如果你發(fā)現(xiàn)很難開始畫ER圖峦树,不要擔(dān)心。在這一節(jié)中旦事,我們將為您提供一些ERD技巧魁巩。嘗試按照下面的步驟來理解如何有效地繪制ER圖。

  1. 確定你清楚繪制ERD的目的姐浮。
    您是否試圖呈現(xiàn)涉及業(yè)務(wù)對(duì)象定義的整個(gè)系統(tǒng)體系結(jié)構(gòu)?或者您正在開發(fā)一個(gè)為數(shù)據(jù)庫創(chuàng)建準(zhǔn)備好的ER模型嗎?您必須清楚在適當(dāng)?shù)募?xì)節(jié)級(jí)別開發(fā)ER關(guān)系圖的目的(有關(guān)更多細(xì)節(jié)谷遂,請(qǐng)閱讀“概念、邏輯和物理數(shù)據(jù)模型”一節(jié))

  2. 確保您清楚要建模的范圍卖鲤。
    了解建模范圍可以防止在設(shè)計(jì)中包含冗余實(shí)體和關(guān)系肾扰。

  3. 繪制范圍中涉及的主要實(shí)體。

  4. 通過添加列來定義實(shí)體的屬性蛋逾。

  5. 仔細(xì)檢查ERD集晚,檢查實(shí)體和列是否足夠存儲(chǔ)系統(tǒng)的數(shù)據(jù)。
    如果沒有区匣,則考慮添加其他實(shí)體和列偷拔。通常,您可以在此步驟中標(biāo)識(shí)一些事務(wù)亏钩、操作和事件實(shí)體莲绰。

  6. 考慮所有實(shí)體之間的關(guān)系,并使用適當(dāng)?shù)幕鶖?shù)铸屉。
    (e實(shí)體客戶和訂單之間的一對(duì)多關(guān)系)钉蒲。不要擔(dān)心是否存在孤兒實(shí)體切端。雖然不常見彻坛,但卻是合法的。

  7. 應(yīng)用數(shù)據(jù)庫規(guī)范化技術(shù)以減少數(shù)據(jù)冗余和提高數(shù)據(jù)完整性的方式重構(gòu)實(shí)體踏枣。
    例如昌屉,制造商的詳細(xì)信息最初可能存儲(chǔ)在Product實(shí)體下。在規(guī)范化的過程中茵瀑,您可能會(huì)發(fā)現(xiàn)詳細(xì)信息會(huì)重復(fù)記錄间驮,然后您可以將其作為單獨(dú)的實(shí)體制造商進(jìn)行拆分,并使用一個(gè)外鍵在產(chǎn)品和制造商之間進(jìn)行鏈接马昨。

2.6 選擇ERD工具

(1) Visual Paradigm

使用ERD開發(fā)數(shù)據(jù)模型需要時(shí)間和精力竞帽。一個(gè)有用的數(shù)據(jù)庫設(shè)計(jì)工具應(yīng)該能夠減少您所花費(fèi)的時(shí)間和精力扛施。Visual Paradigm不僅為您提供了ERD工具,還提供了一組可視化建模功能屹篓,幫助您更快疙渣、更輕松地繪制圖形。它支持當(dāng)今市場(chǎng)上大多數(shù)流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)堆巧,包括數(shù)據(jù)庫設(shè)計(jì)妄荔、數(shù)據(jù)庫生成和ERD反轉(zhuǎn)。

(2)freedgo.com

一款在線ER模型生成的工具谍肤,可以針對(duì)多種數(shù)據(jù)庫的DDL文件在線生成ER模型圖表啦租,支持MySQL、SQLServer荒揣、Oracle篷角、PostgreSQL等數(shù)據(jù)庫。
主要功能如下:
(1)支持表的創(chuàng)建乳附,同時(shí)可以根據(jù)數(shù)據(jù)庫的類型不同編輯表結(jié)構(gòu)内地、字段類型、主鍵赋除、默認(rèn)值阱缓、索引、備注信息等等
(2)支持視圖举农,觸發(fā)器荆针,sequence,存儲(chǔ)過程颁糟,函數(shù)的查看及編輯
(3)同步生成SQL供用戶操作

參考:
http://www.reibang.com/p/ffc08f2c2a92
https://www.freedgo.com

3. 參考

(1)「數(shù)據(jù)架構(gòu)」什么是實(shí)體關(guān)系圖(ERD)?
https://cloud.tencent.com/developer/article/1558816
(2)數(shù)據(jù)庫建模 : 概念模型 , 邏輯模型和物理模型
https://blog.csdn.net/tojohnonly/article/details/88343166
(3)【知識(shí)】一款支持MySQL的在線免費(fèi)ER模型設(shè)計(jì)工具freedgo
http://www.reibang.com/p/ffc08f2c2a92

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末航背,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棱貌,更是在濱河造成了極大的恐慌玖媚,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚脱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡障贸,警方通過查閱死者的電腦和手機(jī)错森,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篮洁,“玉大人涩维,你說我怎么就攤上這事≡ǎ” “怎么了瓦阐?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蜗侈,是天一觀的道長。 經(jīng)常有香客問我睡蟋,道長宛篇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任薄湿,我火速辦了婚禮叫倍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘豺瘤。我一直安慰自己吆倦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布坐求。 她就那樣靜靜地躺著蚕泽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桥嗤。 梳的紋絲不亂的頭發(fā)上须妻,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音泛领,去河邊找鬼荒吏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渊鞋,可吹牛的內(nèi)容都是我干的绰更。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼锡宋,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼儡湾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起执俩,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤徐钠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后役首,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尝丐,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年宋税,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摊崭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讼油。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杰赛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矮台,到底是詐尸還是另有隱情乏屯,我是刑警寧澤根时,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站辰晕,受9級(jí)特大地震影響蛤迎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜含友,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一替裆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窘问,春花似錦辆童、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至儿咱,卻和暖如春庭砍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背混埠。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工怠缸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钳宪。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓凯旭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親使套。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罐呼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容