資料庫實體關係圖(ERD)及其畫法
文章目錄
資料庫絕對是軟體系統不可分割的一部分。在資料庫工程中充分利用ER關係圖,可以保證在資料庫建立、管理和維護中產生高質量的資料庫設計。ER模型還提供了一種通訊手段。
1. 什麼是ER圖?
首先,什麼是實體關係圖?
實體關係圖,又稱ERD、ER圖或ER模型,是一種用於資料庫設計的結構圖。ERD包含不同的符號和聯結器,它們視覺化兩個重要的資訊:系統範圍內的主要實體,以及這些實體之間的相互關係。
這就是為什麼它被稱為“實體”“關係”圖(ERD)!
當我們在ERD中談到實體時,我們通常指的是業務物件,例如人員/角色(例如學生)、有形的業務物件(例如產品)、無形的業務物件(例如日誌)等。“關係”是關於這些實體如何在系統中相互關聯的。
在典型的ER設計中,您可以找到描述實體、實體屬性和相互關係的符號,如圓角矩形和聯結器(具有不同的端點樣式)。
2. 什麼時候畫ER圖?
什麼時候畫erd ?雖然ER模型主要用於在概念視覺化和物理資料庫設計方面設計關係資料庫,但是在其他情況下,ER圖也可以提供幫助。下面是一些典型的用例。
2.1. 資料庫設計
——根據變化的規模,直接在DBMS中更改資料庫結構可能有風險。為了避免破壞生產資料庫中的資料,仔細計劃更改是很重要的。ERD是一個有用的工具。通過繪製ER圖來視覺化資料庫設計思想,您有機會識別錯誤和設計缺陷,並在資料庫中執行更改之前進行更正。
2.2. 資料庫除錯
——除錯資料庫問題很有挑戰性,特別是當資料庫包含許多表時,需要編寫複雜的SQL來獲取所需的資訊。通過使用ERD視覺化資料庫模式,您可以全面瞭解整個資料庫模式。您可以輕鬆地定位實體、檢視它們的屬性並確定它們與其他實體之間的關係。所有這些都允許您分析現有資料庫並更容易地發現數據庫問題。
2.3. 資料庫建立和補丁
—Visual Paradigm是一個ERD工具,它支援一個數據庫生成工具,可以通過ER圖的方式自動建立和補丁資料庫。因此,有了這個ER圖工具,ER設計就不再是一個靜態的圖,而是反映物理資料庫結構的一面鏡子。
2.4. 幫助收集需求
——通過繪製描述系統高階業務物件的概念性ERD來確定資訊系統的需求。這樣的初始模型還可以演化為物理資料庫模型,以幫助建立關係資料庫,或幫助建立流程圖和資料流模式。
3. ERD符號指南
ER圖包含實體、屬性和關係。在這一節中,我們將詳細討論ERD符號。
- 實體
ERD實體是一個系統內可定義的事物或概念,例如人/角色(例如學生)、物件(例如發票)、概念(例如概要)或事件(例如交易)(注:在ERD中,術語“實體”經常被用來代替“表”,但它們是相同的)。在確定實體時,將它們視為名詞。在ER模型中,實體顯示為圓角矩形,其名稱位於頂部,其屬性列在實體形狀的主體中。下面的ERD示例顯示了一個ER實體的示例。
- 實體屬性
屬性也稱為列,是持有它的實體的屬性或特徵。
屬性具有描述屬性的名稱和描述屬性型別的型別,如字串的varchar和整數的int。在為物理資料庫開發繪製ERD時,務必確保使用目標RDBMS支援的型別。
下面的ER關係圖示例顯示了一個包含一些屬性的實體。
- 主鍵
主鍵是一種特殊的實體屬性,它惟一地定義了資料庫表中的一條記錄。換句話說,不能有兩個(或多個)記錄共享主鍵屬性的相同值。下面的ERD示例顯示了具有主鍵屬性“ID”的實體“Product”,以及資料庫中表記錄的預覽。第三條記錄無效,因為另一條記錄已經使用了ID 'PDT-0002’的值。
- 外來鍵
外來鍵也稱為FK,是對錶中主鍵的引用。它用於標識實體之間的關係。注意,外來鍵不一定是唯一的。多條記錄可以共享相同的值。下面的ER關係圖示例顯示了一個具有一些列的實體,其中外來鍵用於引用另一個實體。
- 關係
兩個實體之間的關係表示這兩個實體以某種方式相互關聯。例如,一個學生可能註冊了一個課程。因此,實體學生與課程是相關的,而一種關係是連線他們之間的聯結器。
- 基數
基數定義一個實體中可能出現的事件數,該實體與另一個實體中可能出現的事件數相關聯。例如,一個隊有很多隊員。當在ERD中出現時,實體團隊和玩家以一對多的關係相互連線。
在ER圖中,基數表示為聯結器兩端的魚尾紋。三種常見的基本關係是一對一、一對多和多對多。
一對一的基數的例子
一對一關係主要用於將一個實體一分為二,以提供簡明的資訊並使其更易於理解。下圖顯示了一對一關係的一個示例。
一對多的基數的例子
一對多關係是指兩個實體X和Y之間的關係,其中X的一個例項可能連結到Y的多個例項,而Y的一個例項只連結到X的一個例項。
多對多的基數的例子
多對多關係是指兩個實體X和Y之間的關係,其中X可以連結到Y的多個例項,反之亦然。下圖顯示了一個多對多關係的示例。注意,在物理ERD中,多對多關係被分割為一對一對多關係。在下一節中,您將瞭解什麼是物理ERD。
4. 概念、邏輯和物理資料模型
型通常是在三個抽象層次上繪製的:
概念ERD /概念資料模型
邏輯ERD /邏輯資料模型
物理ERD /物理資料模型
雖然ER模型的所有三個級別都包含具有屬性和關係的實體,但是它們在建立的目的和目標受眾方面有所不同。
一般理解的三個資料模型是業務分析師使用概念模型和邏輯模型系統中的業務物件存在,而資料庫設計師或資料庫工程師闡述了概念和邏輯ER模型生成物理模型,提出了物理資料庫結構準備建立資料庫。下表顯示了三種資料模型之間的差異。
概念模型vs邏輯模型vs資料模型:
ERD featuresConceptualLogicalPhysicalEntity (Name)YesYesYesRelationshipYesYesYesColumns YesYesColumn’s Types OptionalYesPrimary Key YesForeign Key Yes
- 概念資料模型
概念性的ERD對系統中應該存在的業務物件及其之間的關係進行建模。開發了一個概念模型,通過識別所涉及的業務物件來呈現系統的總體情況。它定義了哪些實體存在,而不是哪些表。例如,“多對多”表可能存在於邏輯或物理資料模型中,但在概念資料模型中,它們只是作為沒有基數的關係顯示。
概念資料模型示例
注意:概念性ERD支援在建模兩個實體之間的“一種”關係時使用泛化,例如,三角形是一種形狀。這種用法類似於UML中的泛化。注意,只有概念性的ERD支援泛化。
- 邏輯資料模型
邏輯ERD是概念ERD的詳細版本。通過顯式定義每個實體中的列並引入操作實體和事務實體,可以開發邏輯ER模型來豐富概念模型。雖然邏輯資料模型仍然獨立於將要建立資料庫的實際資料庫系統,但是如果它影響設計,您仍然可以考慮這一點。
邏輯資料模型示例
- 物理資料模型
物理ERD表示關係資料庫的實際設計藍圖。物理資料模型通過為每個列分配型別、長度、可空值等來詳細說明邏輯資料模型。由於物理ERD表示在特定DBMS中資料應該如何結構化和關聯,因此考慮實際資料庫系統的約定和限制是很重要的。確保DBMS支援列型別,並且在命名實體和列時不使用保留字。
物理資料模型示例