First Normal Form(1NF)
阿新 • • 發佈:2018-12-16
假如一個數據庫連第一正規化都不滿足,那肯定是個設計的很
糟糕的資料庫
。
Rules for First Normal Form
Rule 1: 每個屬性的取值必須是原子的
每列的取值必須是單個值(single value),稍後舉例說明
Rule 2: 每一列的domain必須是一樣的
很顯然,取值要不然是字串,要不然是int,總之每列的資料型別不能不一樣.
Rule 3: 不存在相同的列名
列名一定不能相同,不然BDMS會產生混淆
Rule 4: 順序無關緊要
第一列可以放在第二列,第一行也可以放到第二行去,這都不影響。
Time for an Example
表頭依次是學生id,學生姓名,學生所選課程
roll_no | name | subject |
---|---|---|
101 | Akon | OS, CN |
103 | Ckon | Java |
102 | Bkon | C, C++ |
解決辦法
非常簡單,把multi-value給它一個一個拆成single value,如下所示:
roll_no | name | subject |
---|---|---|
101 | Akon | OS |
101 | Akon | CN |
103 | Ckon | Java |
102 | Bkon | C |
102 | Bkon | C++ |
其實第一正規化是非常非常基礎的要求了,幾乎沒做什麼強的限定。4條約束也是十分自然