第5章 數(shù)據(jù)庫(kù)完整.ppt_第1頁(yè)
第5章 數(shù)據(jù)庫(kù)完整.ppt_第2頁(yè)
第5章 數(shù)據(jù)庫(kù)完整.ppt_第3頁(yè)
第5章 數(shù)據(jù)庫(kù)完整.ppt_第4頁(yè)
第5章 數(shù)據(jù)庫(kù)完整.ppt_第5頁(yè)
已閱讀5頁(yè),還剩71頁(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、An Introduction to Database System,數(shù)據(jù)庫(kù)系統(tǒng)概論 An Introduction to Database System 第5章 數(shù)據(jù)庫(kù)完整性,An Introduction to Database System,第十章 數(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è)的系; 完整性:是否真實(shí)地反映現(xiàn)實(shí)世界,An Introduction to Database System,完整性控制機(jī)制

2、,1.完整性約束條件定義機(jī)制 2.完整性檢查機(jī)制 3.違約處理,An Introduction to Database System,完整性約束條件定義,完整性約束條件:數(shù)據(jù)模型的組成部分約束數(shù)據(jù)庫(kù)中數(shù)據(jù)的語(yǔ)義 DBMS應(yīng)提供定義數(shù)據(jù)庫(kù)完整性約束條件,并把它們作為模式的一部分存入數(shù)據(jù)庫(kù)中,An Introduction to Database System,完整性控制機(jī)制,檢查用戶發(fā)出的操作請(qǐng)求是否違背了完整性約束條件,An Introduction to Database System,違約處理,如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性。,An I

3、ntroduction to Database System,第5章 數(shù)據(jù)庫(kù)完整性,5.1 完整性約束條件 5.2 完整性控制 5.3 SQL Server的完整性 5.4 小結(jié),An Introduction to Database System,完整性約束條件(續(xù)),完整性約束條件作用的對(duì)象 列:對(duì)屬性的取值類型、范圍、精度等的約束條件 元組:對(duì)元組中各個(gè)屬性列間的聯(lián)系的約束 關(guān)系:對(duì)若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束,An Introduction to Database System,完整性約束條件(續(xù)),靜態(tài) 對(duì)靜態(tài)對(duì)象的約束是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束 動(dòng)態(tài) 對(duì)動(dòng)態(tài)對(duì)象

4、的約束是反映數(shù)據(jù)庫(kù)狀態(tài)變遷的約束,An Introduction to Database System,完整性約束條件分類,六類完整性約束條件 靜態(tài)列級(jí)約束 靜態(tài)元組約束 靜態(tài)關(guān)系約束 動(dòng)態(tài)列級(jí)約束 動(dòng)態(tài)元組約束 動(dòng)態(tài)關(guān)系約束,An Introduction to Database System,完整性約束條件(續(xù)),對(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) 列 元組 關(guān)系 對(duì)象粒度,An Introduction to Database System,完整性約束條件(續(xù)),1. 靜態(tài)列級(jí)約束 靜態(tài)列級(jí)約束:對(duì)的取值域的說(shuō)明 最常

5、見、最簡(jiǎn)單、最容易實(shí)現(xiàn)的一類完整性約束,An Introduction to Database System,完整性約束條件(續(xù)),五類靜態(tài)列級(jí)約束 1) 數(shù)據(jù)類型約束:數(shù)據(jù)的類型、長(zhǎng)度、單位、精度等 例:學(xué)生姓名的數(shù)據(jù)類型為字符型,長(zhǎng)度為8 2) 對(duì)數(shù)據(jù)格式的約束 例: 學(xué)號(hào):前兩位表示入學(xué)年份,后四位為順序編號(hào) 日期:YY.MM.DD。,An Introduction to Database System,完整性約束條件(續(xù)),3) 取值范圍或取值集合的約束 例:規(guī)定成績(jī)的取值范圍為0-50 年齡的取值范圍為14-29 性別的取值集合為男,女 4) 對(duì)空值的約束 空值:未定義或未知的值 空

