探討實體-關係圖(ERD)的關鍵概念與元素
什麼是實體-關係圖(ERD)
實體-關係圖(ERD)是一種強大的資料模型工具,可讓開發人員和設計師建立資料及其關係的視覺化表示。ERD 基於實體的概念,實體是具有獨立存在的物件或概念,可在 ERD 中以矩形表示。屬性是描述實體特徵或特性的實體屬性,在 ERD 中以橢圓形表示。關係描述實體之間的關聯方式,並以連接相關實體的線條表示。

- ERD 常用於軟體開發和資料庫設計中,以建立資料模型的視覺化表示。它們幫助開發人員和設計師理解實體之間的關係,並識別資料模型中可能存在的任何問題。ERD 也有助於確保資料以邏輯且一致的方式組織,這對於高效且有效的資料庫設計至關重要。
- ERD 通常使用專用的軟體工具來建立,讓開發人員和設計師可以將實體、屬性和關係拖曳到畫布上。軟體隨後會自動產生必要的線條和符號來表示 ERD。雖然也可以使用筆和紙來建立 ERD,但由於現代資料模型的複雜性,這種方法較不常見。
- ERD 是資料庫設計與管理的寶貴工具,廣泛被科技產業中的各類專業人士使用,包括軟體開發人員、資料庫管理員和資料分析師。ERD 隨著時間演進,發展出新的符號與技術以提升其效能與效率。然而,實體、屬性和關係的基本概念始終保持一致,使 ERD 成為任何參與資料庫設計與管理人員不可或缺的工具。
實體-關係圖(ERD)的演變歷程
實體-關係圖(ERD)具有豐富的歷史,可追溯至 1970 年代,當時首次被提出作為資料庫系統中資料建模的方法。ERD 最初是作為 1970 年代與 1980 年代流行的結構化分析與設計技術的一部分而發展出來的。
- ERD 的創始者是電腦科學家彼得·陳(Peter Chen),他於 1976 年的論文中首次提出此概念,論文題為《實體-關係模型——朝向資料統一觀點的展望》。陳的論文提出了一種新的資料建模方法,專注於實體之間的關係,而非單獨的資料元素本身。
- 陳最初的 ERD 符號系統簡單且易於理解。它使用矩形表示實體,菱形表示關係,橢圓形表示屬性。陳的符號系統被廣泛採用,並成為 ERD 的標準符號。
- 隨著時間推移,資料庫設計與管理領域的其他研究人員和實務工作者也對 ERD 的發展有所貢獻。例如,另一位著名的電腦科學家詹姆斯·馬丁(James Martin)提出了資料流程圖的概念,用於模擬系統中實體之間的資料流動。
- 1980 年代,詹姆斯·倫鮑(James Rumbaugh)、伊瓦·雅各布森(Ivar Jacobson)和格雷迪·布奇(Grady Booch)提出了一種 ERD 的新符號系統。這種符號系統稱為統一模型語言(UML),融合了 ERD 的許多概念以及其他建模技術。UML 在 1990 年代及 2000 年代初期成為軟體開發的主流符號系統。
如今,ERD 仍然是資料建模與資料庫設計中不可或缺的工具。儘管符號系統隨著時間演變,但實體、屬性和關係的基本概念始終不變。ERD 廣泛應用於商業流程建模、軟體開發和資料庫設計等領域。
ERD 的關鍵元素
ERD 使用一組關鍵概念與元素來表示資料模型。理解這些關鍵概念與元素,對於建立準確且有效的 ERD 至關重要。在本文中,我們將探討 ERD 的關鍵概念與元素。

