資料庫設計是指對於乙個給定的應用環境,構造最右的資料庫模式,建立資料庫及其應用系統,使其能夠有效儲存資料,滿足使用者的需求
第一正規化是指在乙個關係中,要求每個屬性都是不可再分割的如上圖所示的**中,成績實際可以繼續分割,因而不滿足第一正規化的要求;如果將其轉化成第一正規化,則可以將成績繼續分割,如下圖所示:
如果某個關係滿足第一正規化,而且它所有的非碼屬性都完全依賴於整個候選碼(不存在部分依賴),則滿足第二正規化舉例說明:如果存在下面的一張學生選課表,由於表的候選碼組是第二正規化也可理解為,在第一正規化的基礎上,每個表只描述一件事情
(學號,課程名稱)
,其中姓名
字段就是部分依賴於候選碼組(姓名欄位僅依賴學號
屬性也成立),不滿足第二正規化的規定實際上,除了
姓名
字段,專業
、班主任
欄位也都是對候選碼存在部分依賴的關係由於標的不完全依賴關係,會導致許多的問題出現:
資料冗餘
當學生數量較多時,課程名稱將會重複出現,形成冗餘的資料
更新異常
如果部分課程需要更改課程名稱,那麼該課程對應的所有學生選課表中的資料都需要更新,容易出現更新異常,且需要增加工作量
插入異常
如果增加乙個新的課程,且暫時沒有學生選擇這個課,則導致這個課程的資料無法錄入系統
刪除異常
假如學生選課表的資料全部被刪除,那麼所有的課程資訊也不復存在,這就是刪除異常
基於上述的問題,依照第二正規化要求對其進行轉換,得到下面兩張表:
在2nf基礎上,任何非主屬性不依賴於其它非主屬性(在2nf基礎上消除傳遞依賴),則滿足第三正規化回顧第二正規化中列舉出來的學生資訊表,雖然能夠滿足第二正規化的要求,但還是存在傳遞依賴,也即是非主屬性班主任
依賴於非主屬性專業
;也可以認為非主屬性專業
依賴於主屬性學號
,則班主任
依賴於學號
,所以存在傳遞依賴第三正規化的要求就是消除這樣的依賴關係,因此要滿足第三正規化的規則,則需要講上述的**繼續劃分,得到下面的表:
參考內容:
關聯式資料庫三正規化
正規化就是規範,就是關係型資料庫在設計表時,要遵循的三個規範。要想滿足第二正規化必須先滿足第一正規化,要滿足第三正規化必須先滿足第二正規化。第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。列資料的不可分割第二...
關聯式資料庫的三正規化
關聯式資料庫的三正規化 1 第一正規化 1nf 同一列不能儲存多個屬性 應保持列的原子性 在任何乙個關聯式資料庫中,第一正規化 1nf 是對關係模式的基本要求,不滿足第一正規化 1nf 的資料庫就不是關聯式資料庫。所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多...
關聯式資料庫的三正規化
簡單的說,第一正規化就是原子性,字段不可再分割 第二正規化就是屬性完全依賴於主鍵,沒有部分依賴 第三正規化就是沒有傳遞依賴,屬性不依賴於其它非主屬性。1nf的定義為 符合1nf的關係中的每個屬性都不可再分。下表所示的情況,就不符合1nf的要求。1nf是所有關係型資料庫的最基本要求,也就是說,只要在r...