第一正規化(1nf)
資料表的每一列都要保持它的原子特性,也就是列不能再被分割。
這張表就不符合第一正規化規定的原子性,不符合關係型資料庫的基本要求,在關係型資料庫中建立這個表的操作就不能成功。不得不將資料表設計為如下形式。
第二正規化(2nf)
概率:屬性必須完全依賴於主鍵。
下滿這張表不符合第二正規化的要求。
缺點表中的第一行資料都儲存了系名、系主任,資料的冗餘太大
如果有乙個新的系還沒有開始找到學生,那麼不能講該系的資訊新增到資料表中去,從資料表中看不到該系的存在
如果將某個系的學生資訊全部刪除,那麼這個繫在資料表裡也就不存在了,但這個系還存在。
如果某個人要轉系,那麼為了保證資料庫中資料的一致性,需要修改三條記錄中系與系主任的資料
依賴在資料表中,屬性(屬性組)x確定的情況下,能完全退出來屬性y完全依賴於x。
完全依賴
完全依賴是針對於屬性組來說,當一組屬性x能推出來y的時候就說y完全依賴於x。
部分依賴
一組屬性x中的其中乙個或幾個屬效能推出y就說y部分依賴於x。
結論:當乙個第一正規化的候選碼只有乙個屬性的時候,那它就是第二正規化(2nf)
候選碼當乙個屬性或者屬性組確定的情況下,這張表的其餘所有屬性就能確定下來,這個屬性或者屬性組就叫做或候選碼。
一張表可以有多個候選碼
一般只選乙個候選碼作為主鍵
從表中找到兩個屬性:學號和課程
學號可以推出姓名、系名、系主任。
課程可以推出成績。
將它們兩個設定為聯合主鍵
存在的部分依賴
姓名對學號存在部分依賴
系名對學號存在部分依賴
系主任對學號存在部分依賴
這顯然不符合第二正規化的要求,做出修改:
表一中分數完全依賴於學號和課程的屬性
表二中姓名、系名、系主任完全依賴於學號的屬性
第二正規化消除了第一正規化的部分依賴
第三正規化(3nf)
概念:所有的非主屬性不依賴於其他的非主屬性
傳遞函式依賴
設x,y,z是關係r中互不相同的屬性集合,存在x→y(y !→x),y→z,則稱z傳遞函式依賴於x。
在改進後的學生表中:
主屬性:學號
非主屬性:姓名、系名、系主任
知道系名可以推出系主任,所以非主屬性系主任對主屬性學號存在傳遞函式依賴,這不符合非主屬性不依賴於其它的非主屬性的設計要求。將該資料表改進如下:
第三正規化消除了第二正規化的傳遞函式依賴
bc 正規化
主屬性不能對候選碼存在部分函式依賴或者傳遞函式依賴
這張表不存在部分函式依賴於傳遞函式依賴,屬於第三正規化
表中的依賴關係
倉庫名—————>管理員
管理員—————>倉庫名
物品名—————>數量
主屬性:倉庫名、管理員、物品名
非主屬性:數量
存在的問題
先新新增乙個倉庫,但尚未存放任何物品,不可以為該倉庫指派管理員,因為物品名也是主屬性,根據實體完整性的要求,主屬性不能為空
某倉庫被清空後,該倉庫的資訊也被清空
當需要更新倉庫管理員,該倉庫存放了多少物品,就要修改多少條資訊。
在這個問題中就是存在了主屬性對於候選碼的部分依賴,也就是倉庫名對於管理員和物品名的部分依賴。
修改為倉庫(倉庫名,管理員)
庫存(倉庫名、物品數、數量)
第四正規化(4nf)
消除表中的多值依賴
設r是乙個關係模型,d是r上的多值依賴集合。如果d中存在凡多值依賴x->y時,x必是r的超鍵,那麼稱r是第四正規化的模式。
例如,職工表(職工編號,職工孩子姓名,職工選修課程),在這個表中,同乙個職工可能會有多個職工孩子姓名,同樣,同乙個職工也可能會有多個職工選修課程,即這裡存在著多值事實,不符合第四正規化。如果要符合第四正規化,只需要將上表分為兩個表,使它們只有乙個多值事實,例如職工表一(職工編號,職工孩子姓名),職工表二(職工編號,職工選修課程),兩個表都只有乙個多值事實,所以符合第四正規化。
優缺點:表的冗餘性,提高了多表的聯合查詢的效率。
正規化之間的關係
正規化的目的
減小資料的冗餘性
提高效率
mysql五大儲存引擎 mysql五大儲存引擎
mylsam mylsam表無法處理事務,這就意味著有事務處理需求的表,不能使用mylsam儲存引擎。innodb innodb是乙個健壯的事務型儲存引擎mysql5.6版本以後innodb就是作為預設的儲存引擎。innodb還引入了行級鎖定和鍵外約束。memory 使用mysql memory儲存...
mysql五大儲存引擎 mysql五大儲存引擎
mylsam mylsam表無法處理事務,這就意味著有事務處理需求的表,不能使用mylsam儲存引擎。innodb innodb是乙個健壯的事務型儲存引擎mysql5.6版本以後innodb就是作為預設的儲存引擎。innodb還引入了行級鎖定和鍵外約束。memory 使用mysql memory儲存...
mysql三大特性 三正規化 五大約束
1.資料庫的三大特性 實體 表 屬性 表中的資料 字段 關係 表與表之間的關係 2.資料庫設計三大正規化 a 確保每列保持原子性 即資料庫表中的所有字段值是不可分解的原子值 c 確保每列都和主鍵直接相關,而不是間接相關 在乙個資料庫表中儲存的資料只能與主鍵相關 消除傳遞依賴 間接 比如在設計乙個訂單...