1、概念
在設計關係型資料庫時,需要遵從不同的規範要求,設計出合理的資料庫,這些不同的規範要求稱為不同的資料庫正規化;
正規化:是離散數學中的知識,是為了解決資料儲存與優化的問題,資料儲存之後,凡是能通過關係尋找出來的資料,堅決不再重複儲存,最終的目的是為了減少資料的冗餘;
2、目前的關係型資料庫正規化有六種:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴斯-科德正規化(bcnf)、第四正規化(4nf)、第五正規化(5nf,又稱完美正規化);
3、滿足最低要求的正規化是第一正規化,越高的正規化資料庫冗餘越小,資料庫一般只需要滿足第三正規化就行了;
5、在資料庫設計中,正規化要解決的問題就是節省儲存空間,但是資料庫不單是要解決空間儲存的問題,還要保證資料庫的效率,所以資料庫的設計不可能完全按照正規化的要求實現,所以一般情況下,只要滿足3nf即可,所以正規化在資料庫設計當中只有指導意義,不是強制的規範;
6、簡單的理解就是:
第一正規化(1nf)要求屬性不可分割,每個欄位都應該是不可拆分的;
第二正規化(2nf)要求表中要有主鍵,表中其他欄位都依賴主鍵;
第三正規化(3nf)要求表中不能有其他表中存在的的相同欄位的資訊,通常通過外來鍵關聯,或者id去聯查;
1、第一正規化(1nf)
第一正規化要求表的字段具有原子性(不可再拆),意思就是在表設計時,字段儲存的資料,在取出來使用之前如果還需要額外的拆分處理才能使用,那麼就說表的設計不滿足第一正規化;
例如:不滿足第一正規化的表:
滿足第一正規化的表:
2、第二正規化(2nf)
第二正規化不允許表**現部分依賴,在表設計的過程中,如果有復合主鍵,且表中有其他欄位並不是由整個主鍵來確定,而是依賴主鍵中的某個字段,存在字段依賴主鍵的部分的問題,稱為部分依賴,第二正規化就是要解決這個問題;
例如:不滿足第二正規化的表:
注:例如上表中,復合主鍵是老師名稱和班級,但是表中的性別只是依賴老師,教室只是依賴班級,性別並不依賴班級,教室也不依賴講師,這就出現了性別和教室依賴主鍵的一部分,也就是部分依賴,這就不符合第二正規化了;
解決辦法:
(1):拆表,將性別和講師單獨成表,班級和教室也單獨成表
(2)取消復合主鍵,使用邏輯主鍵(比如id,沒有實際意義的字段)
3、第三正規化(3nf)
要滿足第三正規化,必須要滿足第二正規化,理論上講,一張表中的字段都應該直接依賴主鍵,如果表中存在乙個字段,是通過某個非主鍵欄位來實現最終依賴主鍵的,這種關係稱為傳遞依賴,第三正規化就是要解決傳遞依賴的問題的;
例如:不滿足第三正規化的表
注:以上表的設計中,id是邏輯主鍵(沒有業務主鍵),性別依賴老師存在,老師依賴主鍵,教室依賴班級,班級依賴主鍵,所以性別和教室都存在傳遞依賴,不滿足第三正規化;
解決辦法:把存在傳遞依賴的字段,以及依賴字段本身單獨取出來形成乙個表,然後再需要的時候,使用id對映join查出來;
對於關係型資料庫來說,滿足第三正規化就已經足夠了,巴斯-科德正規化(bcnf)、第四正規化(4nf)、第五正規化(5nf)在資料庫博主還不清楚有什麼實際意義,如下做簡單介紹
4、巴斯-科德正規化(bcnf)
定義: 關係模式r中,若每乙個決定因素都包含碼,則r屬於bcfn。
理解: 根據定義我們可以得到結論,乙個滿足bc正規化的關係模式有:
(1)所有非主屬性對每乙個碼都是完全函式依賴;
(2)所有主屬性對每乙個不包含它的碼也是完全函式依賴;
(3)沒有任何屬性完全函式依賴於非碼的任何一組屬性。
5、第四正規化(4nf)
定義: 限制關係模式的屬性之間不允許有非平凡且非函式依賴的多值依賴。
理解: 顯然乙個關係模式是4nf,則必為bcnf。也就是說,當乙個表中的非主屬性互相獨立時(3nf),這些非主屬性不應該有多值,若有多值就違反了4nf。
6、第五正規化(5nf)
要求:(1)必須滿足第四正規化;
(2)表必須可以分解為較小的表,除非那些表在邏輯上擁有與原始表相同的主鍵;
第五正規化是在第四正規化的基礎上做的進一步規範化。第四正規化處理的是相互獨立的多值情況,而第五正規化則處理相互依賴的多值情況。
參考**:
MySQL基礎 04 資料庫連線和正規化
一 內連線 也稱自然連線,是把兩個表匹配的關聯資料顯示出來。去重複列。select from student inner join sc on sc.id student.id 二 外連線 左外連線 返回左邊表的全部行,右邊表不匹配的返回空。右外連線 返回右邊表的所有行,左邊表不匹配的返回空。全外連...
資料庫 資料庫正規化
關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...
資料庫正規化 三正規化
所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...