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

數(shù)據(jù)倉(cāng)庫(kù)2.png

1. 摘要

您將獲得關(guān)于ER圖和數(shù)據(jù)庫(kù)設(shè)計(jì)的基本知識(shí)和技能。你會(huì)學(xué)到ERD是什么,為什么,ERD符號(hào),如何畫(huà)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í)體的視覺(jué)表示以及它們?nèi)绾蜗嗷リP(guān)聯(lián)。實(shí)體關(guān)系圖廣泛用于設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)。ER模式中的實(shí)體成為表,屬性和轉(zhuǎn)換的數(shù)據(jù)庫(kù)模式。由于它們可用于可視化數(shù)據(jù)庫(kù)表及其關(guān)系,因此它通常也用于數(shù)據(jù)庫(kù)故障排除。

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í)候畫(huà)ER圖?

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

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

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

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

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

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

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

2.2.4 幫助收集需求

——通過(guò)繪制描述系統(tǒng)高級(jí)業(yè)務(wù)對(duì)象的概念性ERD來(lái)確定信息系統(tǒng)的需求。這樣的初始模型還可以演化為物理數(shù)據(jù)庫(kù)模型,以幫助創(chuàng)建關(guān)系數(shù)據(jù)庫(kù),或幫助創(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ù)語(yǔ)“實(shí)體”經(jīng)常被用來(lái)代替“表”,但它們是相同的)。在確定實(shí)體時(shí),將它們視為名詞。在ER模型中,實(shí)體顯示為圓角矩形,其名稱位于頂部,其屬性列在實(shí)體形狀的主體中。下面的ERD示例顯示了一個(gè)ER實(shí)體的示例。

2.3.2 實(shí)體屬性

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

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

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

2.3.3 主鍵

主鍵是一種特殊的實(shí)體屬性,它惟一地定義了數(shù)據(jù)庫(kù)表中的一條記錄。換句話說(shuō),不能有兩個(gè)(或多個(gè))記錄共享主鍵屬性的相同值。下面的ERD示例顯示了具有主鍵屬性“ID”的實(shí)體“Product”,以及數(shù)據(jù)庫(kù)中表記錄的預(yù)覽。第三條記錄無(wú)效,因?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ù)表示為連接器兩端的魚(yú)尾紋。三種常見(jiàn)的基本關(guān)系是一對(duì)一、一對(duì)多和多對(duì)多。

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

一對(duì)一關(guān)系主要用于將一個(gè)實(shí)體一分為二,以提供簡(jiǎn)明的信息并使其更易于理解。下圖顯示了一對(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)行建模。開(kāi)發(fā)了一個(gè)概念模型,通過(guò)識(shí)別所涉及的業(yè)務(wù)對(duì)象來(lái)呈現(xiàn)系統(tǒng)的總體情況。它定義了哪些實(shí)體存在,而不是哪些表。例如,“多對(duì)多”表可能存在于邏輯或物理數(shù)據(jù)模型中,但在概念數(shù)據(jù)模型中,它們只是作為沒(méi)有基數(shù)的關(guān)系顯示。

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

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

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

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

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

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

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

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

2.5 如何繪制ER圖?

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

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

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

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

  4. 通過(guò)添加列來(lái)定義實(shí)體的屬性。

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

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

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

2.6 選擇ERD工具

(1) Visual Paradigm

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

(2)freedgo.com

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

參考:
http://www.itdecent.cn/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ù)庫(kù)建模 : 概念模型 , 邏輯模型和物理模型
https://blog.csdn.net/tojohnonly/article/details/88343166
(3)【知識(shí)】一款支持MySQL的在線免費(fèi)ER模型設(shè)計(jì)工具freedgo
http://www.itdecent.cn/p/ffc08f2c2a92

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容