什么是實體關系圖(ERD)? 轉


https://www.visual-paradigm.com/cn/guide/data-modeling/what-is-entity-relationship-diagram/#erd-data-models-conceptual

 

 

 

數據庫是軟件系統中不可或缺的一個組成部分,若能在數據庫工程中好好利用 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 圖表達)

 

 https://www.visual-paradigm.com/cn/download/community.jsp?platform=windows&arch=64bit&install=no

下載社區免安裝版。

 


免責聲明!

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



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