ERD 就是 Entity-Relationship Diagram(實體關聯圖) 的縮寫。它是一種把你的資料庫結構視覺化的方式,會顯示實體(table)之間是怎麼連結的。
想像一下,ERD 就像是資料庫的捷運地圖。每個車站就是一個 table,車站間的線路就是關聯。這張地圖能幫你搞懂怎麼在車站間移動(也就是 table 怎麼互動)。
ERD 包含:
- 實體:就是像「學生」、「課程」、「老師」這種物件或 table。
- 屬性:就是 table 裡的欄位,像
ID、名字、姓氏。 - 關聯:就是 table 之間的線,顯示關係,比如一個學生可以選很多課。
用 ERD 不只可以規劃資料庫,還能讓同事或主管一眼看懂結構。對任何開發者來說,這都是超強的工具!
ERD 的基本元素
- 實體
實體就像是迷你資料庫。每個實體都對應到你系統裡想管理的真實物件或概念。舉例來說:
- 「學生」table。
- 「課程」table。
- 「借閱」table(在圖書館系統裡)。
範例:
+---------------+
| 學生 |
+---------------+
| ID |
| 名字 |
| 姓氏 |
| 出生日期 |
+---------------+
- 屬性 屬性就是實體的獨立特徵或性質。它們在資料庫 table 裡就是欄位。例如:
- 對「學生」table 來說,可以有
ID、名字、姓氏。 - 對「課程」table 來說,有
課程ID、課程名稱。
在 ERD 裡,這些通常寫在代表實體的長方形裡面。
實體之間的關聯
關聯就是顯示兩個實體怎麼互動。來複習一下主要的關聯型態:
- 一對一 (1:1):比如每個學生都有一個唯一的證件。
- 一對多 (1:N):比如一個老師可以教很多課。
- 多對多 (M:N):比如很多學生可以選很多課。
「一對多」關聯範例:
學生 (1) <----- 已選 -----> (N) 課程
在資料庫裡實作關聯時,通常會用 外鍵。
怎麼畫 ERD?
來看看一步步畫 ERD 的流程,還有圖書館的範例。
步驟 1:定義實體
你的任務是把系統拆成主要的物件。比如圖書館系統:
- 「書籍」。
- 「讀者」。
- 「借閱」。
範例:
+-------------+ +--------------+ +------------+
| 書籍 | | 讀者 | | 借閱 |
+-------------+ +--------------+ +------------+
| ID | | ID | | ID |
| 書名 | | 名字 | | 讀者 |
| 作者 | | 姓氏 | | 書籍 |
| ISBN | | 出生日期 | | 借閱日期 |
+-------------+ +--------------+ +------------+
步驟 2:加上屬性
每個實體都要有關鍵屬性。例如:
- 「書籍」table 要有
ID(主鍵)、書名、作者、ISBN。 - 「讀者」table 要有
ID、名字、姓氏。
步驟 3:建立關聯
現在把實體間的關聯加進來:
- 「借閱」和「書籍」有關聯(一個書可以被借很多次)。
- 「借閱」和「讀者」有關聯(一個讀者可以借很多書)。
步驟 4:視覺化
可以用任何畫圖工具,例如:
- draw.io
- dbdiagram.io
- Lucidchart
- Microsoft Visio
圖會長這樣:
[讀者] ----(1:N)---- [借閱] ----(N:1)---- [書籍]
每個關聯都加上資料型態和說明,例如:
- 讀者ID 在「借閱」裡要連到「讀者」table 的主鍵。
範例:網路商店的 ERD
對網路商店來說,邏輯結構會包含:
- 用戶(註冊客戶)。
- 商品。
- 訂單。
步驟 1:實體
- 用戶:
用戶ID、名字、Email。 - 商品:
商品ID、名稱、價格。 - 訂單:
訂單ID、用戶ID、訂單日期。
步驟 2:建立關聯
- 一個用戶可以下很多訂單(1:N)。
- 一個訂單可以包含很多商品(M:N)。
完整 ERD 圖:
[用戶] ----(1:N)---- [訂單] ----(N:M)---- [商品]
要實作多對多關聯,可以加一個中介 table:
- 訂單內容:
訂單ID、商品ID、數量。
畫 ERD 的小撇步
先想清楚你想在資料庫裡看到什麼。一切都從理解你的 domain 開始。
只放真的重要的屬性和實體。太細會讓人看不懂。
確保所有關聯都合邏輯。如果哪個關聯怪怪的,就再檢查一次。
用能幫你畫圖的工具,這樣會省超多時間跟力氣。
GO TO FULL VERSION