資料庫管理系統 - 實體關係圖表示法

你好,有志於資料庫設計的各位!今天,我們將要深入探索實體關係(ER)圖的精彩世界。作為你們親切的小區計算機科學老師,我將指導你們了解這個在資料庫設計中不可或缺的概念。不會寫程式碼也不要緊 - 我們會從基礎開始,逐步學習。那麼,來一杯咖啡(或者如果你喜歡,來一杯茶),我們開始吧!

DBMS - ER Diagram Representation

實體

什麼是實體?

實體就像真實世界中的“事物”或“對象”,我們想在數據庫中存儲有關它的信息。把它看作句子中的一個名詞。例如,在一個學校數據庫中,我們可能會有像“學生”、“老師”或“課程”這樣的實體。

如何在ER圖中表示實體

在ER圖中,我們將實體表示為一個包含實體名稱的矩形。這就是那麼簡單!

+---------+
| 學生    |
+---------+

在這個例子中,“學生”是我們的實體。簡單吧?

強實體與弱實體

現在,讓我們來點刺激的。我們有兩種類型的實體:

  1. 強實體:這是一種可以獨立存在的實體。就像不需要助手就能獨立行動的超級英雄。
  2. 弱實體:這種實體依賴於另一個實體才能存在。它更像是蝙蝠俠的羅賓。

在ER圖中,我們用雙矩形來表示弱實體:

+===========+
|  地址    |
+===========+

在這裡,“地址”可能是一個弱實體,因為它依賴於“學生”或“老師”實體才能存在。

屬性

什麼是屬性?

屬性是實體的特徵或屬性。如果實體是一個名詞,那麼把屬性看作描述它的形容詞。對於我們的“學生”實體,屬性可能包括“姓名”、“年齡”、“學生ID”等。

屬性的類型

讓我們分解不同類型的屬性:

屬性類型 描述 表現形式
簡單 一個不可分割的值 椭圓連接到實體
複合 可以分為更小的子部分 椭圓與連接的椭圓
多值 可以有多个值 雙椭圓
派生 從其他屬性計算得出 虛線椭圓
唯一標識實體實例 底線椭圓

在ER圖中表示屬性

讓我們看看這些在ER圖中是如何呈現的:

(姓名)
|
(年齡)
|
+--------+    (學生ID)
| 學生 |------(地址)
+--------+        |
((電話號碼))
|
/(GPA)\

在這個圖中:

  • “姓名”、“年齡”和“地址”是簡單屬性
  • “學生ID”是鍵屬性(注意底線)
  • “電話號碼”是多值屬性(注意雙椭圓)
  • “GPA”是派生屬性(注意虛線椭圓)

關係

什麼是關係?

關係是兩個或多個實體之間的連接。它就像句子中的一個動詞,描述實體如何相互交互。例如,一個學生“選修”一門課程。

在ER圖中表示關係

我們將關係表示為ER圖中的菱形,並用線連接到相關的實體。

+---------+        +-----------+
| 學生    |--------| 選修     |-------- | 課程 |
+---------+        +-----------+         +--------+

關係中的基數

基數告訴我們一個實體的多少個實例可以與另一個實體在關係中相關聯。這就像UML中的多重性,如果你熟悉那個話。

我們有幾種類型的基數:

  1. 一對一(1:1)
  2. 一對多(1:N)
  3. 多對一(N:1)
  4. 多對多(M:N)

讓我們看看我們是如何表示這些的:

// 一對一
+---------+        +-----------+        +---------+
| 學生    |--------| 有       |--------| 地址    |
+---------+        +-----------+        +---------+
|                                       |
1                                       1

// 一對多
+---------+        +-----------+        +---------+
| 老師    |--------| 授課     |--------| 課程   |
+---------+        +-----------+        +---------+
|                                       |
1                                       N

// 多對多
+---------+        +-----------+        +---------+
| 學生    |--------| 選修     |--------| 課程   |
+---------+        +-----------+        +---------+
|                                       |
M                                       N

參與約束

參與約束告訴我們實體的所有實例是否必須參與關係。我們有兩種類型:

  1. 完全參與:所有實例必須參與(用雙線表示)
  2. 部分參與:一些實例可能不參與(用單線表示)

這裡有一個例子:

+---------+        +-----------+        +---------+
| 學生    |========| 選修     |--------| 課程   |
+---------+        +-----------+        +---------+

在這個圖中,雙線表示所有學生必須選修課程(完全參與),而單線顯示不是所有課程都必須有學生選修(部分參與)。

好了,各位!我們已經涵蓋了ER圖表示法的基本知識。記住,熟能生巧。嘗試為你熟悉的系統創建ER圖 - 也許是你學校的圖書館系統或當地的外賣披薩服務。越多練習,就越會變得自然。

當我們結束時,我想起了一個有趣的往事。在我教學的早期,我曾經有一個學生用表情符號代替形狀來繪製他的整個ER圖。雖然這不是標準的表示法 - 但它確實讓評分過程變得難忘!

繼續探索,繼續提問,最重要的是,在資料庫設計中玩得開心。直到下次,快樂地繪製圖表吧!

Credits: Image by storyset