⑴ 資料庫範式是什麼
範式是指符合某一種級別的關系模式的集合,關系資料庫中的關系必須滿足一定的要求,滿版足不同權程度要求的為不同的範式。簡而言之,範式是為了消除重復數據來減少冗餘數據,從而讓資料庫內的數據更好地組織,讓磁碟空間得到更有效利用的一種標准化准則。
資料庫設計對數據的存儲性能,以及開發人員對數據的操作都有很大的關系,所以建立科學的、規范的資料庫必須滿足相關的規范准則是至關重要的。設計關系資料庫時,應遵從不同的規范要求設計出合理的關系型資料庫,這些不同的規范要求被稱為不同的範式。各種範式呈遞次規范,越高等級的範式資料庫冗餘越小,滿足高等級範式的先決條件是先滿足低等級範式。
應用資料庫範式有許多優點,但是主要優點有:((1)可以減少數據冗餘,這是最重要的優點。
(2)可以消除異常,如插入異常、更新異常、刪除異常等。
(3)可以讓數據組織得更加和諧、合理、高效。
滿足資料庫設計範式規范的資料庫是簡潔的、結構明晰的;同時,不會發生插入(Insert)、刪除(Delete)和更新(Update)操作異常。反之,不僅給資料庫的編程人員帶來麻煩,而且存儲了大量的冗餘信息。
⑵ 簡述資料庫的三大範式和五大約束
範式書上講解太拗口,自己總結一下:
第一範式:數據表中的每一列(每個欄位)必須是不可拆分的最小單元,不允許存在隱藏欄位,屬性保持「原子性」(最大細分的二維表)
第二範式:第一範式基礎上要有主鍵,所有列都必須依賴於主鍵,而不能有任何一列與主鍵沒有關系,也就是說一個表只描述一件事情(相當於這行闡述的是一個人時,你不能加一列說明天氣)
第三範式:滿足第二範式,表中的每一列只與主鍵直接相關而不是間接相關,(表中的每一列只能依賴於主鍵)
正規化範式(BCDF):所有表中的決定因素必須是一個候選鍵,如果只有一個候選鍵,那麼就和第三範式是一樣的。
有第四第五範式,更高的範式是為了解決數據冗餘問題,但可以通過其他辦法達到。所以一般用不到
五大約束:
1. primary KEY :設置主鍵約束;
2. UNIQUE :設置唯一性約束,不能有重復值;
3. DEFAULT 默認值約束,height DOUBLE(3,2)DEFAULT 1.2 height不輸入是默認為1,2
4. NOT NULL :設置非空約束,該欄位不能為空;
5. FOREIGN key :設置外鍵約束。
⑶ 資料庫有幾種範式
目前關系資料庫有六種範式,即第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯−科德範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。滿足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步滿足更多規范要求的稱為第二範式(2NF),其餘範式依次類推。一般來說,資料庫只需滿足第三範式(3NF)。
第一範式(1NF)第一範式(1NF)是指在關系模型中,對域添加的一個規范要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子數據項,而不是集合、數組、記錄等非原子數據項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一範式(1NF)表中的每個域值只能是實體的一個屬性或一個屬性的一部分。
簡而言之,第一範式(1NF)是最基本的範式,如果資料庫表中的所有欄位值都是不可分解的原子值,就說明該資料庫表滿足第一範式(1NF)。在任何一個關系資料庫中,第一範式(1NF)是對關系模式設計的基本要求,所有設計的數據模型都必須滿足第一範式(1NF)。
從上面的定義描述中,可以歸納出第一範式(1NF)具有如下幾個顯著特點:((1)資料庫表中的欄位都是單一屬性。
①欄位不可再分。
②同一列中不能有多個值。
(2)單一屬性由基本類型構成。
①整型。
②實數。
③字元型。
④邏輯型。
⑤日期型。
⑥其他類型。
滿足以上兩大特徵的表就是符合第一範式(1NF)的表,不滿足以上任一特徵的表都是不符合第一範式(1NF)的表。
例如,圖欄位可再分的表所示的「電話」欄位可以再拆分成「手機」與「座機」欄位,不滿足「欄位不可再分」的要求,因此不符合第一範式(1NF)要求。
欄位可再分的表
又如,圖欄位可再分的表所示的「姓名」欄位包含「張偉」與「宋鑫」兩個值,不滿足「同一列中不能有多個值」的要求,因此也不符合第一範式(1NF)要求。
同一列中有多個值的表
第二範式(2NF)第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。第二範式(2NF)要求資料庫表中的每個實例或記錄必須可以被唯一地區分。選取一個能區分每個實體的屬性或屬性組,作為實體的唯一標識。例如,員工表中的身份證號碼即可實現每個員工的區分,該身份證號碼即候選鍵,任何一個候選鍵都可以被選作主鍵。在找不到候選鍵時,可額外增加屬性以實現區分。如果在員工關系中沒有對其身份證號碼進行存儲,而姓名可能會在資料庫運行的某個時間重復,無法區分出實體時,設計身份證號碼等不重復的編號以實現區分,被添加的編號選作主鍵。注意:該主鍵的添加是在ER設計時添加,不是在建庫時隨意添加。
第二範式(2NF)要求實體的屬性完全依賴於主關鍵字。所謂完全依賴,是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分,通常需要為表加上一個列,以存儲各個實例的唯一標識。
簡而言之,第二範式(2NF)在第一範式(1NF)的基礎之上更進一層。第二範式(2NF)需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個資料庫表中,一個表中只能保存一種數據,不可以把多種數據保存在同一個資料庫表中。
所謂聯合主鍵,是指由兩個或兩個以上的欄位共同組成數據表的主鍵。如圖聯合主鍵表所示,單憑「客戶」欄位無法確定表中唯一的記錄,單憑「開戶銀行」欄位也無法確定表中唯一的與「開戶銀行」一起組成數據表的聯合主鍵。
聯合主鍵表
從上面的定義描述中,可以歸納出第二範式(2NF)具有如下幾個顯著特點:((1)資料庫表滿足第一範式(1NF)。
(2)資料庫中每個表均有主鍵。
①單欄位主鍵。
②聯合主鍵。即不能存在單個主鍵欄位決定非主鍵欄位的情況。
例如,表中有A、B、C、D、E五個欄位,若A與B為聯合主鍵(A,B),如有A決定C的情況(A→C),則不符合第二範式(2NF)。
滿足以上特徵的表就是符合第二範式(2NF)的表,不滿足以上任何一特徵的表都是不符合第二範式(2NF)的表。
例如,如圖所示,所有欄位均不可再拆分,因而滿足第一範式(1NF)的要求,但表中沒有任何一個欄位可以確定表中的唯一記錄,即表中沒有主鍵,因此其不滿足「資料庫中每張表均有主鍵」的要求,所以不符合第二範式(2NF)要求。
又如,如圖所示,滿足第一範式(1NF)的要求,並且在原來的基礎上增加了「ID」欄位作為表的主鍵,因此其符合第二範式(2NF)要求。
沒有主鍵的數據表
增加了主鍵的數據表
重新分析圖1−3所示的聯合主鍵表,此表符合第一範式(1NF)「欄位不可再拆分」的要求,並且有「客戶」與「開戶銀行」兩個欄位作為表的聯合主鍵(客戶,開戶銀行),但其是否就是一個符合第二範式(2NF)的表呢?
進一步分析,就可以發現:「客戶電話」欄位由「客戶」欄位決定,「開戶行地址」欄位由「開戶銀行」欄位決定;即存在如下依賴關系:客戶→客戶電話,開戶銀行→開戶行地址。
(客戶,開戶銀行)為主鍵欄位,(客戶電話,開戶行地址)為非主鍵欄位,因此,其不符合聯合主鍵中「不能存在單個主鍵欄位決定非主鍵欄位」的情況,所以可以認定其並不是符合第二範式(2NF)的數據表。
例1.1判斷如圖所示的學生信息表是否符合第二範式(2NF)。
圖所示中存在聯合主鍵(學號,課程編號),但存在(學號→姓名)、(課程編號→課程名)的依賴關系,即存在某個主鍵欄位決定非主鍵欄位的情況,因此其不符合第二範式(2NF),不是第二範式(2NF)表。可考慮把此表拆成分數表(見圖)、課程表(見圖)和姓名表(見圖),則此三個表是符合第二範式(2NF)的表。
圖學生信息表
圖分數表
圖課程表
圖姓名表
第三範式(3NF)第三範式(3NF)是第二範式(2NF)的一個子集,即滿足第三範式(3NF)必須滿足第二範式(2NF)。第三範式(3NF)要求一個關系中不包含已在其他關系包含的非主關鍵字信息。
第三範式(3NF)就是任何非主屬性不依賴於其他非主屬性,也就是在滿足第二範式(2NF)的基礎上,任何非主屬性不得傳遞依賴於主屬性。第三範式(3NF)需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。數據不能存在傳遞關系,即每個屬性都跟主鍵有直接關系而不是間接關系。如屬性之間含有A→B→C這樣的關系,是不符合第三範式(3NF)的。
當數據表不符合第三範式(3NF)時,會有大量的冗餘數據,還會存在插入異常、刪除異常、數據冗餘度大、修改復雜等問題。
從上面的定義描述中,可以歸納出第三範式(3NF)具有如下幾個顯著特點:((1)資料庫表滿足第二範式。
(2)資料庫表的非主鍵欄位不存在傳遞依賴關系(即非主鍵欄位不能決定其他非主鍵欄位)。例如,表中有A、B、C、D、E五個欄位,若A為主鍵,如有C決定D的情況(C→D)則不符合第三範式(3NF)。
滿足以上特徵的表就是符合第三範式(3NF)的表,不滿足以上任何一特徵的表都是不符合第三範式(3NF)的表。
如圖所示,表中有主鍵(工號),因而滿足第二範式(2NF)的要求;但表中非主鍵欄位間存在傳遞依賴關系:非主鍵欄位「部門」決定非主鍵欄位「部門電話」和「部門主管」(部門→部門電話,部門→部門主管),因此不符合第三範式(3NF)的要求。
圖非主鍵欄位存在傳遞依賴關系的表
例1.2判斷圖所示的學生院屬信息表是否符合第三範式(3NF)。
圖學生院屬信息表
圖中有主鍵(學號),則滿足第二範式(2NF)的要求,但存在(所在學院→學院電話)、(所在學院→學院地點),即存在非主鍵欄位決定其他非主鍵欄位的情況,因此其不符合第三範式(3NF)的要求,不是第三範式(3NF)表。可考慮把此表拆成學生表(見圖)和學院表(見圖),則兩個表是符合第三範式(3NF)的表。
圖學生表
圖學院表
⑷ 資料庫三大範式是什麼
資料庫中三大範式的定義如下:
1、第一範式:
當關系模式R的所有屬性都不能在分解為更基本的數據單位時,稱R是滿足第一範式的,簡記為1NF。滿足第一範式是關系模式規范化的最低要求,否則,將有很多基本操作在這樣的關系模式中實現不了。
2、第二範式:
如果關系模式R滿足第一範式,並且R得所有非主屬性都完全依賴於R的每一個候選關鍵屬性,稱R滿足第二範式,簡記為2NF。
3、第三範式:
設R是一個滿足第一範式條件的關系模式,X是R的任意屬性集,如果X非傳遞依賴於R的任意一個候選關鍵字,稱R滿足第三範式,簡記為3NF。
範式簡介:
範式來自英文Normal form,簡稱NF。要想設計—個好的關系,必須使關系滿足一定的約束條件,此約束已經形成了規范,分成幾個等級,一級比一級要求得嚴格。
滿足這些規范的資料庫是簡潔的、結構明晰的,同時,不會發生插入(insert)、刪除(delete)和更新(update)操作異常。反之則是亂七八糟,不僅給資料庫的編程人員製造麻煩,而且面目可憎,可能存儲了大量不需要的冗餘信息。
關系資料庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯-科德範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。滿足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步滿足更多規范要求的稱為第二範式(2NF),其餘範式以次類推。一般來說,資料庫只需滿足第三範式(3NF)就行了。
⑸ 資料庫中第一範式,第二範式,第三範式、、、、是什麼,怎麼區分
第一範式:一言以蔽之:「第一範式的數據表必須是二維數據表」,第一範式是指資料庫的版每一列都是不可分割權的基本數據項,強調列的原子性,試題中某一屬性不能擁有幾個值。比如資料庫的電話號碼屬性裡面不可以有固定電話和行動電話值。 說明:在任何一個關系資料庫中,第一範式(1NF)是對關系模式的基本要求,不滿足第一範式(1NF)的資料庫就不是關系資料庫。
第二範式建立在第一範式的基礎上,即滿足第二範式一定滿足第一範式,第二範式要求數據表每一個實例或者行必須被唯一標識。除滿足第一範式外還有兩個條件,一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。每一行的數據只能與其中一列相關,即一行數據只做一件事。只要數據列中出現數據重復,就要把表拆分開來。
第三範式若某一範式是第二範式,且每一個非主屬性都不傳遞依賴於該範式的候選鍵,則稱為第三範式,即不能存在:非主鍵列 A 依賴於非主鍵列 B,非主鍵列 B 依賴於主鍵的情況。
(5)簡述什麼資料庫範式擴展閱讀:
範式是符合某一種級別的關系模式的集合。關系資料庫中的關系必須滿足一定的要求,滿足不同程度要求的為不同範式。
⑹ 什麼是資料庫的三範式
第一範式定義是指資料庫表的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。
第二範式定義是屬性完全依賴於主鍵,要求資料庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的惟一標識。
第三範式定義是要求一個資料庫表中不包含已在其它如燃表中已包含的非主關鍵字信息。
第一範式渣枝虛第二範式第三範式的要求
第一範式要求消除拆分欄位至原子欄位,即不可再拆分;第二範式要求消除部分函數依賴,實現完全函數依賴;第三範式要求消除傳遞函數依賴。
每個屬性不可再分。相近或一樣的屬性要盡量合並在一起確保不會產生冗餘數據。是對關系模搭圓型的基本要求,不滿足第一範式的關系,不能稱之為關系型資料庫。符合第一範式的關系,每個屬性都不可以再分割。
⑺ 資料庫三大範式是什麼
資料庫三大範式是:
第一範式(1NF):屬性不可分割,即每個屬性都是不可分割的原子項。(實體的屬性即表中的列)
第二範式(2NF):滿足第一範式;且不存在部分依賴,即非主屬性必須完全依賴於主屬性。(主屬性即主鍵;完全依賴是針對於聯合主鍵的情況,非主鍵列不能只依賴於主鍵的一部分)
第三範式(3NF):滿足第二範式;且不存在傳遞依賴,即非主屬性不能與非主屬性之間有依賴關系,非主屬性必須直接依賴於主屬性,不能間接依賴主屬性。(A -> B,B ->C,A -> C)
資料庫管理系統是資料庫系統的核心組成部分,主要完成對資料庫的操作與管理功能,實現資料庫對象的創建、資料庫存儲數據的查詢、添加、修改與刪除操作和資料庫的用戶管理、許可權管理等。它的安全直接關繫到整個資料庫系統的安全,其防護手段主要有:
(1)使用正版資料庫管理系統並及時安裝相關補丁。
(2)做好用戶賬戶管理,禁用默認超級管理員賬戶或者為超級管理員賬戶設置復雜密碼;為應用程序分別分配專用賬戶進行訪問;設置用戶登錄時間及登錄失敗次數限制, 防止暴力破解用戶密碼。
(3)分配用戶訪問許可權時,堅持最小許可權分配原則,並限制用戶只能訪問特定資料庫,不能同時訪問其他資料庫。
(4)修改資料庫默認訪問埠,使用防火牆屏蔽掉對 外開放的其他埠,禁止一切外部的埠探測行為。
(5)對資料庫內存儲的重要數據、敏感數據進行加密存儲,防止資料庫備份或數據文件被盜而造成數據泄露。
(6)設置好資料庫的備份策略,保證資料庫被破壞後能迅速恢復。
(7)對資料庫內的系統存儲過程進行合理管理,禁用掉不必要的存儲過程,防止利用存儲過程進行資料庫探測與攻擊。
(8)啟用資料庫審核功能,對資料庫進行全面的事件跟蹤和日誌記錄。