第10章數(shù)據(jù)庫(kù)完整性_第1頁(yè)
第10章數(shù)據(jù)庫(kù)完整性_第2頁(yè)
第10章數(shù)據(jù)庫(kù)完整性_第3頁(yè)
第10章數(shù)據(jù)庫(kù)完整性_第4頁(yè)
第10章數(shù)據(jù)庫(kù)完整性_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十章數(shù)據(jù)庫(kù)完整性概述,什么是數(shù)據(jù)庫(kù)的完整性,數(shù)據(jù)的正確性和兼容性,防止語(yǔ)義數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。示例:學(xué)生年齡必須為整數(shù),取值范圍為14-29;學(xué)生的性別只能是男性或女性;學(xué)生的學(xué)生編號(hào)必須是唯一的;學(xué)生所在系必須是學(xué)校開設(shè)的系;誠(chéng)信:是否真實(shí)地反映了現(xiàn)實(shí)世界,誠(chéng)信控制機(jī)制,1。完整性約束定義機(jī)制完整性約束:約束數(shù)據(jù)庫(kù)中數(shù)據(jù)的數(shù)據(jù)模型的語(yǔ)義數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)該提供數(shù)據(jù)庫(kù)完整性約束的定義,并將它們作為模式的一部分存儲(chǔ)在數(shù)據(jù)庫(kù)中。2.完整性檢查機(jī)制檢查用戶發(fā)送的操作請(qǐng)求是否違反了完整性約束。3.默認(rèn)響應(yīng)如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違反了完整性約束,請(qǐng)采取某些措施來(lái)確保數(shù)據(jù)的完整性。10.1完整性約束,由

2、完整性約束作用的對(duì)象列:對(duì)屬性的值類型、范圍和精度的約束;元組:元組中屬性列之間的連接約束:元組、關(guān)系集和關(guā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)的變化。新舊值之間滿足的約束、完整性約束的分類、六種對(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)列級(jí)約束、對(duì)象粒度。最常見、最簡(jiǎn)單和最容易實(shí)現(xiàn)的列值范圍描述是一種完整性約束和五種靜態(tài)列級(jí)約束。1)數(shù)據(jù)類型約束:數(shù)據(jù)類型、長(zhǎng)度、單位、精度等。2)對(duì)數(shù)據(jù)格式的限制:例如,日期是YY。MM.DD 3)對(duì)值范圍或值集的約束4)對(duì)空值的約束:未定義或未知的值。不同于零值

3、和空格,5)其他約束:如對(duì)列的排序指令、合并列等。靜態(tài)元組約束,指定元組列之間的約束關(guān)系,例如:裝運(yùn)量=700元的訂單關(guān)系,靜態(tài)元組約束僅限于元組,靜態(tài)關(guān)系約束,元組之間有各種連接或約束關(guān)系或一個(gè)關(guān)系中的幾種關(guān)系。常見的靜態(tài)關(guān)系約束:實(shí)體完整性約束引用完整性約束功能相關(guān)性約束:關(guān)系字段之間的功能相關(guān)性統(tǒng)計(jì)約束:定義某個(gè)字段值的統(tǒng)計(jì)值與關(guān)系中多個(gè)元組之間的約束關(guān)系,動(dòng)態(tài)列級(jí)約束、動(dòng)態(tài)列級(jí)約束是修改列定義或列值時(shí)應(yīng)滿足的約束。1)修改列定義時(shí)的約束:當(dāng)允許空值的原始列更改為不允許空值的列:時(shí),修改被拒絕。2)修改列值時(shí)的約束修改列值時(shí)新舊值之間要滿足的約束:?jiǎn)T工薪資調(diào)整=原薪資年限只能增加,動(dòng)態(tài)元

4、組,關(guān)系約束, 動(dòng)態(tài)元組約束修改元組值:各字段之間需要滿足的約束條件:?jiǎn)T工薪資調(diào)整不得低于其原始薪資服務(wù)年限*1.5動(dòng)態(tài)關(guān)系約束關(guān)系改變前后的狀態(tài):約束條件如事務(wù)一致性和原子性、完整性約束條件匯總、10.2完整性控制、定義函數(shù)完美的完整性控制機(jī)制應(yīng)允許用戶定義各種完整性約束檢查函數(shù)立即執(zhí)行的約束:執(zhí)行后立即檢查語(yǔ)句是否違反完整性約束; 延遲完整性檢查,直到整個(gè)事務(wù)執(zhí)行完畢,并默認(rèn)拒絕該操作。其他處理方法,例如,銀行數(shù)據(jù)庫(kù)中“借貸總額應(yīng)平衡”的約束應(yīng)該是延遲執(zhí)行的約束。從賬戶A向賬戶B轉(zhuǎn)賬是一筆交易,從賬戶A轉(zhuǎn)賬后,賬戶會(huì)不平衡,必須先轉(zhuǎn)賬到賬戶B,賬戶才能重新平衡,然后才能進(jìn)行完整性檢查。,完

