数据库 · 4 11 月, 2024

簡明易懂的介紹數據庫三個範式 (數據庫三個範式)

簡明易懂的介紹數據庫三個範式

在數據庫設計中,範式(Normalization)是一個重要的概念,旨在減少數據冗餘並提高數據完整性。數據庫的三個主要範式分別是第一範式(1NF)、第二範式(2NF)和第三範式(3NF)。本文將對這三個範式進行簡明易懂的介紹,幫助讀者理解其基本原則及應用。

第一範式(1NF)

第一範式的主要目標是確保數據表中的每一個欄位都只包含原子值,即每個欄位的值都是不可再分的。這意味著在一個數據表中,不能有重複的欄位或多值欄位。

範例

顧客表
+----+----------+-----------------+
| ID | 姓名     | 電話            |
+----+----------+-----------------+
| 1  | 張三     | 12345678        |
| 2  | 李四     | 87654321        |
| 3  | 王五     | 23456789, 34567890 |
+----+----------+-----------------+

在上述顧客表中,王五的電話欄位包含了多個電話號碼,這不符合第一範式。為了滿足1NF,我們需要將其拆分為多行:

顧客表
+----+----------+----------+
| ID | 姓名     | 電話     |
+----+----------+----------+
| 1  | 張三     | 12345678 |
| 2  | 李四     | 87654321 |
| 3  | 王五     | 23456789 |
| 3  | 王五     | 34567890 |
+----+----------+----------+

第二範式(2NF)

第二範式的要求是在滿足第一範式的基礎上,消除部分依賴。這意味著每個非主鍵欄位必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。

範例

訂單表
+----+----------+----------+----------+
| 訂單ID | 顧客ID   | 顧客姓名 | 顧客地址 |
+----+----------+----------+----------+
| 1  | 1        | 張三     | 地址A    |
| 2  | 2        | 李四     | 地址B    |
| 3  | 1        | 張三     | 地址A    |
+----+----------+----------+----------+

在這個例子中,顧客姓名和顧客地址是依賴於顧客ID,而不是訂單ID。為了滿足第二範式,我們可以將顧客信息拆分到另一個表中:

顧客表
+----+----------+----------+
| 顧客ID | 顧客姓名 | 顧客地址 |
+----+----------+----------+
| 1  | 張三     | 地址A    |
| 2  | 李四     | 地址B    |
+----+----------+----------+

訂單表
+----+----------+
| 訂單ID | 顧客ID   |
+----+----------+
| 1  | 1        |
| 2  | 2        |
| 3  | 1        |
+----+----------+

第三範式(3NF)

第三範式要求在滿足第二範式的基礎上,消除傳遞依賴。這意味著非主鍵欄位不能依賴於其他非主鍵欄位。

範例

產品表
+----+----------+----------+----------+
| 產品ID | 產品名稱 | 類別     | 類別描述 |
+----+----------+----------+----------+
| 1  | 蘋果     | 水果     | 新鮮水果 |
| 2  | 香蕉     | 水果     | 新鮮水果 |
| 3  | 胡蘿蔔   | 蔬菜     | 健康蔬菜 |
+----+----------+----------+----------+

在這個例子中,類別描述依賴於類別,而不是產品ID。為了滿足第三範式,我們可以將類別信息拆分到另一個表中:

類別表
+----+----------+----------+
| 類別   | 類別描述 |
+----+----------+----------+
| 水果   | 新鮮水果 |
| 蔬菜   | 健康蔬菜 |
+----+----------+----------+

產品表
+----+----------+----------+
| 產品ID | 產品名稱 | 類別     |
+----+----------+----------+
| 1  | 蘋果     | 水果     |
| 2  | 香蕉     | 水果     |
| 3  | 胡蘿蔔   | 蔬菜     |
+----+----------+----------+

總結

數據庫的三個範式是設計高效、無冗餘數據庫的重要原則。第一範式確保數據的原子性,第二範式消除部分依賴,而第三範式則消除傳遞依賴。通過遵循這些範式,開發者可以設計出更具可維護性和擴展性的數據庫結構。

如果您正在尋找高效的數據庫解決方案,考慮使用香港VPS雲伺服器來支持您的業務需求。無論是數據庫管理還是應用部署,選擇合適的伺服器將有助於提升您的業務效率。