6、值:與零值和空格不同 有的列允許空值,有的則不允許,如成績(jī)可為空值 5) 其他約束 例:關(guān)于列的排序說(shuō)明,組合列等,An Introduction to Database System,完整性約束條件(續(xù)),2. 靜態(tài)元組約束 規(guī)定元組的各個(gè)列之間的約束關(guān)系 例:訂貨關(guān)系中發(fā)貨量=700元 靜態(tài)元組約束只局限在元組上,An Introduction to Database System,完整性約束條件(續(xù)),3. 靜態(tài)關(guān)系約束 關(guān)系的各個(gè)元組之間或若干關(guān)系之間存在的各種聯(lián)系或約束 常見靜態(tài)關(guān)系約束: 1) 實(shí)體完整性約束 2) 參照完整性約束 3) 函數(shù)依賴約束 4) 統(tǒng)計(jì)約束,An Intr

7、oduction to Database System,統(tǒng)計(jì)約束,定義某個(gè)字段值一個(gè)關(guān)系多個(gè)元組的統(tǒng)計(jì)值之間的約束關(guān)系 例:職工平均工資的2倍=部門經(jīng)理的工資= 職工平均工資的5倍 職工平均工資值: 統(tǒng)計(jì)值,An Introduction to Database System,完整性約束條件(續(xù)),4. 動(dòng)態(tài)列級(jí)約束 動(dòng)態(tài)列級(jí)約束是修改列定義或列值時(shí)應(yīng)滿足的約束條件,An Introduction to Database System,完整性約束條件(續(xù)),1) 修改列定義時(shí)的約束 例:將原來(lái)允許空值的列改為不允許空值時(shí): 該列目前已存在空值,則拒絕這種修改 2) 修改列值時(shí)的約束 修改列值時(shí)

8、新舊值之間要滿足的約束條件 例:職工工資調(diào)整 = 原來(lái)工資 年齡只能增長(zhǎng),An Introduction to Database System,完整性約束條件(續(xù)),5. 動(dòng)態(tài)元組約束 修改元組值: 各個(gè)字段之間要滿足的約束條件 例: 職工工資調(diào)整不得低于其原來(lái)工資 + 工齡*1.5,An Introduction to Database System,完整性約束條件(續(xù)),6. 動(dòng)態(tài)關(guān)系約束 關(guān)系變化前后狀態(tài):限制條件 例:事務(wù)一致性、原子性等約束條件,An Introduction to Database System,完整性約束條件小結(jié),An Introduction to Databa

9、se System,第十章 數(shù)據(jù)庫(kù)完整性,5.1 完整性約束條件 5.2 完整性控制 5.3 SQL Server的完整性 5.4 小結(jié),An Introduction to Database System,5.2 完整性控制,一、DBMS的完整性控制機(jī)制 二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn) 三、參照完整性的實(shí)現(xiàn),An Introduction to Database System,一、DBMS的完整性控制機(jī)制,1. 定義功能 一個(gè)完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整性約束條件。,An Introduction to Database System,DBMS的完整性控制機(jī)制(續(xù)),2. 檢查

10、功能 立即執(zhí)行的約束(Immediate constraints) 語(yǔ)句執(zhí)行完后立即檢查是否違背完整性約束 延遲執(zhí)行的約束(Deferred constrainsts) 完整性檢查延遲到整個(gè)事務(wù)執(zhí)行結(jié)束后 進(jìn)行,An Introduction to Database System,DBMS的完整性控制機(jī)制(續(xù)),例:銀行數(shù)據(jù)庫(kù)中“借貸總金額應(yīng)平衡”的約束 就應(yīng)該是延遲執(zhí)行的約束 從賬號(hào)A轉(zhuǎn)一筆錢到賬號(hào)B為一個(gè)事務(wù),從賬號(hào)A轉(zhuǎn)出去錢后賬就不平了,必須等轉(zhuǎn)入賬號(hào)B后賬才能重新平衡,這時(shí)才能進(jìn)行完整性檢查。,An Introduction to Database System,DBMS的完整性控制機(jī)

