第一正規化 (1NF)



資料庫規範化是有效組織資料庫中資料的過程,目的是消除資料庫中的冗餘資料並確保資料依賴關係合理。各種規範化形式用於消除或減少資料庫表中的資料冗餘。

什麼是第一正規化 (1NF)?

第一正規化 (1NF) 設定了組織資料庫中資料的基本規則。如果一個數據庫滿足以下條件,則稱其處於第一正規化:

  • 規則 1(原子值) - 表的每一列都應只包含原子值。原子值是不能進一步細分的 值。

  • 規則 2(無重複組) - 沒有重複的資料組。這意味著表不應包含重複的列。

在設計資料庫表時,您必須注意至少符合第一正規化,否則在資料庫操作過程中會遇到很大的問題。

規則 1 - 原子值

表的每一列都應只包含原子值。原子值是不能進一步細分的 值。

考慮以下用於儲存客戶資料的 CUSTOMERS 表:

ID 姓名 年齡 薪資 城市 國家
1 Ramesh 32 2000.00 Hyderabad, Delhi 印度
2 Mukesh 40 5000.00 紐約 美國
3 Sumit 45 4500.00 馬斯喀特 阿曼
4 Kaushik 25 2500.00 加爾各答 印度

此表不處於第一正規化,因為城市列可以包含多個值。例如,第一行包含值“海得拉巴”和“德里”。

現在,為了使此表達到第一正規化,我們必須考慮一個實際問題,即客戶可以居住在不同的城市,這些城市可能在同一個國家或不同的國家。因此,我們將表拆分為兩個單獨的表,如下所示:

CUSTOMERS 表

ID 姓名 年齡 薪資
1 Ramesh 32 2000.00
2 Mukesh 40 5000.00
3 Sumit 45 4500.00
4 Kaushik 25 2500.00

CUSTOMERS_ADDRESS 表

ID 城市 國家
1 海得拉巴 印度
1 德里 印度
2 紐約 美國
3 馬斯喀特 阿曼
4 加爾各答 印度

規則 2 - 無重複組

沒有重複的資料組。這意味著表不應包含重複的列。

考慮以下用於儲存客戶資料的 CUSTOMERS 表:

ID 姓名 年齡 薪資 城市1 城市2 國家
1 Ramesh 32 2000.00 海得拉巴 德里 印度
2 Mukesh 40 5000.00 紐約 美國
3 Sumit 45 4500.00 馬斯喀特 阿曼
4 Kaushik 25 2500.00 加爾各答 印度

此表不處於第一正規化,因為我們重複了城市列兩次,並且您可以在當前表中看到一些問題。此表始終在磁碟上為兩個城市保留空間,無論該人是否居住在兩個城市。

為了消除重複的列並將錶轉換為第一正規化,請將表拆分為兩個表。將重複的列放入其中一個表中,如下所示:

CUSTOMERS 表

ID 姓名 年齡 薪資
1 Ramesh 32 2000.00
2 Mukesh 40 5000.00
3 Sumit 45 4500.00
4 Kaushik 25 2500.00

CUSTOMERS_ADDRESS 表

ID 城市 國家
1 海得拉巴 印度
1 德里 印度
2 紐約 美國
3 馬斯喀特 阿曼
4 加爾各答 印度

現在我們已經規範化了表,這些表滿足處於第一正規化的要求,現在我們可以為同一個客戶分配多個城市而不會浪費空間。

廣告