數據庫的範式

當我們想要設計出合理的關係型數據庫時,需要遵從不同的規範要求,這些不同的規範要求就被稱爲範式。各種範式呈遞次規範,越高的範式數據庫冗餘程度越小。目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯-科德範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。但是在實際的使用中,我們只需要瞭解前三個範式,也就是我們常說的“數據庫三範式”。

第一範式

第一範式要求所有的域都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項。也就是說,當實體中的某個屬性有多個值時,必須拆分爲不同的屬性。可以理解爲:第一範式就是無重複的列

說明:在任何一個關係數據庫中,第一範式(1NF)是對關係模式的基本要求,不滿足第一範式(1NF)的數據庫就不是關係數據庫。

第二範式

第二範式是在第一範式的基礎上進行的,所以說要滿足第二範式就必須要滿足第一範式
第二範式要求:數據庫表中的每個實例必須可以被唯一地區分。即實體的屬性完全依賴於主鍵。所謂完全依賴是指不能存在僅依賴主鍵一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體。
例如:在用戶表中我們可以使用用戶的身份證來作爲一個用戶的唯一標識,但是如果沒有身份證號這樣的屬性時,我們可以選擇增加一個不可重複的屬性userId來實現。簡而言之,第二範式就是在第一範式的基礎上屬性完全依賴於主鍵

第三範式

第三範式又是在第二範式的基礎上進行的,更準確地說,第三範式應該是第二範式的一個子集。第三範式要求:任何非主屬性不依賴於其它非主屬性。簡而言之,第三範式要求一個關係中不包含已在其它關係已包含的非主關鍵字信息。例如:假設在學生表中應該包含:學院名,學院ID,學生姓名,學生學號。 那麼假設還存在一張學院表:學院名,學院ID. 那麼這種情況就是第三範式所不允許的,因爲這樣會使用數據具有大量的冗餘。但如果不存在這樣的學院表,根據第三範式,就需要創建這樣的學院表,並刪減學生表中的冗餘字段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章