11、制(續(xù)),3. 違約處理 拒絕該操作 其他處理方法,An Introduction to Database System,DBMS的完整性控制機(jī)制(續(xù)),完整性規(guī)則五元組表示: (D,O,A,C,P) D(Data) 約束作用的數(shù)據(jù)對(duì)象; O(Operation) 觸發(fā)完整性檢查的數(shù)據(jù)庫(kù)操作 當(dāng)用戶發(fā)出什么操作請(qǐng)求時(shí)需要檢查該完整性規(guī)則 是立即檢查還是延遲檢查; A(Assertion) 數(shù)據(jù)對(duì)象必須滿足的斷言或語(yǔ)義約束這是規(guī)則的主體; C(Condition) 選擇A作用的數(shù)據(jù)對(duì)象值的謂詞; P(Procedure) 違反完整性規(guī)則時(shí)觸發(fā)的過(guò)程。,An Introduction to Dat

12、abase System,DBMS的完整性控制機(jī)制(續(xù)),例1:在“學(xué)號(hào)不能為空”的約束中 D 約束作用的對(duì)象為Sno屬性 O 插入或修改Student 元組時(shí) A Sno不能為空 C 無(wú)(A可作用于所有記錄的Sno屬性) P 拒絕執(zhí)行該操作,An Introduction to Database System,DBMS的完整性控制機(jī)制(續(xù)),例2:在“教授工資不得低于500元”的約束中 D 約束作用的對(duì)象為工資Sal屬性 O 插入或修改職工元組時(shí) A Sal不能小于500 C 職稱=教授 (A僅作用于職稱=教授的記錄) P 拒絕執(zhí)行該操作,An Introduction to Databas

13、e System,二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn),關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都提供了定義和檢查實(shí)體完整性、參照完整性和用戶定義的完整性的功能 違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則的操作: 一般是拒絕執(zhí)行 違反參照完整性的操作: 拒絕執(zhí)行 接受這個(gè)操作,同時(shí)執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫(kù)的狀態(tài)正確,An Introduction to Database System,三、參照完整性的實(shí)現(xiàn),例:職工部門數(shù)據(jù)庫(kù)包含職工表EMP和部門表DEPT 1 DEPT關(guān)系的主碼為部門號(hào)Deptno 2 EMP關(guān)系的主碼為職工號(hào)Empno, 外碼為部門號(hào)Deptno 稱DEPT為被參照關(guān)系或目標(biāo)關(guān)系,EMP為參照關(guān)系 R

14、DBMS實(shí)現(xiàn)參照完整性時(shí)需要考慮以下4方面:,An Introduction to Database System,1. 外碼是否可以接受空值的問(wèn)題,外碼是否能夠取空值:依賴于應(yīng)用環(huán)境的語(yǔ)義 實(shí)現(xiàn)參照完整性: 系統(tǒng)提供定義外碼的機(jī)制 定義外碼列是否允許空值的機(jī)制,An Introduction to Database System,1. 外碼是否可以接受空值的問(wèn)題,例1:在職工部門數(shù)據(jù)庫(kù)中, EMP關(guān)系包含有外碼Deptno 某元組的這一列若為空值,表示這個(gè)職工尚未分配到任何具體的部門工作 和應(yīng)用環(huán)境的語(yǔ)義是相符,An Introduction to Database System,1. 外碼

