第一正規化的核心原則是:資料表中的每一個欄位(Column)必須只存放「原子值」(Atomic Value),也就是不可再分割的最小單位,並且每一列(Row)都應該能被唯一識別。
換句話說:
每個欄位應該只包含單一值,而不是像「電話號碼1, 電話號碼2」這樣的多值欄位。
表中的每一筆資料都應該有唯一的識別方式,也就是需要有一個可以辨別資料列的「主鍵」。
主鍵是一個或多個欄位的組合,用來唯一標識資料表中的每一筆資料。主鍵的特性有:
常見的主鍵例子包括:
相反地,像「姓名」這類欄位通常不適合作為主鍵,因為姓名可能重複、也可能更改,無法保證唯一性與穩定性。
將 1NF 實作到資料表設計時,可以遵循以下步驟:
舉個例子,假設有以下資料表:
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 能讓資料表更易於查詢、更新與維護,是建立良好資料庫架構的基礎。