實體
實體是具有獨立存在的物件或概念,可在 ERD 中以矩形表示。實體的例子包括客戶、訂單、產品、員工和供應商。每個實體都以獨特的名稱表示,用以識別並與其他實體區分。
屬性
屬性是描述實體特徵或特性的實體屬性。屬性的例子包括客戶姓名、客戶編號、產品價格、產品代碼等。每個屬性都有獨特的名稱和資料類型(例如:文字、數字、日期等)。
主鍵
主鍵是一種唯一識別符,用於區分表格中的某一筆記錄與其他所有記錄。主鍵是由一個或多個屬性組合而成,能唯一識別一筆記錄。在 ERD 中,主鍵以底線標示的屬性表示。
外鍵
外鍵是某一表格中的屬性,指向另一表格的主鍵。它用於建立兩個表格之間的關係。在 ERD 中,外鍵以指向其所參考主鍵的箭頭標示的屬性表示。
關係
關係描述實體之間的關聯方式。關係在 ERD 中以連接相關實體的線條表示。關係共有三種類型:
- 一對一(1:1)關係:在一對一關係中,一個表格中的每一筆記錄僅與另一個表格中的一筆記錄相關聯。此關係以連接兩個實體的直線表示。
- 一對多(1:N)關係:在一對多關係中,一個表格中的每一筆記錄與另一個表格中的多筆記錄相關聯。此關係以一端帶箭頭的線條表示,箭頭指向「多」的一方。
- 多對多(N:N)關係:在多對多關係中,一個資料表中的多筆記錄與另一個資料表中的多筆記錄相關聯。此關係以一條兩端各有一個箭頭、彼此相向的線來表示。
基數
基數描述了兩個資料表在關係中可相關聯的記錄數量。基數有三種類型:
- 一(1):僅能與另一個資料表中的單一筆記錄相關聯。
- 多(N):多筆記錄可與另一個資料表相關聯。
- 零或一(0..1):與另一個資料表相關聯的記錄數量為零或一筆。
資料模型設計的關鍵概念
ERD、資料庫結構圖、資料庫與SQL在資料庫設計與管理的脈絡中彼此相關。
- ERD(實體關係圖):ERD 是一種圖形化表示法,用以顯示資料庫中實體及其屬性之間的關係。ERD 用於在資料庫實作前設計與視覺化其結構,同時也用來識別資料庫中不同實體之間的關係。
- 資料庫結構圖:資料庫結構圖是用來組織資料庫中資料的藍圖或規劃。它定義了資料的組織方式,以及資料庫中不同部分之間的關聯方式。結構圖會指定資料表的結構、每個資料表中的欄位,以及資料表之間的關係。
- 資料庫:資料庫是一組以可有效檢索與操作的方式組織並儲存的資料集合。資料庫被用來儲存與管理大量資料,應用範圍從簡單的資料儲存到複雜的商業應用。
- SQL(結構化查詢語言):SQL 是一種用於管理與操作關聯式資料庫的程式語言。它用於建立、修改與查詢資料庫。SQL 用來從資料庫中取得資料、插入新資料、更新現有資料以及刪除資料。SQL 是大多數關聯式資料庫管理系統(RDBMS),如 Oracle、MySQL 和 Microsoft SQL Server 中所使用的標準語言。
換句話說,ERD 與資料庫結構圖用來設計資料庫的結構,而資料庫是資料儲存的地方,SQL 則用來與資料庫互動。這些元件共同構成設計、建立與管理資料庫的關鍵。
資料模型範例:客戶關係管理系統
一家公司希望透過開發一個新系統來改善其客戶關係管理,該系統能有效管理客戶資料。公司擁有龐大的客戶群,希望能夠追蹤客戶的聯絡資訊、購買紀錄、偏好與投訴內容。目前的系統效率低下,資料難以快速取得。公司希望開發一個新系統,能更有效地儲存與管理客戶資料,並為使用該系統的員工提供更佳的使用者體驗。
為達成此目標,公司需要建立一個資料模型,以呈現不同實體(如客戶、訂單、產品與投訴)之間的關係。該資料模型必須設計得易於使用、具可擴展性,並能處理大量資料。此外,資料模型還應能產生關於客戶行為、購買模式及其他指標的報表,協助公司改善行銷與銷售策略。
公司需要一個能處理大量資料、有效管理不同實體之間關係,並能快速存取客戶資訊的解決方案。資料模型也應能因應公司成長與業務擴張而進行調整。公司正在尋找一個資料模型解決方案,以協助達成目標並提升客戶關係管理。
根據問題描述建立ERD

