資源描述:
《【數(shù)據(jù)庫原理】數(shù)據(jù)庫完整性》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、本章內(nèi)容提要數(shù)據(jù)庫中的數(shù)據(jù)是否具備正確、相容關(guān)系到數(shù)據(jù)庫系統(tǒng)能否真實地反映現(xiàn)實世界,因此維護數(shù)據(jù)庫的完整性是非常重要的。維護數(shù)據(jù)庫(1)制定完整性約束條件(2)進行完整性檢查(控制)第十章數(shù)據(jù)庫完整性本章重點:完整性約束條件完整性控制本章難點:完整性約束條件完整性控制第十章數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確、有效性和相容性(前后一致)。完整性是對數(shù)據(jù)庫存儲數(shù)據(jù)的限制,是對數(shù)據(jù)的約束條件。對數(shù)據(jù)庫存儲的限制各種各樣。如關(guān)系模式中的函數(shù)依賴,是對數(shù)據(jù)項之間相關(guān)性的一種限制。數(shù)據(jù)的正確、有效性可以簡單的視為是對數(shù)據(jù)本身而言。數(shù)據(jù)的相容性可以簡單的視為是對數(shù)據(jù)之間的相互關(guān)系而言。
2、第十章數(shù)據(jù)庫完整性為維護數(shù)據(jù)庫的完整性,DBMS提供了一種完整性檢查機制來檢查數(shù)據(jù)庫中的數(shù)據(jù),看其是否滿足語義規(guī)定的條件。完整性檢查(控制)是指DBMS用一定機制來滿足規(guī)定的約束條件,是防止合法用戶無意識操作造成的數(shù)據(jù)輸入、輸出錯誤——即垃圾進、垃圾出(GarbageinGarbageout),破壞數(shù)據(jù)的正確、有效和相容,以保證數(shù)據(jù)庫中不存在不符合語義的數(shù)據(jù)。第十章數(shù)據(jù)庫完整性完整性檢查是圍繞完整性約束條件進行的,因此完整性約束條件是完整性控制機制的核心。在關(guān)系模型中,最常見的是三類:(A)實體完整性(B)參照完整性(C)用戶定義完整性第十章數(shù)據(jù)庫完整性一、完整性約束條件分類:
3、(1)完整性約束條件作用的對象:(A)關(guān)系(B)元組(C)列。其中:(A)關(guān)系的約束是若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。(B)元組的約束是元組中各個字段間的聯(lián)系的約束。(C)列約束主要是列的類型、取值范圍、精度、排序等的約束條件。第十章數(shù)據(jù)庫完整性10.1完整性約束條件第十章數(shù)據(jù)庫完整性10.1完整性約束條件(2)完整性約束條件涉及的對象的狀態(tài):(A)靜態(tài)約束(B)動態(tài)約束其中:(A)靜態(tài)約束是指數(shù)據(jù)庫每一確定狀態(tài)時的數(shù)據(jù)對象所應滿足的約束條件,它是反映數(shù)據(jù)庫狀態(tài)合理性的約束,這是最重要的一類完整性約束。(B)動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時新、
4、舊值之間所應滿足的約束條件,它是反映數(shù)據(jù)庫狀態(tài)變遷的約束。綜合上述兩個方面,將完整性約束條件分為六類:一、靜態(tài)列級約束二、靜態(tài)元組約束三、靜態(tài)關(guān)系約束四、動態(tài)列級約束五、動態(tài)元組約束六、動態(tài)關(guān)系約束第十章數(shù)據(jù)庫完整性10.1完整性約束條件第十章數(shù)據(jù)庫完整性10.1完整性約束條件對象粒度對象狀態(tài)列元組關(guān)系動態(tài)動態(tài)列級約束動態(tài)元組約束動態(tài)關(guān)系約束靜態(tài)靜態(tài)列級約束靜態(tài)元組靜態(tài)關(guān)系約束一、靜態(tài)列級約束靜態(tài)列級約束是對一個列的取值域的說明,這是最常用也最容易實現(xiàn)的一類完整性約束。包括以下幾方面:1.對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等2.對數(shù)據(jù)格式的約束3.對取值范圍
5、或取值集合的約束。4.對空值的約束5.其他約束第十章數(shù)據(jù)庫完整性10.1完整性約束條件二、靜態(tài)元組約束一個元組是由若干個列值組成的,靜態(tài)元組約束就是規(guī)定元組的各個列之間的約束關(guān)系。第十章數(shù)據(jù)庫完整性10.1完整性約束條件第十章數(shù)據(jù)庫完整性10.1完整性約束條件三、靜態(tài)關(guān)系約束在一個關(guān)系的各個元組之間或者若干關(guān)系之間常常存在各種聯(lián)系或約束。常見的靜態(tài)關(guān)系約束有:1.實體完整性約束。2.參照完整性約束。實體完整性約束和參照完整性約束是關(guān)系模型的兩個極其重要的約束,稱為關(guān)系的兩個不變性。3.函數(shù)依賴約束。大部分函數(shù)依賴約束都在關(guān)系模式中定義。4.統(tǒng)計約束。即字段值與關(guān)系
6、中多個元組的統(tǒng)計值之間的約束關(guān)系。第十章數(shù)據(jù)庫完整性10.1完整性約束條件四、動態(tài)列級約束動態(tài)列級約束是修改列定義或列值時應滿足的約束條件。包括下面兩方面:1.修改列定義時的約束例如,將允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。2.修改列值時的約束修改列值有時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。例如,職工工資調(diào)整不得低于其原來工資,學生年齡只能增長等。第十章數(shù)據(jù)庫完整性10.1完整性約束條件五、動態(tài)元組約束動態(tài)元組約束是指修改元組的值時元組中各個字段間需要滿足某種約束條件。例如職工工資調(diào)整時新工資不得低于原工資+工齡*1.5,等
7、等。第十章數(shù)據(jù)庫完整性10.1完整性約束條件六、動態(tài)關(guān)系約束動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件。例如事務一致性、原子性等約束條件。第十章數(shù)據(jù)庫完整性10.2完整性控制一、完整性控制機制的功能DBMS的完整性控制機制應具有三個方面的功能:1.定義功能——提供定義完整性約束條件的機制。2.檢查功能——檢查用戶發(fā)出的操作請求是否違背了完整性約束條件。3.違約響應——如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動作來保證數(shù)據(jù)的完整性。第十章數(shù)據(jù)庫完整性10.