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