資料庫的正規化介紹
無規矩不成方圓,在資料庫設計的時候遵守的規矩就是正規化.即設計資料庫必須滿足不同的規則也就是滿足不同的正規化.關聯式資料庫有六種正規化,而常用的則是第一第二和第三正規化。而其餘的正規化我們基本還用不到.
正規化介紹
如果沒有正規化不僅會產生大量無用的表字段,而且會使得表結構非常難以維護。因為正規化是遞進的關係,所以引出了第一正規化.
第一正規化
第一正規化就是在沒有正規化的基礎上進行的改進,所謂第一正規化就是指表中的所有欄位都是原子的、不可再分的,第一正規化是將沒有正規化中重複的字段抽取出來,作為表的資料,從而形成乙個穩定的、冗餘資料少得表結構。 www.2cto.com
此時,表的結構變得穩定了,而且表中的冗餘資訊相對沒有正規化也少了很多。可是,第一正規化只是關聯式資料庫設計的最低滿足的正規化,第一正規化中仍然有很多的冗餘資訊,由此,需要第二正規化 。
第二正規化
第二正規化是滿足屬性對主鍵是完全函式依賴的,因此,滿足第二正規化的表當然也是滿足第一正規化的,第二正規化的目的就是消除表中的部分依賴。
幾個概念要解釋下,
1: 完全函式依賴
設有屬性集a和s,若k中的所有屬性共同能夠推出s中的任意屬性,且對於a的任何真子集,都不能推出p中的任意屬性,則成a完全函式依賴s。
2: 部分函式依賴
與上相似,只是,a中存在真子集使得,該子集能推出s中任意屬性.
不滿足第二正規化的表至少有以下幾個缺點:
1:資料重複,浪費空間
2: 插入異常
3: 更新異常,刪除異常等
d: 第三正規化 www.2cto.com
第三正規化是指在滿足第二正規化的情況下,消除表中的傳遞依賴。
所謂傳遞依賴,就是指x-->y,y-->z,那麼可以得到y-->z.
傳遞依賴常發生在主鍵、外來鍵、外來鍵相關的屬性上,例如,假設有這樣的表
學生表(學生id,學生姓名,院系id,院系名) ,此處主鍵為(學生id),外來鍵為(院系id)
院系表(院系id,院長名稱),主鍵為 (院系id)
很明顯,此處存在傳遞依賴,因為 學生id 可以唯一確定 院系id,而 院系id 可以唯一確定 院系名。
從上面的表資料易知,不滿足第三正規化的表至少有以下幾個缺點:
1 : 資料重複,浪費空間
2: 插入異常
3: 更新異常,刪除異常等
資料庫設計的正規化和反正規化介紹
正規化化 總結 一正規化就是屬性不可分割,二正規化就是要有主鍵,其他欄位都依賴於主鍵,三正規化就是要消除傳遞依賴,消除冗餘,就是各種資訊只在乙個地方儲存,不出現在多張表中 反正規化化 不滿足正規化的模型,就是反正規化模型,反正規化跟正規化所要求的正好相反,在反正規化的設計模式,並不是完全不遵守正規化...
MySQL 資料庫設計的正規化介紹
正規化概念 在設計資料庫時,需要遵循的一些規範。設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科...
資料庫 資料庫正規化
關聯式資料庫的設計規範。不同的規範要求被稱為不同的正規化,越高的正規化資料庫冗餘越小。減少資料庫中資料冗餘的過程 1 第一正規化 1nf 在關係模式r中,當且僅當所有屬性只包含原子值,即每個分量都是不可再分的資料項,則稱r滿足1nf。例如表所示的教師職稱情況關係就不滿足1nf。原因在於,該關係模式中...