MySQL三大正規化

2022-06-29 22:39:14 字數 1409 閱讀 6480

資料表的每一列都要保持它的原子特性,也就是列不能再被分割。

這張表就不符合第一正規化規定的原子性,不符合關係型資料庫的基本要求,在關係型資料庫中建立這個表的操作就不能成功。不得不將資料表設計為如下形式。

概率:屬性必須完全依賴於主鍵。

下滿這張表不符合第二正規化的要求。

缺點在資料表中,屬性(屬性組)x確定的情況下,能完全退出來屬性y完全依賴於x。

完全依賴

完全依賴是針對於屬性組來說,當一組屬性x能推出來y的時候就說y完全依賴於x。

部分依賴

一組屬性x中的其中乙個或幾個屬效能推出y就說y部分依賴於x。

結論:當乙個第一正規化的候選碼只有乙個屬性的時候,那它就是第二正規化(2nf)

候選碼當乙個屬性或者屬性組確定的情況下,這張表的其餘所有屬性就能確定下來,這個屬性或者屬性組就叫做或候選碼。

一張表可以有多個候選碼

一般只選乙個候選碼作為主鍵

從表中找到兩個屬性:學號和課程

學號可以推出姓名、系名、系主任。

課程可以推出成績。

將它們兩個設定為聯合主鍵

存在的部分依賴

表一中分數完全依賴於學號和課程的屬性

表二中姓名、系名、系主任完全依賴於學號的屬性

第二正規化消除了第一正規化的部分依賴

概念:所有的非主屬性不依賴於其他的非主屬性

傳遞函式依賴

設x,y,z是關係r中互不相同的屬性集合,存在x→y(y !→x),y→z,則稱z傳遞函式依賴於x。

在改進後的學生表中:

主屬性:學號

非主屬性:姓名、系名、系主任

知道系名可以推出系主任,所以非主屬性系主任對主屬性學號存在傳遞函式依賴,這不符合非主屬性不依賴於其它的非主屬性的設計要求。將該資料表改進如下:

第三正規化消除了第二正規化的傳遞函式依賴

bc 正規化

主屬性不能對候選碼存在部分函式依賴或者傳遞函式依賴

這張表不存在部分函式依賴於傳遞函式依賴,屬於第三正規化

表中的依賴關係

主屬性:倉庫名、管理員、物品名

非主屬性:數量

存在的問題

正規化的目的

MYSQL三大正規化

第一正規化 確保每列的原子性.如果每列 或者每個屬性 都是不可再分的最小資料單元 也稱為最小的原子單元 則滿足第一正規化.例如 顧客表 姓名 編號 位址 其中 位址 列還可以細分為國家 省 市 區等。第二正規化 在第一正規化的基礎上更進一層,目標是確保表中的每列都和主鍵相關.如果乙個關係滿足第一正規...

MySQL三大正規化

資料庫 的三個正規化 指的是什麼呢?即 屬性唯一,記錄唯一,表唯一。下面我們用一張關係圖來三者之間的關係。第一正規化 1nf 資料庫表中的字段的 屬性都是單一的,不可再分。這個單一屬性由哪些型別組成呢?主要是基本型別構成,包括整型 實數 字元型 邏輯型 日期型等。第二正規化 2nf 資料庫表 中不存...

mysql三大正規化

1.第一正規化 確保資料表中每列 字段 的原子性。如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。例如 user使用者表,包含欄位id,username,password 2.第二正規化 在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿足第一正規化,並...