04 資料庫正規化

2022-09-15 19:51:21 字數 2384 閱讀 2400

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 表中的每個域值只能是實體的乙個屬性或乙個屬性的...