什麼是實體關係圖(ERD)?

轉載自:https://www.visual-paradigm.com/cn/guide/data-modeling/what-is-entity-relationship-diagram/

數據庫是軟件系統中不可或缺的一個組成部分,若能在數據庫工程中好好利用 ER 圖,便能讓您生成高質量的數據庫設計,用於數據庫創建,管理和維護,也爲人員間的交流提供了具意義的基礎。

實體關係圖(ERD)

今天,我們將爲你深入介紹 ER 圖表。通過閱讀本ERD指南,您將獲得有關 ER 圖和數據庫設計的基本知識和技能。你會學到什麼是 ERD,爲什麼要繪製 ERD,ERD 符號,如何繪製 ERD 等,以及一堆 ERD 示例。

什麼是實體關係圖(ERD)?

首先,什麼是實體關係圖?

實體關係圖也被稱爲 ERD、ER 圖、實體聯繫模型、實體聯繫模式圖或 ER 模型,是一種用於數據庫設計的結構圖。一幅 ERD 包含不同的符號和連接符,用於顯示兩個重要的資訊: 系統範圍內的主要實體,以及這些實體之間的相互關係

這也就是爲什麼它被稱爲“實體”“關係”圖 (ERD)啊!

當我們談論 ERD 中的實體時,我們經常提到諸如人員/角色(例如學生),有形商業對象(例如產品),無形商業對象(例如日誌)等業務對象。“關係”則是這些實體在系統內的相互關聯。

實體關係圖表達了對象間的關係

在典型的 ER 設計中,可以找到諸如圓角矩形和 (Rounded rectangle) 連接符(具有不同樣式的末端)的符號來描述實體,它們的屬性和相互關係。

何時繪製ER圖?

那麼,我們該在什麼時候繪製ER圖呢?雖然ER模型大多是爲展示概念和設計物理數據庫而繪製的,但也有別的用途的,以下是一些典型的用例。

  • 數據庫設計 - 直接在數據庫更改數據庫結構會有風險, 爲避免破壞數據庫中的數據,我們得仔細規劃一切變更。通過繪製 ER 圖來展示數據庫設計意念,您能輕鬆找出錯誤和識別設計缺陷,並在執行數據庫更改之前作出修正。
  • 數據庫調試 - 調試數據庫問題往往具挑戰性,特別是當數據庫包含許多表時,你我編寫複雜的SQL來獲取所需的信息。通過 ERD 來展示數據庫結構,您可以全面地瞭解整個數據庫的結構。您可以輕鬆找到實體,查看其屬性並確定與別的實體的關係,有助您更輕鬆地找出數據庫的問題。
  • 數據庫創建和修補 - 像 Visual Paradigm 這樣的 ERD 軟件支持數據庫生成工具,可以通過ER圖來自動生成和修補數據庫。使用這個 ER 圖工具,您的ER設計不再僅僅是一個靜態圖,而是一個真實反映物理數據庫結構的鏡像。
  • 幫助收集需求 - 您可以通過繪製 ERD 來表達系統中的高級業務對象以用於確定系統的需求。這種初始模型也可以演化爲物理數據庫模型,用於創建關係數據庫,或爲創建流程圖和數據流模型提供有力的參考。

ERD 符號指南

ER 圖包含實體,屬性和關係。在本節中,我們將詳細介紹各 ERD 符號。

實體

ERD 實體是一個系統內可定義的事物或概念,如人/角色(例如學生),對象(例如發票),概念(例如簡介)或事件(例如交易)(注:在 ERD 中,術語“實體”通常用來代替“表”,但它們是一樣的)。在考慮實體時,嘗試把它們想成名詞。在 ER 模型中,實體顯示爲圓角矩形,其名稱位於上方,其屬性列在實體形狀的主體中。下面的 ERD 示例顯示了 ER 實體的一個用例。

實體(實體關係圖)

實體屬性

也稱爲列 (Row),意思是持有它的實體的屬性或特性

一個屬性有一個描述屬性的名稱和一個描述屬性種類的類型,例如代表字符串的 varchar,整數的 int。當爲物理數據庫開發繪製 ERD 時,得使用目標 RDBMS 支持的類型,以確保設計和物理數據庫的一致性。

下面的 ER 圖示例顯示了一個包含屬性的實體。

實體屬性(實體關係圖)

