數據庫設計之範式與冗餘設計

數據庫設計之範式與冗餘設計

第一範式(1NF)

  • 概念

    數據表的每個字段(屬性)必須是唯一的、不可分割的。

  • 唯一性

    比如說:在一張學生信息表裏不能有兩個名稱都是name的字段。

  • 不可分割性

    比如說:在一張學生信息表不能出現類似name_mobile這樣的字段,很明顯name_mobile是可以分割成namemobile兩個字段的。

第二範式(2NF)

  • 概念

    數據表的每條記錄必須是唯一的(主鍵約束),且非主屬性依賴於主屬性。

  • 唯一性

    比如說:不能同時存在id = 1的記錄(id爲主鍵)。

  • 依賴性

    比如說:在一張學生信息表(id爲主鍵),不應該出現course_name(課程名稱,依賴於course_id)這樣的字段,因爲,如果有一天,《心理健康教育》課程名要改成《心理健康教育雜談》,這就得需要改課程表,還得回來修改學生信息表的課程名稱。

第三範式(3NF)

  • 概念

    數據表中不應該存在多餘的字段,也就是說每個字段都不能由其他字段推理得到。

  • 例子

    比如說:學生信息表裏不能同時存在province_id(省份ID)、city_id(城市ID)這兩個字段,因爲province_id可以由city_id推理得到

逆範式()

  • 概念

    就是不按照標準的五大範式去設計數據庫。

  • 在數據庫的實踐過程中,我們可能遇到數據量非常大的數據表,這時候去做join查詢是非常損耗性能的,甚至導致數據庫連接超時、掛掉等問題。所以呢,有時候就需要數據庫多冗餘設計,對一些字段做冗餘到關聯表中,以避免大表之間的join。(其實也就是犧牲空間,換取時間的說~~~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章