5、整性規(guī)則五元組表示(D,O,a,c,P) D(數(shù)據(jù)):約束動(dòng)作O(操作)的數(shù)據(jù)對(duì)象:當(dāng)用戶發(fā)出任何操作請(qǐng)求時(shí),觸發(fā)完整性檢查的數(shù)據(jù)庫(kù)操作需要檢查完整性規(guī)則是立即檢查還是延遲檢查;斷言:數(shù)據(jù)對(duì)象必須滿足的斷言或語(yǔ)義約束,它是規(guī)則的主體;條件(Condition):選擇數(shù)據(jù)對(duì)象值的謂詞(Procedure):當(dāng)完整性規(guī)則被違反時(shí)觸發(fā)的過(guò)程,例如關(guān)系系統(tǒng)的三種完整性的實(shí)現(xiàn),關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都提供了定義和檢查實(shí)體完整性、引用完整性和用戶定義完整性的功能。違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則的操作通常是拒絕執(zhí)行違反引用完整性的操作:拒絕接受此操作并同時(shí)執(zhí)行一些附加操作,以確保數(shù)據(jù)庫(kù)的正確狀態(tài)和引用完整

6、性的實(shí)現(xiàn)。當(dāng)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)現(xiàn)引用完整性時(shí),需要考慮外部代碼是否可以接受空值,刪除被引用關(guān)系中的元組,在被引用關(guān)系中插入元組,修改關(guān)系中的主代碼,1。外部代碼是否可以接受空值,示例1:在員工部門數(shù)據(jù)庫(kù)中,如果EMP關(guān)系中包含外部代碼Deptno的元組的列為空,則表示該員工沒(méi)有被分配到任何特定的部門工作,這與應(yīng)用程序環(huán)境的語(yǔ)義一致。示例2:學(xué)生選擇的數(shù)據(jù)庫(kù),引用了學(xué)生關(guān)系,其主要代碼是Sno。供應(yīng)鏈?zhǔn)且环N參考關(guān)系,外部代碼是Sno。如果SC的Sno為空,則表示還不存在的學(xué)生,或者不知道學(xué)生編號(hào)的學(xué)生已經(jīng)參加了課程,并且他的成績(jī)記錄在成績(jī)中,這與SChool的應(yīng)用環(huán)境不一致,因此sc的Sno列

7、不能為空。2。刪除被引用關(guān)系中的元組時(shí),存在默認(rèn)操作的情況:刪除被引用關(guān)系中的某個(gè)元組(學(xué)生),但是引用關(guān)系中幾個(gè)元組(SC)的外部代碼值與被刪除的引用關(guān)系的主代碼值相同。有三種策略:CASCADES刪除、RESTRICTED刪除、null刪除(正確與否取決于應(yīng)用程序環(huán)境的語(yǔ)義)和三種策略。級(jí)聯(lián)刪除將刪除引用關(guān)系中外碼值與被引用關(guān)系中待刪除元組的主碼值相對(duì)應(yīng)的元組。有限刪除只有當(dāng)引用關(guān)系中沒(méi)有任何元組的外碼值與要?jiǎng)h除的被引用關(guān)系的元組的主碼值相對(duì)應(yīng)時(shí),系統(tǒng)才會(huì)執(zhí)行刪除操作,否則,拒絕刪除操作,并設(shè)置空值刪除被引用關(guān)系的元組。并將外部代碼值設(shè)置為空值,該外部代碼值等于引用關(guān)系中已刪除元組的主代碼

