資料庫管理系統 - 實體關係模型基本概念

你好,未來的數據庫魔法師們!今天,我們將深入探索實體-關係(ER)模型的迷人世界。作為你們友善的鄰居計算機科學老師,我將帶領你們踏上這段旅程,即使你們從未寫過一行代碼。所以,拿起你的虛擬筆記本,讓我們開始吧!

DBMS - ER Model Basic Concepts

實體

什麼是實體?

實體就像是數據庫宇宙中的星星。它是一個事物、一個人、一個地方或一個我們想儲存信息的概念。想像你正在為一家圖書館創建數據庫。書籍、作者和讀者都將是實體。

讓我們看一個簡單的例子:

實體 描述
書籍 一種實體或數字閱讀材料
作者 一個寫書的人
讀者 一個借書的人

### 實體集

現在,想像一個標有"書籍"的大盒子,裡面裝滿了你圖書館中的所有書籍。這個盒子就是我們所稱的實體集 - 一組相似的實體。這個盒子中的每一本書都是"書籍"實體集中的獨一無二的實體。

## 屬性

### 什麼是屬性?

如果實體是我們數據庫宇宙中的星星,那麼屬性就是讓每顆星星閃爍的細節。它們是描述實體的性質或特徵。

讓我們在我們的圖書館例子中進行擴展:


| 實體     | 屬性                            |
|----------|--------------------------------|
| 書籍      | 國際標準書號, 標題, 出版日期, 遊類 |
| 作者      | 作者ID, 姓名, 出生日期, 國籍     |
| 讀者      | 讀者ID, 姓名, 地址, 電話號碼     |

這些屬性中的每一個都幫助我們更精確地識別和描述實體。例如,ISBN(國際標準書號)是每本書的唯一標識符。

屬性的類型

不是所有的屬性都是平等的。讓我們看看一些不同的類型:

  1. 簡單屬性:這些是最基本的單位,如一個人的年齡。
  2. 組合屬性:這些可以分為更小的部分,如地址(街道,城市,郵政編碼)。
  3. 單值屬性:這些對特定實體只有一個值,如一個人的出生日期。
  4. 多值屬性:這些可以有多个值,如一個人的電話號碼。
  5. 派生屬性:這些可以從其他屬性計算得出,如年齡(從出生日期派生)。

這裡有一個總結這些類型的表格:

屬性類型 示例
簡單 年齡
組合 地址(街道,城市,郵政編碼)
單值 出生日期
多值 電話號碼
派生 年齡(從出生日期計算)

## 關係

### 什麼是關係?

現在,讓我們在我們的數據庫宇宙中連接星星!關係是兩個或更多實體之間的關聯。在我們的圖書館例子中,一個作者"寫"了一本書,一個讀者"借"了一本書。

### 關係的類型

關係有不同風味,這取決於涉及多少實體:

1. **一元關係**:同一實體集中的實例之間的關係。
2. **二元關係**:兩個實體集中的實例之間的關係。
3. **三元關係**:涉及三個實體集中的實例的關係。

讓我們用我們的圖書館例子來說明這些:


| 關係類型 | 示例                                    |
|----------|---------------------------------------|
| 一元     | 書籍 "是續集" 書籍                    |
| 二元     | 作者 "寫" 書籍                        |
| 三元     | 讀者 "借" 書籍 "從" 圖書館分支        |

關係中的基數

基數就像是我們數據庫宇宙的交通規則。它定義了一個實體的多少實例可以與另一個實體的實例相關聯。主要類型有:

  1. 一對一 (1:1):實體A的一個實例與實體B的正好一個實例相關聯,反之亦然。
  2. 一對多 (1:N):實體A的一個實例可以與實體B的許多實例相關聯,但B的每一個實例只與A的一個實例相關聯。
  3. 多對多 (M:N):實體A的許多實例可以與實體B的許多實例相關聯。

讓我們看看這如何應用在我們的圖書館中:

基數 示例
一對一 書籍 "有" ISBN(每本書有一個獨一無二的ISBN)
一對多 作者 "寫" 書籍(一個作者可以寫多本書)
多對多 讀者 "借" 書籍(許多讀者可以借許多書籍)


這就是它,各位!我們已經闡述了ER模型的基本概念。記住,就像任何一個好故事一樣,一個設計良好的數據庫告訴我們它的角色(實體)、他們的特質(屬性)以及他們如何互動(關係)。

當我們結束時,我回想起在我教學初期的一個有趣的插曲。我曾經試圖用浪漫喜劇的比喻來解釋關係。讓我們就這樣說,將數據庫關係比作約會場景導致了一些非常困惑(和開心)的學生!

繼續練習這些概念,不久你將會在任何地方看到實體和關係 - 從你喜歡的咖啡店到你的社交媒體動態。快樂建模!

Credits: Image by storyset