三大範式:
簡單歸納:
第一範式(1NF):字段不可分;原子性。 字段不可再分,否則就不是關係數據庫;
第二範式(2NF):有主鍵,非主鍵字段依賴主鍵;唯一性 。一個表只能有一種數據;
第三範式(3NF):非主鍵字段不能相互依賴;每列都與主鍵有直接關係,不存在傳遞依賴。
第一範式(1NF):字段不可分
不可分割的意思就按字面理解就是最小單位,不能再分成更小單位了。
這個字段只能是一個值,不能被拆分成多個字段,否則的話,它就是可分割的,就不符合一範式。
不過能不能分割並沒有絕對的答案,看需求,也就是看你的設計目標而定。
第二範式(2NF):有主鍵,主鍵唯一性
爲什麼要有主鍵?沒有主鍵就沒有唯一性,沒有唯一性在集合中就定位不到這行記錄,所以要主鍵。
其他字段爲什麼要依賴於主鍵?因爲不依賴於主鍵,就找不到他們。更重要的是,其他字段組成的這行記錄和主鍵表示的是同一個東西,而主鍵是唯一的,它們只需要依賴於主鍵,也就成了唯一的。
第三範式(3NF):非主鍵字段不能相互依賴
就是要消除傳遞依賴,方便理解,可以看做是“消除冗餘”。
消除冗餘應該比較好理解一些,就是各種信息只在一個地方存儲,不出現在多張表中。