數據庫範式1NF 2NF 3NF 哇,這個也好詳細

設計範式(範式,數據庫設計範式,數據庫的設計範式)是符合某一種級別的關係模式的集合。構造數據庫必須遵循一定的規則。在關係數據庫中,這種規則就是範式。關係數據庫中的關係必須滿足一定的要求,即滿足不同的範式。目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、第四範式(4NF)、第五範式(5NF)和第六範式(6NF)。滿足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步滿足更多要求的稱爲第二範式(2NF),其餘範式以次類推。一般說來,數據庫只需滿足第三範式(3NF)就行了。下面我們舉例介紹第一範式(1NF)、第二範式(2NF)和第三範式(3NF)。 
    
在創建一個數據庫的過程中,範化是將其轉化爲一些表的過程,這種方法可以使從數據庫得到的結果更加明確。這樣可能使數據庫產生重複數據,從而導致創建多餘的表。範化是在識別數據庫中的數據元素、關係,以及定義所需的表和各表中的項目這些初始工作之後的一個細化的過程。 
    下面是範化的一個例子 Customer Item purchased Purchase price Thomas Shirt $40 Maria 
Tennis shoes $35 Evelyn Shirt $40 Pajaro Trousers $25 
如果上面這個表用於保存物品的價格,而你想要刪除其中的一個顧客,這時你就必須同時刪除一個價格。範化就是要解決這個問題,你可以將這個表化爲兩個表,一個用於存儲每個顧客和他所買物品的信息,另一個用於存儲每件產品和其價格的信息,這樣對其中一個表做添加或刪除操作就不會影響另一個表。 
關係數據庫的幾種設計範式介紹 
1 第一範式(1NF)
    
在任何一個關係數據庫中,第一範式(1NF)是對關係模式的基本要求,不滿足第一範式(1NF)的數據庫就不是關係數據庫。 
    
所謂第一範式(1NF)是指數據庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義一個新的實體,新的實體由重複的屬性構成,新實體與原實體之間爲一對多關係。在第一範式(1NF)中表的每一行只包含一個實例的信息。例如,對於圖3-2 
中的員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個員工的信息,一個員工的信息在表中只出現一次。簡而言之,第一範式就是無重複的列。 
2 第二範式(2NF)
    
第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。第二範式(2NF)要求數據庫表中的每個實例或行必須可以被惟一地區分。爲實現區分通常需要爲表加上一個列,以存儲各個實例的惟一標識。如圖3-2 
員工信息表中加上了員工編號(emp_id)列,因爲每個員工的員工編號是惟一的,因此每個員工可以被惟一區分。這個惟一屬性列被稱爲主關鍵字或主鍵、主碼。 
第二範式(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關係。爲實現區分通常需要爲表加上一個列,以存儲各個實例的惟一標識。簡而言之,第二範式就是非主屬性非部分依賴於主關鍵字。 
3 第三範式(3NF)
    
滿足第三範式(3NF)必須先滿足第二範式(2NF)。簡而言之,第三範式(3NF)要求一個數據庫表中不包含已在其它表中已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信息。那麼在圖3-2的員工信息表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據第三範式(3NF)也應該構建它,否則就會有大量的數據冗餘。簡而言之,第三範式就是屬性不依賴於其它非主屬性。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章