8、值。例如,如果您想要?jiǎng)h除學(xué)生關(guān)系中Sno=950001的元組,則在供應(yīng)鏈關(guān)系中有四個(gè)Sno=950001的元組。級(jí)聯(lián)刪除:刪除供應(yīng)鏈關(guān)系中Sno=950001的所有四元組。如果引用關(guān)系也是另一個(gè)關(guān)系的引用關(guān)系,則此刪除操作將繼續(xù)級(jí)聯(lián)到有限刪除:系統(tǒng)將拒絕執(zhí)行此刪除操作,并將空值設(shè)置為刪除:將供應(yīng)鏈關(guān)系中Sno=950001的所有元組的Sno值設(shè)置為空值。在學(xué)生選修課的數(shù)據(jù)庫(kù)中,很明顯第一種方法和第二種方法都是正確的。第三種方法不符合應(yīng)用環(huán)境的語(yǔ)義。3.在引用關(guān)系中插入元組時(shí),缺省操作時(shí)需要在引用關(guān)系中插入元組,但被引用關(guān)系中沒(méi)有對(duì)應(yīng)的元組缺省響應(yīng)限制插入:只有當(dāng)被引用關(guān)系中有對(duì)應(yīng)的元組,并且其

9、主代碼值與引用關(guān)系中插入的元組的外部代碼值相同時(shí),系統(tǒng)才會(huì)執(zhí)行插入操作。否則,拒絕這種遞歸插入:首先將對(duì)應(yīng)的元組插入引用關(guān)系,其主代碼值等于引用關(guān)系中插入的元組的外部代碼值,然后將元組插入引用關(guān)系。例如,例如:將(99001,1,90)元組插入到供應(yīng)鏈關(guān)系中,但是在學(xué)生關(guān)系中沒(méi)有Sno=99001的學(xué)生受限插入:系統(tǒng)將拒絕插入(99001,1,90)元組的遞歸插入:系統(tǒng)將首先將Sno=99001的元組插入到學(xué)生關(guān)系中,然后將Sno=99001,1,90的元組插入到供應(yīng)鏈關(guān)系中。4.修改引用關(guān)系中的主代碼的問(wèn)題是這兩種策略不允許修改主代碼。在違反合同的情況下,應(yīng)修改引用關(guān)系中某些元組的主代碼值。

10、但是,引用關(guān)系中某些元組的外部代碼值與被引用關(guān)系修改的主代碼值完全相等。例如,修改學(xué)生學(xué)號(hào)需要修改被引用關(guān)系中一些元組的主代碼值,而被引用關(guān)系中沒(méi)有元組等于被引用關(guān)系修改的主代碼值。例如,修改供應(yīng)鏈中的學(xué)生編號(hào)允許修改主要代碼策略。默認(rèn)情況下,反應(yīng)1修改的關(guān)系是被引用的關(guān)系:刪除類似的級(jí)聯(lián)修改時(shí),被引用關(guān)系中的主代碼值也以相同的方式修改。只有當(dāng)引用關(guān)系中任一元組的外部代碼值等于被引用關(guān)系中某一元組的主代碼值時(shí),該元組的主代碼值才能被修改為空,引用關(guān)系中對(duì)應(yīng)的外部代碼值才能被設(shè)置為空。示例:將“學(xué)生”關(guān)系中Sno=950001的元組的Sno值更改為960123。然而,在供應(yīng)鏈關(guān)系中有4個(gè)元組,S

11、no=950001級(jí)聯(lián)修改:在供應(yīng)鏈關(guān)系中Sno=950001的4個(gè)元組中的Sno值也改變?yōu)?60123。如果引用關(guān)系也是另一個(gè)關(guān)系的引用關(guān)系,則此修改操作將繼續(xù)級(jí)聯(lián)。受限修改:只有當(dāng)供應(yīng)鏈中沒(méi)有s no=950001的元組時(shí),學(xué)生表中Sno=950001的元組的Sno值才能修改為960123??罩敌薷模簩W(xué)生表中元組Sno=950001的Sno值更改為960123。而s表中Sno=950001的所有元組的Sno值被設(shè)置為空值。在學(xué)生的選修數(shù)據(jù)庫(kù)中,只有第一種方法是正確的,它允許修改主代碼策略。(2)修改后的關(guān)系是引用關(guān)系:類似于插入、限制插入、遞歸插入和實(shí)現(xiàn)引用完整性。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)在實(shí)現(xiàn)引用完整性時(shí),需要為用戶提供定義主代碼和外部代碼的機(jī)制,并為用戶提供根據(jù)自己的應(yīng)用需求選擇和處理依賴關(guān)系中相應(yīng)元組的方法。10.4摘要:數(shù)據(jù)庫(kù)的完整性是為了確保存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)是正確的。所謂正確是指實(shí)現(xiàn)符合現(xiàn)實(shí)世界語(yǔ)義的數(shù)據(jù)庫(kù)管理系統(tǒng)完整性的機(jī)制。定義完整性約束的機(jī)制定義了檢查完整

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論