數據庫三大范式
一般來說的數據庫三范式都是指的關系型數據庫,范式指的就是規范的意思,三范式指的就是利用關系型數據庫進行建表時候普遍需要遵循的三個規范(即1NF,2NF,3NF)。
數據庫的設計范式是數據庫設計所需要滿足的規范,滿足這些規范的數據庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。
1.第一范式(1NF):列不可再分
1.每一列屬性都是不可再分的屬性值,確保每一列的原子性
2.兩列的屬性相近或相似或一樣,盡量合並屬性一樣的列,確保不產生冗余數據
2.第二范式(2NF)屬性完全依賴於主鍵
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數據庫表中的每個實例或行必須可以被惟一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。這個惟一屬性列被稱為主鍵
3.第三范式(3NF)屬性不依賴於其它非主屬性 屬性直接依賴於主鍵
數據不能存在傳遞關系,即每個屬性都跟主鍵有直接關系而不是間接關系。像:a-->b-->c 屬性之間含有這樣的關系,是不符合第三范式的。
比如Student表(學號,姓名,年齡,性別,所在院校,院校地址,院校電話)
這樣一個表結構,就存在上述關系。 學號--> 所在院校 --> (院校地址,院校電話)
這樣的表結構,我們應該拆開來,如下。
(學號,姓名,年齡,性別,所在院校)--(所在院校,院校地址,院校電話)
總結:三大范式只是一般設計數據庫的基本理念,可以建立冗余較小、結構合理的數據庫。如果有特殊情況,當然要特殊對待,數據庫設計最重要的是看需求跟性能,需求>性能>表結構。所以不能一味的去追求范式建立數據庫。