談談我對數據庫三範式的字面理解

今天看了看《數據結構系統原理》(黃靖 主編)這本書(備考自考,否則以個人品味,直接豆瓣9.0以上,哈哈哈) 首先看下書上給出的定義:數據庫

  • 第一範式(1NF):設 R 爲任一給定關係,若 R 中的每一個列與行的交點處的取值都是不可再分的基本元素,則 R 爲第一範式
  • 第二範式(2NF):設 R 爲任一給定關係,若 R 爲 1NF,且其全部非主屬性都徹底函數依賴於候選關鍵字,則 R 爲第二範式
  • 第三範式(3NF):設 R 爲任一給定關係,若 R 爲 2NF,且每個非主屬性都不傳遞函數依賴關係於候選關鍵字,則 R 爲第三範式

我的理解:數據結構

  • 第一範式(1NF):確保一張表的全部column(或字段)都是不可再分的,這一點我認同書上的說法,比較好理解(針對字段)
  • 第二範式(2NF):首先一張表至少定義一個主鍵或聯合主鍵,其次確保非主鍵的字段只能根據主鍵(若是是聯合主鍵,也只能是聯合主鍵,不能是聯合主鍵的子集)查詢的到(針對主鍵)
  • 第三範式(3NF):確保每個非主鍵,不能具備主鍵的特性(主鍵的特性:可以根據它查詢到惟一一條數據)(針對表)
    • 舉個反例:學生表有學號(主鍵),姓名,年齡, 系號,系名,系主任
    • 首先存在傳遞依賴關係:學號->學生->系號->系名->系主任
    • 根據個人定義,該表存在非主鍵<系號>擁有主鍵特性,由於能夠根據系號查詢惟一的<系名>和<系主任>
    • 因此應當將<系名>和<系主任>移至系表,學生表可保留<系號>來索引系表
  • 第三範式(3NF):第一次應該理解錯了。應該是非主鍵關鍵字,都必須直接依賴主鍵,不能經過傳遞依賴的方式依賴主鍵。

關於什麼叫候選關鍵字,能夠參考個人另外一篇博客:傳送門函數

函數依賴:學生的姓名能夠由學號決定,即姓名依賴學號。就像 y = f(x), 能夠看出 y 的取值大小依賴於 x 的大小:傳送門.net

綜上,我的淺薄理解,如有錯誤請指出,核證後當即改正blog

相關文章
相關標籤/搜索