舉例說明關係數據庫表的設計之三大範式
- 第一範式:第一範式(1NF)是指數據庫表的每一列都是不可分割的基本數據項
- 第二範式:第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。第二範式要求每一行都要有唯一標識存在,這個唯一屬性列被稱爲主關鍵字或主鍵、主碼。實體的屬性完全依賴於主關鍵字。
- 第三範式:第三範式是在第二範式的基礎上建立起來的。第三範式指:屬性不依賴於其他非主屬性。
舉例說明:
現有一張表:
存在的問題:
- 存在非常嚴重的冗餘,姓名,系名,班主任這三列大大重複。
- 添加數據存在問題,要想單獨添加系名和系主任,則無法辦到
- 數據刪除存在問題,刪除一名同學對應的系名和系主任也沒有了,數據依賴太強
解決辦法:
使用三大範式進行數據表的拆分:
1> 使用第一範式,將系列拆分爲系名和系主任兩列,結果如下圖:
2> 使用第二範式,將表拆分爲每列屬性可依賴於首列的兩張表,如圖所示:
>
3> 使用第三範式,繼續進行拆分,將表分爲僅依賴於首列主屬性的表
這樣就解決了上述存在的三個問題,表也拆分完畢。
簡單色說以下三大範式:第一範式就是說每個列就是是一個不可拆分的詞語,若還可以再細分,便不符合第一範式。第二範式就是告訴人們在建表的時候要確立主鍵,方便查找。第三範式就是說如果一張表可以拆分要繼續拆分。