iT邦幫忙

1

資料庫設計 (五) - 第一正規化(1NF)

  • 分享至 

  • xImage
  •  

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

第一正規化的核心原則是:資料表中的每一個欄位(Column)必須只存放「原子值」(Atomic Value),也就是不可再分割的最小單位,並且每一列(Row)都應該能被唯一識別
換句話說:
每個欄位應該只包含單一值,而不是像「電話號碼1, 電話號碼2」這樣的多值欄位。
表中的每一筆資料都應該有唯一的識別方式,也就是需要有一個可以辨別資料列的「主鍵」。

什麼是主鍵(Primary Key)?

主鍵是一個或多個欄位的組合,用來唯一標識資料表中的每一筆資料。主鍵的特性有:

  • 不可重複:主鍵的值在整張表中必須唯一。
  • 非空值:主鍵欄位不能有空值(NULL)。
  • 穩定性:主鍵的值不應該經常變動,否則會影響資料的關聯性。

常見的主鍵例子包括:

  • 客戶編號(Customer ID)
  • 學生編號(Student ID)

相反地,像「姓名」這類欄位通常不適合作為主鍵,因為姓名可能重複、也可能更改,無法保證唯一性與穩定性。

如何將 1NF 應用到資料表中?

將 1NF 實作到資料表設計時,可以遵循以下步驟:

  1. 確認每個欄位是否都是原子值:避免出現複合資料(如用逗號分隔的多個電話號碼)。
  2. 確認資料列是否具有唯一識別方式:若沒有現成的唯一欄位,可以考慮增加一個主鍵欄位。
  3. 檢查欄位組合是否會產生重複列:如果某些欄位的組合可能對應到多筆資料,就需要重新設計結構或拆分表格。

舉個例子,假設有以下資料表:

student_name subject score
James Math, English 90

這違反了 1NF,因為「subject」欄位含有多個值。我們應該將其改為:

student_name subject score
James Math 90
James English 90

接著可以考慮加上編號作為主鍵(其餘欄位皆不適合做為主鍵),確保每列資料能夠唯一識別。

id student_name subject score
1 James Math 90
2 James English 90

總結

第一正規化(1NF)是資料庫設計的第一步,核心在於欄位必須是不可再分的原子值,且每一筆資料都需能被唯一識別。這能有效避免資料重複與結構混亂,提升資料的整潔性與一致性。
遵循 1NF 能讓資料表更易於查詢、更新與維護,是建立良好資料庫架構的基礎。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言