前言關系數據庫的規範化理論為:關系數據庫中的每一個關系都要滿足一定的規範。根據滿足規範的條件不同,可以分為5個等級:第一範式 (1NF)、第二範式(2NF)....第五範式(5NF)。其中,NF是Normal Form的縮寫。一般情況下,隻要把數據規範到第三範式标準就可以滿足需要。</font>
一、完全依賴、部分依賴、傳遞依賴在了解關系數據庫規範化之前,我們需要先了解函數依賴的定義 1.函數依賴定義:設X、Y是關系R的兩個屬性集合,當任何時刻R中的任意兩個元組中的X屬性值相同時,則它們的Y屬性值也相同,則稱X函數決定Y,或Y函數依賴于X。通俗的講,如果知道一個人的身份證号,就一定能知道這個人的姓名,姓名依賴于身份證号,這就是函數依賴。從性質上,函數依賴還可以分為完全函數依賴、部分函數依賴和傳遞函數依賴。1.1完全函數依賴設X,Y是關系R的兩個屬性集合,X'是X的真子集,存在X → Y(Y函數依賴于),但對每一個X'都有X' !→ Y(Y不能函數依賴于X'),則稱Y完全函數依賴于X,也就是說,X的任何真子集,都不能被Y函數依賴,反之,Y函數能依賴于A的真子集,則稱Y部分函數依賴于X1.2部分函數依賴設X,Y是關系R的兩個屬性集合,存在X→Y,若X’是X的真子集,存在X’→Y,則稱Y部分函數依賴于X。1.3傳遞函數依賴設X,Y,Z是關系R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴于X二、關系數據庫的規範化了解了函數依賴的定義,下面我們開始學習關系數據庫的規範化1.第一範式(1NF)第一範式是指數據庫表的每一列都是不可分割的基本數據項。第一範式是第二範式和第三範式的基礎,是最基本的範式。如果不滿足第一範式,那這個數據庫就不是關系數據庫。2.第二範式(2NF)第二範式是在第一範式的基礎上建立起來的,即滿足第二範式必先滿足第一範式。第二範式要求:數據庫表中的每個實體(即各個記錄行)必須可以被唯一地區分。實體的屬性完全依賴于主關鍵字或主鍵,即不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。主鍵:為實現區分各行記錄,需要為表設置一個“區分列”,用于存儲唯一标識。例如學生信息表,設置“學号列”,由于每個學生編号都唯一,因此每個學生都可以被唯一區分(即使存在重名情況),這個唯一屬性列被稱為主關鍵字或主鍵。3.第三範式(3NF)第三範式是在第二範式的基礎上建立起來的,滿足第三範式必先滿足第二範式。第三範式要求關系表不存在非關鍵字列隊任意候選關鍵字列的傳遞函數依賴,也就是說,第三範式要求一個關系表中不包含已在其他表中包含的非主關鍵字。例如:如S1(SNO,SNAME,CNO,CNAME,LOCATION) 各屬性分别代表學号,姓名,所在年級,班級,家庭地址。關鍵字SNO決定各個屬性。由于是單個關鍵字,沒有部分依賴的問題,肯定是2NF。但這關系肯定有大量的冗餘,有關學生所在的幾個屬性CNO,CNAME,LOCATION将重複存儲,插入,删除和修改時也将産生類似以上例的情況。原因:關系中存在傳遞依賴造成的。即SNO -> CNO。 而CNO -> SNO卻不存在,CNO -> LOCATION, 因此關鍵字 SNO 對 LOCATION 函數決定是通過傳遞依賴 CNO -> LOCATION 實現的。也就是說,SNO不直接決定非主屬性LOCATION。解決方法:分為兩個關系 S(SNO,SNAME,CNO),C(CNO,CNAME,LOCATION)三、關系數據庫的設計和設計原則學習完規範化,我們可以自己來設計一個關系數據庫,但是在設計之前,我們要先了解數據庫中會出現的異常。1.數據冗餘數據冗餘是指一個屬性存放在多個表中,比如學生學号,可能存在于成績單中,也會存在考勤表中,這其實會影響數據的完整性和一緻性。如果其中一個表出現錯誤,可能會導緻其他功能的查詢都會有問題。當數據有冗餘現象時,就可能會出現插入異常、删除異常、修改異常。1.1 插入異常插入異常是指插入的數據違反了數據庫對象的規定,導緻插入不正确的異常。比如一個表中有三個屬性,而插入過程中你寫了四個屬性,數據就插入不進去。當設置的某字段為非空字段,給這個字段插入了一個空值,同樣也會出現插入錯誤。1.2 删除異常當需要删除某個字段時,數據不能被删除導緻的錯誤。比如表中有外鍵限制,删除數據就會出現錯誤。1.3 修改異常當你更新數據時,數據不能被更新而導緻的錯誤。比如更新一個自增列,數據庫就會提示更新失敗。2. 設計原則數據庫設計是指對一個給定的應用環境,根據用戶的需求,利用數據模型和應用程序模拟現實世界中該應用環境的數據結構好處理活動的過程。原則:1. 數據庫内數據文件的數據組織應獲得最大限度的共享、最小的冗餘度,消除數據及數據依賴關系中的冗餘部分,使依賴于同一個數據模型的數據達到有效的分離。2. 保證輸入、修改數據時數據的一緻性與正确性。3. 保證數據與使用數據的應用程序之間的高度獨立性。四、體系結構1.數據庫三級模式結構數據庫三級模式結構是指模式、外模式、内模式
1.1 模式模式也稱邏輯模式或概念模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。一個數據庫隻有一個模式。模式處于三級結構的中間層。**注意**:定義模式時,不僅要定義數據的邏輯結構,而且要定義數據之間的聯系,定義域數據有關的安全性、完整性要求。1.2 外模式外模式也成用戶模式,是數據庫用戶(包括應用程序員和最終用戶)能夠看見和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。外模式是模式的子集,一個數據庫可以有多個外模式。外模式是保證數據安全性的一個有力措施。1.3 内模式内模式也稱存儲模式,是數據物理結構和存儲方式的描述,是數據在數據庫内部的表示方式。一個數據庫隻有一個内模式。2.三級模式之間的映射為了能夠在内部實現數據庫的3個抽象層次的聯系和轉換,數據庫管理系統在三級模式之間提供了兩層映射,分别是**外模式\模式映射**和**模式\内模式映射**2.1 外模式\模式映射對于同一個模式可以有任意多個外模式。對于每一個外模式,數據庫系統都有一個外模式\模式映射。當模式改變時,由數據庫管理員對各個外模式\模式映射做相應的改變,可以使外模式\模式映射保持不變,這樣,根據數據外模式編寫的應用程序就不用修改,保證了數據和程序的邏輯獨立性。2.2 模式\内模式映射數據庫中隻有一個模式和一個内模式,所以模式\内模式映射是唯一的,它定義了數據庫的全局邏輯結構與存儲結構之間的對應關系。當數據庫的存儲結構改變時,由數據庫管理員對模式\内模式映射做相應改變,可以使模式保持不變,應用程序也不做變動。這樣保證了數據與程序的物理獨立性。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!