關係型資料庫的正規化

2021-10-09 17:57:16 字數 1702 閱讀 6826

設計關係型資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。

目前關係型資料庫有六種正規化,第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴斯-科德正規化(bcnf)、第四正規化(4nf)、第五正規化(完美正規化)。

第一正規化是最基本的正規化,如果資料庫表中所有的字段值都是不可分割的原子值,則滿足第一正規化。

如:家庭住址為**省**市**區,在資料庫中單獨設乙個字段表示位址,但這是不滿足第一正規化基本要求的,因為如果經常訪問位址中的城市,那就需要將省份,市,區進行單獨儲存,這樣對位址中某一部分操作就會方便,滿足每個欄位都是不可分割的原子值

在滿足第一正規化的基礎上,資料庫表中不存在非關鍵字段對任一候選關鍵字段的部分函式依賴

這張表滿足第一正規化,每個字段不可再分,但這張表描述了兩件事情,學生資訊和課程資訊,學分完全依賴於課程名稱,姓名和年齡完全依賴於學號,這樣不好的後果是:

1.資料冗餘:同一門課程由n個學生選修,學分重複n-1次,同一學生選修m門課程,姓名和年齡重複m-1次

2.更新異常:若調整了某門課程的學分,資料表中的所有行的「學分」都要更新,否則會出現同一門課程學分不同的情況

3.插入異常:假設要開設一門新課程,暫時沒有人選修,由於沒有「學號」關鍵字,課程和學分也無法錄入資料庫

4.刪除異常:假設一批學生已經完成了課程的選修,這些選修記錄就應該從資料庫表中刪除,但是刪除的同時,「課程」和「學分」也被刪除了,顯然不合適,可以修改如下:

增加了表,將學生資訊和課程資訊加了一張關聯表,這就是第二正規化的中心:保證一張表只講一件事

資料庫表中如果不存在非關鍵字段任一候選關鍵字段的傳遞函式依賴,則符合第三正規化。就是如果存在「a-->b-->c」的決定關係,則c傳遞函式依賴於a,表中的字段和主鍵直接對應不依靠其他中間字段,,就是只有主鍵決定某字段值

如下:

這張表中可以看出,「姓名」,「」年齡,「學院」和主鍵「學號」是直接關聯的 ,但是「學院地點」和「學院**」卻不是和主鍵直接關聯的,和他們關聯的是「學院」,這樣同樣會造成和第二正規化一樣的資料冗餘、插入異常、更新異常、刪除異常的問題。

可以修改為如下結構:

關係型資料庫正規化

設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf 第四正規化 4nf 和第五正...

關係型資料庫的正規化

關係型資料庫有六個正規化,越靠後的正規化對資料庫的 要求 越高。我改寫了描述,讓其更通俗易懂,但是不太嚴謹,以下文字中 列對應屬性 行對應實體 表對應關係。不再一一區分。對於我們使用的關係型資料庫,滿足第三正規化即可。第一正規化 1nf 無重複的列 即每一行中,不能有兩列的含義完全相同,也不能有某一...

關係型資料庫設計正規化

理解三大正規化 學後知變通 什麼是正規化 資料庫設計對資料的儲存效能和開發人員對資料的操作都有關係。所以建立科學的 規範的資料庫需要滿足一些規範。在關係型資料庫中這些規範就可以稱為正規化。三大正規化概念 第一正規化 當關係模式r的所有屬性都不能分解為更基本的資料單位時,稱r是滿足第一正規化的,簡記為...