根據ERD產生資料庫結構圖
此程式碼為我們識別出的五個實體建立資料表,並包含其屬性與關係。其中客戶資料表的主鍵為customer_id,以及Orders 和 Complaints 表具有引用 customer_id 的外鍵Customers 表。Orders 和 Order_Items 表具有由 order_id 和 product_id.
此 SQL 程式碼可用於建立問題描述中所述 CRM 系統的資料庫結構。
CREATE TABLE Customers (
customer_id INT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
phone VARCHAR(20) NOT NULL,
address VARCHAR(100) NOT NULL
);CREATE TABLE Products (
product_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
描述 VARCHAR(200) 不可為空,
價格 DECIMAL(10,2) 不可為空
);建立資料表 Orders (
訂單編號 INT 主鍵,
客戶編號 INT 不可為空,
訂單日期 DATE 不可為空,
外鍵 (customer_id) 參照 Customers(customer_id)
);建立資料表 Order_Items (
訂單編號 INT 不可為空,
產品編號 INT 不可為空,
數量 INT 不可為空,
主鍵 (order_id, product_id),
外鍵 (order_id) 參照 Orders(order_id),
外鍵 (product_id) 參照 Products(product_id)
);建立資料表 Complaints (
投訴編號 INT 主鍵,
客戶編號 INT 不可為空,
投訴內容 VARCHAR(500) 不可為空,
投訴日期 DATE 不可為空,
外鍵 (customer_id) 參照 Customers(customer_id)
);
從ERD與資料庫出發的逐步指南
以下是由問題描述建立資料庫的逐步指南:
- 問題描述:從明確定義要儲存的資料以及它們之間關係的問題描述開始。這可能需要與利害關係人溝通,或檢閱現有的系統與文件,以識別實體及其屬性。
- 實體關係圖(ERD):建立ERD以視覺化呈現實體及其關係。此圖表應包含實體、其屬性以及彼此之間的關係。
- 資料庫結構: 根據ERD,建立一個資料庫結構,定義儲存資料所需的表格、欄位和限制條件。這可能涉及將ERD中的實體和關係轉換為資料庫結構中的表格、欄位和關係。
- 資料類型與限制條件: 對資料庫結構中的每個欄位,選擇能儲存必要資料的適當資料類型。加入限制條件,例如主鍵、外鍵和唯一性限制,以確保資料完整性。
- SQL程式碼: 寫出建立資料庫結構中定義的表格、欄位和限制條件的SQL程式碼。此程式碼可執行以建立實際的資料庫。
- 填入資料庫資料: 資料庫建立完成後,使用SQL的INSERT語句填入資料。
- 測試資料庫: 測試資料庫,確保其運作正常,且資料能正確儲存與取得。
- 維護資料庫: 隨著系統的演進,持續透過必要時更新和修改結構來維護資料庫。這可能包括新增表格或欄位、修改現有表格或欄位,或刪除過時的表格或欄位。
結論
ERD是設計與視覺化資料模型的強大工具。理解ERD的關鍵概念與元素,對於建立有效且準確的ERD至關重要。掌握這些概念後,開發人員可以建立結構良好、效率高的資料庫,並能輕鬆維護與擴展。
總而言之,從ERD與資料庫結構建立資料庫,是開發功能健全且有效的資料庫系統的關鍵步驟。透過逐步的方法,從明確的問題描述開始,經過ERD、資料庫結構與SQL程式碼的建立,可確保資料庫符合使用者需求,並具備可擴展性與可維護性的設計考量。雖然此過程可能耗時且複雜,但花時間正確執行,長期而言可節省時間與精力,並建立出既高效又有效的資料庫系統。遵循這些步驟,任何人都能建立符合自身需求的資料庫,並為組織的成功做出貢獻。












