資源描述:
《《數(shù)據(jù)庫原理與技術(shù)》-第6.3章 數(shù)據(jù)庫完整性控制課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、6.3數(shù)據(jù)庫完整性控制什么是數(shù)據(jù)庫的完整性數(shù)據(jù)的正確性和相容性防止不合語義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。例:學(xué)生的年齡必須是整數(shù),取值范圍為14--29;學(xué)生的性別只能是男或女;學(xué)生的學(xué)號一定是唯一的;學(xué)生所在的系必須是學(xué)校開設(shè)的系;完整性:否真實(shí)地反映現(xiàn)實(shí)世界完整性控制機(jī)制1.完整性約束條件定義機(jī)制2.完整性檢查機(jī)制3.違約反應(yīng)完整性約束條件定義完整性約束條件:數(shù)據(jù)模型的組成部分約束數(shù)據(jù)庫中數(shù)據(jù)的語義DBMS應(yīng)提供定義數(shù)據(jù)庫完整性約束條件,并把它們作為模式的一部分存入數(shù)據(jù)庫中完整性控制機(jī)制檢查用戶發(fā)出的操作請求是否違背了完整性約束條件違約反應(yīng)如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)
2、違背了完整性約束條件,則采取一定的動作來保證數(shù)據(jù)的完整性。完整性約束條件作用的對象列:對屬性的取值類型、范圍、精度等的約束條件元組:對元組中各個屬性列間的聯(lián)系的約束關(guān)系:對若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束6.3.1完整性約束條件完整性約束條件(續(xù))靜態(tài)對靜態(tài)對象的約束是反映數(shù)據(jù)庫狀態(tài)合理性的約束動態(tài)對動態(tài)對象的約束是反映數(shù)據(jù)庫狀態(tài)變遷的約束完整性約束條件分類六類完整性約束條件靜態(tài)列級約束靜態(tài)元組約束靜態(tài)關(guān)系約束動態(tài)列級約束動態(tài)元組約束動態(tài)關(guān)系約束完整性約束條件(續(xù))對象狀態(tài)動態(tài)列級約束動態(tài)元組約束動態(tài)關(guān)系約束動態(tài)④⑤⑥靜態(tài)列級約束靜態(tài)元組約束靜態(tài)
3、關(guān)系約束靜態(tài)①②③列元組關(guān)系對象粒度完整性約束條件(續(xù))1.靜態(tài)列級約束靜態(tài)列級約束:對的取值域的說明最常見、最簡單、最容易實(shí)現(xiàn)的一類完整性約束完整性約束條件(續(xù))五類靜態(tài)列級約束1)數(shù)據(jù)類型約束:數(shù)據(jù)的類型、長度、單位、精度等例:學(xué)生姓名的數(shù)據(jù)類型為字符型,長度為82)對數(shù)據(jù)格式的約束例:學(xué)號:前兩位表示入學(xué)年份,后四位為順序編號日期:YY.MM.DD。完整性約束條件(續(xù))3)取值范圍或取值集合的約束例:規(guī)定成績的取值范圍為0-100年齡的取值范圍為14-29性別的取值集合為[男,女]4)對空值的約束空值:未定義或未知的值空值:與零值和空格不同有的列允許空值
4、,有的則不允許,如成績可為空值5)其他約束例:關(guān)于列的排序說明,組合列等完整性約束條件(續(xù))2.靜態(tài)元組約束規(guī)定元組的各個列之間的約束關(guān)系例:訂貨關(guān)系中發(fā)貨量<=訂貨量教師關(guān)系中教授的工資>=700元靜態(tài)元組約束只局限在元組上完整性約束條件(續(xù))3.靜態(tài)關(guān)系約束關(guān)系的各個元組之間或若干關(guān)系之間存在的各種聯(lián)系或約束常見靜態(tài)關(guān)系約束:1)實(shí)體完整性約束2)參照完整性約束3)函數(shù)依賴約束4)統(tǒng)計約束函數(shù)依賴約束關(guān)系字段間存在的函數(shù)依賴?yán)涸趯W(xué)生-課程-教師關(guān)系SJT(S,J,T)的函數(shù)依賴:((S,J)→T,T→J)主碼:(S,J)統(tǒng)計約束定義某個字段值一個關(guān)系多個
5、元組的統(tǒng)計值之間的約束關(guān)系例:職工平均工資的2倍<=部門經(jīng)理的工資<=職工平均工資的5倍職工平均工資值:統(tǒng)計值完整性約束條件(續(xù))4.動態(tài)列級約束動態(tài)列級約束是修改列定義或列值時應(yīng)滿足的約束條件完整性約束條件(續(xù))1)修改列定義時的約束例:將原來允許空值的列改為不允許空值時:該列目前已存在空值,則拒絕這種修改2)修改列值時的約束修改列值時新舊值之間要滿足的約束條件例:職工工資調(diào)整>=原來工資年齡只能增長完整性約束條件(續(xù))5.動態(tài)元組約束修改元組值:各個字段之間要滿足的約束條件例:職工工資調(diào)整不得低于其原來工資+工齡*1.5完整性約束條件(續(xù))6.動態(tài)關(guān)系約束
6、關(guān)系變化前后狀態(tài):限制條件例:事務(wù)一致性、原子性等約束條件6.3.2完整性控制一、DBMS的完整性控制機(jī)制二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn)三、參照完整性的實(shí)現(xiàn)一、DBMS的完整性控制機(jī)制1.定義功能一個完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整性約束條件。DBMS的完整性控制機(jī)制(續(xù))2.檢查功能立即執(zhí)行的約束(Immediateconstraints)語句執(zhí)行完后立即檢查是否違背完整性約束延遲執(zhí)行的約束(Deferredconstrainsts)完整性檢查延遲到整個事務(wù)執(zhí)行結(jié)束后進(jìn)行DBMS的完整性控制機(jī)制(續(xù))例:銀行數(shù)據(jù)庫中“借貸總金額應(yīng)平衡”的約束就應(yīng)該
7、是延遲執(zhí)行的約束從賬號A轉(zhuǎn)一筆錢到賬號B為一個事務(wù),從賬號A轉(zhuǎn)出去錢后賬就不平了,必須等轉(zhuǎn)入賬號B后賬才能重新平衡,這時才能進(jìn)行完整性檢查。DBMS的完整性控制機(jī)制(續(xù))3.違約反應(yīng)拒絕該操作其他處理方法DBMS的完整性控制機(jī)制(續(xù))完整性規(guī)則五元組表示:(D,O,A,C,P)D(Data)約束作用的數(shù)據(jù)對象;O(Operation)觸發(fā)完整性檢查的數(shù)據(jù)庫操作當(dāng)用戶發(fā)出什么操作請求時需要檢查該完整性規(guī)則是立即檢查還是延遲檢查;A(Assertion)數(shù)據(jù)對象必須滿足的斷言或語義約束這是規(guī)則的主體;C(Condition)選擇A作用的數(shù)據(jù)對象值的謂詞;P(Pro
8、cedure)違反完整性規(guī)則時觸發(fā)的過