數據庫設計范式有:第一范式、第二范式、第三范式、巴德斯科范式、第四范式和第五范式。滿足最低要求的范式是第一范式,在第一范式的基礎上進一步滿足更多要求的稱為第二范式,其余范式以此類推。
關系數據庫中的關系必須滿足一定的要求,即滿足不同的范式。
(推薦學習:mysql教程)
關系數據庫有六種范式:
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF)。
滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎上進一步滿足更多要求的稱為第二范式(2NF),其余范式以此類推。一般說來,數據庫只需滿足第三范式(3NF)就行了。
設計關系型數據庫時,遵從不同的規(guī)范要求,設計出合理的關系型數據庫。這些規(guī)范被稱作范式。越高的范式數據庫的冗余度就越低。
第一范式
無重復的列
數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項。如果實體中的某個屬性有多個值時,必須拆分為不同的屬性
在任何一個關系數據庫中,第一范式(1NF)是對關系模式的設計基本要求,一般設計中都必須滿足第一范式(1NF)。不過有些關系模型中突破了1NF的限制,這種稱為非1NF的關系模型。
換句話說,是否必須滿足1NF的最低要求,主要依賴于所使用的關系模型。
第二范式
屬性完全依賴于主鍵
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。
當存在多個主鍵的時候,才會發(fā)生不符合第二范式的情況。比如有兩個主鍵,不能存在這樣的屬性,它只依賴于其中一個主鍵,這就是不符合第二范式。
如果存在不符合第二范式的情況,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。
第三范式
屬性不能傳遞依賴于主屬性(屬性不依賴于其它非主鍵屬性)
第三范式(3NF)是在第二范式(2NF)的基礎上建立起來的,即滿足第三范式(3NF)必須先滿足第二范式(2NF)。
如果某一屬性依賴于其他非主鍵屬性,而其他非主鍵屬性又依賴于主鍵,那么這個屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。