主鍵 (Primary Key)

主鍵又稱 PK,是一種特殊的實體屬性,用於界定數據庫表中的記錄的獨特性。一個表不能有兩筆(或更多)擁有相同的主鍵屬性值的記錄,像是身份證明內的 ID 便是典型的例子,兩個人即使性名相同,ID 是不會一樣,若身份證明是個表,那ID 便是主鍵了。下面的 ERD 示例顯示了擁有主鍵屬性 “ID” 的實體 “Product”,以及數據庫中表記錄的預覽。第三個記錄是無效的,因爲 ID 'PDT-0002' 的值已被另一個記錄使用。

主鍵(實體關係圖)

外鍵 (Foreign Key)

外鍵又稱外來鍵和外部鍵,是對主鍵的引用,用於識別實體之間的關係。請注意,有別於主鍵,外鍵不必是唯一的,多個記錄可以共享相同的值。下面的 ER Diagram 示例顯示了一個包含一些列的實體,其中一個外鍵用於引用另一個實體。

外鍵(實體關係圖)

關係

兩個實體之間的關係表示這兩個實體以某種方式相互關聯。例如,學生可能參加課程。實體“學生”因此與“課程”相關,而這關係則在 ER 圖中以連接線表達着。

基數 (Cardinality)

基數定義了一個實與另一個實體的關係裏面,某方可能出現次數。例如,一個團隊有許多球員,若把這關係呈現於 ERD 時,團隊和球員之間是一對多的關係。

在 ER 圖中,基數表示爲連接線端的烏鴉腳。三種常見的主要關係是一對一,一對多和多對多。

一對一的基數的例子

一對一關係主要用於將實體分成兩部分,簡潔地將資訊呈現,使讀者更容易理解。下圖顯示了一對一關係的示例。

一對一的基數的例子

一對多的基數的例子

一對多關係是指兩個實體 X 和 Y 之間的關係,其中 X 的一個實例可以鏈接到Y的許多實例,而 Y 的一個實例僅鏈接到 X 的一個實例。下圖顯示了一對多關係的一個例子。

一對多的基數的例子

多對多的基數的例子

多對多關係是指兩個實體 X 和 Y 之間的關係,其中 X 可以被鏈接到 Y 的許多實例,反之亦然。下圖顯示了一個多對多關係的例子。請注意,多對多關係在物理 ERD 中被分成一對一對多的關係,你會在下一節中學到什麼是物理 ERD。

多對多的基數的例子

概念,邏輯和物理數據模型

ER 模型通常被繪製成最多三個抽象層次上:

雖然 ER 模型的三個層次都包含有屬性和關係的實體,但它們的創建目的和目標受衆都不同。

一般而言,業務分析人員使用概念和邏輯模型來展示系統中存在的業務對象 (Business Object),而數據庫設計人員或數據庫工程師會為概念和邏輯ER模型加入更詳細的資訊,進而生成反映物理模型結構的物理數據模型,好為創建數據庫作準備。下表列出了三種數據模型之間的差異。

概念模型 vs 邏輯模型 vs 數據模型:

ERD功能 概念 邏輯 物理
實體(名稱)
關係
 
列的類型   隨意
主鍵    
外鍵    

概念數據模型

概念性 ERD 表達了系統中該存在的業務對象以及它們之間的關係。建立概念模型,是爲了通過識別所涉及的業務對象來呈現系統的宏觀圖像。概念數據模型定義了哪些實體存在,而非哪些表。例如,邏輯或物理數據模型中可能存在“多對多”表,但在概念數據模型下,它們只會表示爲無基數的關係。

概念數據模型示例

概念數據模型

注意:概念性 ERD 支持使用泛化 (Generalization) 來表達兩個實體之間的“一種”關係,例如三角形是一種形狀,這個用法就像UML中的泛化一樣。請注意只有概念 ERD 支持泛化。

邏輯數據模型

邏輯 ERD 是概念 ERD 的詳細版本,通過明確定義每個實體中的列並引入操作和事務實體 (Transactional Entities)來讓概念模型豐富起來。雖然邏輯數據模型仍流於高層次的設計(非爲特定數據庫系統而繪畫),但如果會影響數據庫的設計,在繪製邏輯數據模型時仍然可酌情調整。

邏輯數據模型示例

邏輯數據模型

物理數據模型

