[讀書筆記]規範化

規範化的對象:數據庫

目的:將數據轉變成一個有邏輯的、無重複的格式,能夠很容易將此格式再從新組合成一個總體。數組

     就是減小表的數據冗餘,減小數據存儲空間,使每一個表的用途更加明確,各表之間的關係更加科學。spa

範式種類:6種設計

但實際上只須要作到3種範式就能夠,後面三種只是有學術討論的意義對象

 

規範化總結:效率

規範化就是鍵,整個鍵,只是鍵。基礎

(分別對應第一範式,第二範式,第三範式)搜索

 

前提:總結

1.表只描述一個實體(不要簡化或組合);數據

2.全部行必須惟一,並且必須有一個主鍵;

3.列和行的順序必須是無關的。

 

第一範式:消除重複數組和保證原子性(數據是自包含和獨立的)

  原子性:每一列都單獨記錄一個數據,而不記錄過多的數據。好比一個列裏,包含了數量,單價和總價。那麼就要拆成三列。

第二範式:在第一範式的基礎上,每列必須依賴於整個鍵

  若是一個行是組合鍵,有一列只依賴於其中一個鍵,那麼就要把這個列單獨分在一張表中。好比一行:班級,學號,班主任,座位號。組合鍵爲班級和學號,班主任只依賴於班級。

第三範式:在第二範式的基礎上,任何列都不能依賴於非鍵列,不能有派生的列

   不能有派生列,好比,有兩個列:單價和總量,還有另一個列爲總價。能夠看出,總價是根據單價和總量派生出來的,應該刪掉。

  mark:有時須要反規範化——添加派生列,好比用戶須要常常查詢總價,若是進行第三範式,那麼用戶每次查詢總價都要查詢另外兩列,並進行運算,加大了查詢時間。經過反規範化,這裏犧牲點存儲空間,提升查詢效率,是值得的。

 

反規範化

要記住數據庫的設計的原則應該是具備適用性,要根據實際狀況靈活設計表格,而不是一味地進行規範化

好比,添加派生列,能夠提升搜索速度,下降查詢時間。

相關文章
相關標籤/搜索