資料庫有三大正規化。
正規化的簡介
正規化的英文名稱是normal form,它是英國人e.f.codd(關聯式資料庫的老祖宗)在上個世紀70年代提出關聯式資料庫模型後總結出來的。正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是:1nf,2nf,3nf,bcnf,4nf,5nf,dknf,6nf。通常所用到的只是前三個正規化,即:第一正規化(1nf),第二正規化(2nf),第三正規化(3nf)。
資料往往種類繁多,而且每種資料之間又互相關聯,因此,在設計資料庫時,所需要滿足的正規化越多,那錶的層次及結構也就越複雜,最終造成資料的處理困難。這樣,還不如不滿足這些正規化呢。所以在使用正規化的時候也要細細斟酌,是否一定要使用該正規化,必須根據實際情況做出選擇。一般情況下,我們使用前三個正規化已經夠用了,不再使用更多正規化,就能完成對資料的優化,達到最優效果。
通俗的理解
第一正規化就是屬性不可分割,每個欄位都應該是不可再拆分的。比如乙個欄位是姓名(name),在國內的話通常理解都是姓名是乙個不可再拆分的單位,這時候就符合第一正規化;但是在國外的話還要分為first name和last name,這時候姓名這個字段就是還可以拆分為更小的單位的字段,就不符合第一正規化了。
第二正規化就是要求表中要有主鍵,表中其他其他欄位都依賴於主鍵,因此第二正規化只要記住主鍵約束就好了。比如說有乙個表是學生表,學生表中有乙個值唯一的字段學號,那麼學生表中的其他所有欄位都可以根據這個學號字段去獲取,依賴主鍵的意思也就是相關的意思,因為學號的值是唯一的,因此就不會造成儲存的資訊對不上的問題,即學生001的姓名不會存到學生002那裡去。
第三正規化就是要求表中不能有其他表中存在的、儲存相同資訊的字段,通常實現是在通過外來鍵去建立關聯,因此第三正規化只要記住外來鍵約束就好了。比如說有乙個表是學生表,學生表中有學號,姓名等字段,那如果要把他的系編號,系主任,系主任也存到這個學生表中,那就會造成資料大量的冗餘,一是這些資訊在系資訊表中已存在,二是系中有1000個學生的話這些資訊就要存1000遍。因此第三正規化的做法是在學生表中增加乙個系編號的字段(外來鍵),與系資訊表做關聯。
資料庫三大正規化簡單理解
資料庫設計當中三正規化是經常遇到的,如果實際專案資料庫設計中能達到第三正規化基本也就滿足要求了,那麼如何快速有效的理解三個正規化,同時應用於實際專案中去呢?首先看看標準定義的三個正規化 第一正規化 1nf 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即...
簡單理解資料庫三大正規化
書上講了好多,歸結起來3句話 1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 不符合第一正規化的例子 關聯式資料庫...
資料庫三大正規化理解
1nf 字段不可分 2nf 有主鍵,非主鍵字段依賴主鍵 3nf 非主鍵字段不能相互依賴 不符合第一正規化的例子 關聯式資料庫中create不出這樣的表 表 欄位1,欄位2 欄位2.1,欄位2.2 欄位3 存在的問題 因為設計不出這樣的表,所以沒有問題 不符合第二正規化的例子 假定選課關係表為sele...