15、是否可以接受空值的問(wèn)題,例2:學(xué)生選課數(shù)據(jù)庫(kù) Student關(guān)系為被參照關(guān)系,其主碼為Sno。 SC為參照關(guān)系,外碼為Sno。 若SC的Sno為空值:表明尚不存在的某個(gè)學(xué)生,或者某個(gè)不知學(xué)號(hào)的學(xué)生,選修了某門課程,其成績(jī)記錄在Grade中 與學(xué)校的應(yīng)用環(huán)境是不相符的,因此SC的Sno列不能取空值。,An Introduction to Database System,2.在被參照關(guān)系中刪除元組時(shí)的問(wèn)題,出現(xiàn)違約操作的情形: 刪除被參照關(guān)系的某個(gè)元組(student) 而參照關(guān)系有若干元組(SC)的外碼值與被刪除的被參照關(guān)系的主碼值相同,An Introduction to Database S

16、ystem,2.在被參照關(guān)系中刪除元組時(shí)的問(wèn)題,違約處理:可有三種策略 級(jí)聯(lián)刪除(CASCADES) 受限刪除(RESTRICTED) 置空值刪除(NULLIFIES) 這三種處理方法,哪一種是正確的,要依應(yīng)用環(huán)境的語(yǔ)義來(lái)定,An Introduction to Database System,2.在被參照關(guān)系中刪除元組時(shí)的問(wèn)題,級(jí)聯(lián)刪除 將參照關(guān)系中外碼值與被參照關(guān)系中要?jiǎng)h除元 組主碼值相對(duì)應(yīng)的元組一起刪除 受限刪除 當(dāng)參照關(guān)系中沒(méi)有任何元組的外碼值與要?jiǎng)h除 的被參照關(guān)系的元組的主碼值相對(duì)應(yīng)時(shí),系統(tǒng) 才執(zhí)行刪除操作,否則拒絕此刪除操作,An Introduction to Database

17、System,2.在被參照關(guān)系中刪除元組時(shí)的問(wèn)題,置空值刪除 刪除被參照關(guān)系的元組,并將參照關(guān)系 中與被參照關(guān)系中被刪除元組主碼值相 等的外碼值置為空值。,An Introduction to Database System,2.在被參照關(guān)系中刪除元組時(shí)的問(wèn)題,例:要?jiǎng)h除Student關(guān)系中Sno=950001的元組, 而SC關(guān)系中有4個(gè)元組的Sno都等于950001。 級(jí)聯(lián)刪除:將SC關(guān)系中所有4個(gè)Sno=950001的元組一起刪除。如果參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種刪除操作會(huì)繼續(xù)級(jí)聯(lián)下去 受限刪除:系統(tǒng)將拒絕執(zhí)行此刪除操作。,An Introduction to Datab

18、ase System,2.在被參照關(guān)系中刪除元組時(shí)的問(wèn)題,置空值刪除:將SC關(guān)系中所有Sno=950001的元組的Sno值置為空值。 在學(xué)生選課數(shù)據(jù)庫(kù)中,顯然第一種方法和第二種方法都是對(duì)的。第三種方法不符合應(yīng)用環(huán)境語(yǔ)義。,An Introduction to Database System,3.在參照關(guān)系中插入元組時(shí)的問(wèn)題,出現(xiàn)違約操作的情形 需要在參照關(guān)系中插入元組,而被參照關(guān)系不存在相應(yīng)的元組 違約反應(yīng) 受限插入 遞歸插入,An Introduction to Database System,3.在參照關(guān)系中插入元組時(shí)的問(wèn)題,受限插入 僅當(dāng)被參照關(guān)系中存在相應(yīng)的元組,其主碼值與參照關(guān)系插入元組的外碼值相同時(shí),系統(tǒng)才執(zhí)行插入操作,否則拒絕此操作。 遞歸插入 首先向被參照關(guān)系中插入相應(yīng)的元組,其主碼值等于參照關(guān)系插入元組的外碼值,然后向參照關(guān)系插入元組。,An Introduction to Database System,3.在參照關(guān)系中插入元組時(shí)的問(wèn)題,例:向SC關(guān)系插入(99001,1,90)元組,而Student關(guān)系中尚沒(méi)有Sno=99001的學(xué)生 受限插入:系統(tǒng)將拒絕

溫馨提示

  • 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)論