物理 ERD 是數據庫的實際設計藍圖。物理數據模型通過爲每列指定類型 (Type),長度 (Length),可爲空 (Nullable) 等來詳細闡述邏輯數據模型。由於物理 ERD 表達瞭如何在特定的 DBMS中構造和關聯數據,因此在設計時要考慮到實際的數據庫系統的需要和侷限,倒如確保 DBMS 支持某列類型,並在命名實體和列中避用某些保留字 (Reserved Words)。

物理數據模型示例

物理數據模型

如何繪製 ER 圖?

如果您發現繪製 ER 圖很難,請不要擔心,在本節中我們將給你一些 ERD 提示。嘗試按照以下步驟以瞭解如何有效地繪製 ER 圖吧。

  1. 確保你清楚知道繪製 ERD 的目的。您是否試圖呈現涉及業務對象定義的整體系統架構?或者你正在開發一個準備用於數據庫創建的 ER 模型?您必須明瞭開發 ER 圖的目的,方可使用合適的模型層次(概念/邏輯和物理)來迎合您所需 (請閱讀概念,邏輯和物理數據模型部分了解更詳細信息)
  2. 確保你清楚模型的範圍。瞭解建模範圍可以防止在設計中包含冗餘實體和關係。
  3. 畫出範圍內的主要實體。
  4. 通過添加列來定義實體的屬性。
  5. 仔細檢查 ERD 並檢查實體和列是否足以存儲系統的數據。如果不是,請考慮添加其他實體和列。通常,您可以在此步驟中確定一些事務 (Transactional),操作 (Operational) 和事件 (Event) 實體。
  6. 考慮所有實體之間的關係,將它們聯繫起來,並寫上正確的基數(例如客戶和訂單之間的一對多關係)。如果有任何實體沒有被連接上,請不要擔心,雖然這不常見,但它是合法的。
  7. 使用數據庫規範化技術 (Database Normalization)重構實體,以減少冗餘數據和提高數據完整性。例如,“製造商”的資訊可能最初存儲在“產品”實體下,透過規範化過程,您可能會發“製造商”的記錄不斷重複,您便可將其拆分爲單獨的“製造商”實體,並使用外鍵將“產品”和“製造商”連接起來。

數據模型的例子

ERD 示例 - 電影租賃系統

ERD 示例 - 電影租賃系統

ERD 示例 - 貸款系統

ERD 示例 - 貸款系統

ERD 示例 - 在線商店

ERD 示例 - 在線商店

使用ERD和數據流圖(DFD)

在系統分析和設計中,可以繪製數據流圖(DFD) 來展現系統流程中的信息流。在數據流圖中,有一個名爲數據儲存 (Data Store)的符號,它代表一個提供系統所需信息的數據庫表。

使用 ERD 和數據流圖(DFD)

由於物理 ER 圖提供了實際數據庫的藍圖,因此這種 ERD 中的實體與 DFD 中的數據存儲一致。您可以 ERD 作爲 DFD 的補充,以表達信息的結構;或以 DFD 補充 ERD,以顯示系統在運行時如何運用數據。

ER 圖數據儲存模型

使用ERD和BPMN業務流程圖(BPD)

在業務流程映射中 (Business Process Mapping),可以繪製 BPMN 業務流程圖 (BPD) 以展示業務工作流程。在業務流程圖中,有一個稱爲數據對象(Data Object)的符號,表示在流程輸入/輸出的數據。

使用 ERD 和 BPMN 業務流程圖(BPD

由於概念和邏輯數據模型提供了系統內業務對象的高級視圖,因此此類 ERD 中的實體與 BPD 中的數據對象一致。您可繪製 ERD 作爲 BPD 的補充,以表示業務工作流程所需的數據對象的結構;或以 BPD 補充 ERD,以顯示在整個業務流程中如何運用數據。

BPMN 數據對象(以 ER 圖表達)

選擇一個ERD工具

製作 ERD 數據模型需要時間和精力,而一個有用的數據庫設計工具則能大大減省你花費的時間和精力。 Visual Paradigm 不僅爲您提供 ERD 工具,還提供了一組可視化建模功能,助您更快、更輕鬆地繪製實體關係圖。它支持當今市場上最流行的數據庫管理系統,是數據庫設計、數據庫生成和實體關係圖逆轉的好幫手。

支持廣泛的 DBMS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章