數據庫三大範式(1NF,2NF,3NF)及ER圖
百度官方解釋:數據庫
設計關係數據庫時,聽從不一樣的規範要求,設計出合理的關係型數據庫,這些不一樣的規範要求被稱爲不一樣的範式,各類範式呈遞次規範,越高的範式數據庫冗餘越小。
目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯-科德範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。知足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步知足更多規範要求的稱爲第二範式(2NF),其他範式以次類推。通常來講,數據庫只需知足第三範式(3NF)就好了。
第一範式(1NF):強調數據表的原子性
所謂第一範式(1NF)是指在
關係模型中,對於添加的一個規範要求,全部的域都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項。即實體中的某個屬性有多個值時,必須拆分爲不一樣的屬性。在符合第一範式(1NF)表中的每一個域值只能是實體的一個屬性或一個屬性的一部分。簡而言之,第一範式就是無重複的域。
第二範式(2NF):在1NF基礎上,消除了非主屬性對於碼的部分函數依賴
(sno, pno)->sname sno->sname pno->sname =>sname部分函數依賴於(sno, pno)
在1NF的基礎上,非碼屬性必須徹底依賴於候選碼(在1NF基礎上消除非主屬性對主碼的部分函數依賴)
第二範式(2NF)要求實體的屬性徹底依賴於主關鍵字。所謂徹底依賴是指不能存在僅依賴主關鍵字一部分的屬性,若是存在,那麼這個屬性和主關鍵字的這一部分應該分離出來造成一個新的實體,新實體與原實體之間是一對多的關係。爲實現區分一般須要爲表加上一個列,以存儲各個實例的惟一標識。簡而言之,第二範式就是在第一範式的基礎上屬性徹底依賴於主鍵。
第三範式(3NF):在2NF的基礎上,消除了非主屬性對於碼的傳遞函數依賴
在2NF基礎上,任何非主
屬性不依賴於其它非主屬性(在2NF基礎上消除傳遞依賴)
巴斯-科德範式(BCNF):在3NF的基礎上,消除了主屬性對於碼的部分函數依賴和傳遞函數依賴
Boyce-Codd Normal Form(巴斯-科德範式)
在3NF基礎上,任何非主屬性不能對主鍵子集依賴(在3NF基礎上消除對主碼子集的依賴)
通俗解釋:數組
第一範式(1NF):數據表中的每一列(每一個字段)必須是不可拆分的最小單元,也就是確保每一列的原子性;函數
第二範式(2NF):知足1NF後,要求表中的全部列,都必須依賴於主鍵,而不能有任何一列與主鍵沒有關係,也就是說一個表只描述一件事情;spa
第三範式(3NF):必須先知足第二範式(2NF),要求:表中的每一列只與主鍵直接相關而不是間接相關,(表中的每一列只能依賴於主鍵);設計
ER圖:orm
1、那麼什麼是E-R模型?對象
E-R模型即實體-聯繫模型,E-R模型的提出基於這樣一種認識,數據庫老是存儲現實世界中有意義的數據,而現實世界是由一組實體和實體的聯繫組,E-R模型能夠成功描述數據庫所存儲的數據。blog
2、爲何要設計E-R模型?get
設計E-R模型可以更有效和更好的模擬現實世界。it
3、E-R模型的基本要素
1) 實體 :實體是E-R模型的基本對象,是現實世界中各類事物的抽象,凡是能夠相互區別,並能夠被識別的事、物概念等都可認爲是實體。在一個單位中,具備共性的一類實體能夠劃分爲一個實體集,例如,學生李明,黃穎等都是實體,爲了便於描述,能夠定義學生這樣的一個實體集,全部學生都是這個集合的成員。
2)屬性:每一個實體都具備各類特徵,稱其爲實體的屬性,如學生有學號,姓名,年齡等屬性。實體的屬性值是數據庫存儲的主要數據。能惟一標識實體的屬性或屬性組稱爲實體鍵,如一個實體有多個鍵存在。則可從中選取一個做爲主鍵。
3)聯繫:實體間會存在各類關係,如人與人之間可能存在領導與僱員關係等,實體間的關係被抽象爲聯繫。
4、E-R圖的四個組成的部分
矩形框:表示實體,在矩形框中寫上實體的名字
橢圓形框:表示實體或聯繫的屬性
菱形框:表示聯繫,在框中記入聯繫名
連線:實體與屬性之間;實體與聯繫之間;聯繫與屬性之間用直線相連,(對於一對一聯繫,要在兩個實體連線方向各寫1; 對於一對多聯繫,要在一的一方寫1,多的一方寫N;對於多對多關係,則要在兩個實體連線方向各寫N,M。)。