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