第一正規化(1NF)
如果該關係的所有 attributes
的域都是原子的,則給定資料庫中的關係(或關係模式)在 first normal form
中。如果該域的所有元素都被視為不可分割的單元,則域是原子的。假設關係 employee
,屬性 name
,那麼關係不在 first normal form
中,因為 attribute name
的域元素可以分為 first name
和 last name
。
簡而言之,如果一個關係具有複合屬性 ,那麼它不是第一個正常形式。假設我們有以下關係:
EMPID |
名字 | 姓 | 薪水 | 位置 |
---|---|---|---|---|
DEPTX-101 | 約翰 | 工匠 | 12000 | 中間 |
Depty-201 | Carolyne | 威廉姆斯 | 18900 | 經理 |
第一行的 EmpId
可以分為:Deptx
(用於識別部門)和 101
,是組織內分配的唯一編號。顯然,屬性 EmpId
的域不是原子的,因此我們的關係不在於 first normal form
。
Disadvantes 面臨:
- 當使用這樣的員工身份時,可以通過編寫將
EmpId
的結構分解為Deptx
和101
的程式碼來找到員工的部門,這需要額外的程式設計。資訊也在程式中而不是在資料庫中編碼。 - 假設某個特定員工必須更改部門,那麼屬性
EmpId
必須在使用它的任何地方進行更新。
通過將它分為以下兩個關係,我們可以使我們的關係滿足時間 18:
關係 1
EMPID |
名字 | 姓 | 部門 |
---|---|---|---|
101 |
約翰 | 工匠 | DEPTX |
201 |
Carolyne | 威廉姆斯 | Depty |
關係 2
EMPID |
薪水 | 位置 |
---|---|---|
101 |
12000 | 中間 |
201 |
18900 | 經理 |
現在,如果我們必須更改部門,我們必須在關係 1 中只執行一次,現在確定部門也更容易。