第5章數(shù)據(jù)庫完整性選講部分_第1頁
第5章數(shù)據(jù)庫完整性選講部分_第2頁
第5章數(shù)據(jù)庫完整性選講部分_第3頁
第5章數(shù)據(jù)庫完整性選講部分_第4頁
第5章數(shù)據(jù)庫完整性選講部分_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章數(shù)據(jù)庫完整性選講部分,數(shù)據(jù)庫技術(shù)及應(yīng)用 第5章 數(shù)據(jù)庫完整性,第5章數(shù)據(jù)庫完整性選講部分,第五章 數(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í)世界,第5章數(shù)據(jù)庫完整性選講部分,完整性控制機(jī)制,1.完整性約束條件定義機(jī)制 2.完整性檢查機(jī)制 3.違約反應(yīng),第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件定義,完整性約束條件:數(shù)據(jù)模型的組成部分約束數(shù)據(jù)庫中數(shù)據(jù)的語義 DBMS應(yīng)提供定義數(shù)據(jù)庫

2、完整性約束條件,并把它們作為模式的一部分存入數(shù)據(jù)庫中,第5章數(shù)據(jù)庫完整性選講部分,完整性控制機(jī)制,檢查用戶發(fā)出的操作請求是否違背了完整性約束條件,第5章數(shù)據(jù)庫完整性選講部分,違約反應(yīng),如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動(dòng)作來保證數(shù)據(jù)的完整性。,第5章數(shù)據(jù)庫完整性選講部分,第五章 數(shù)據(jù)庫完整性,5.1 完整性約束條件 5.2 完整性控制,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),完整性約束條件作用的對象 列:對屬性的取值類型、范圍、精度等的約束條件 元組:對元組中各個(gè)屬性列間的聯(lián)系的約束 關(guān)系:對若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束,第5章數(shù)據(jù)庫完整

3、性選講部分,完整性約束條件(續(xù)),靜態(tài) 對靜態(tài)對象的約束是反映數(shù)據(jù)庫狀態(tài)合理性的約束 動(dòng)態(tài) 對動(dòng)態(tài)對象的約束是反映數(shù)據(jù)庫狀態(tài)變遷的約束,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件分類,六類完整性約束條件 靜態(tài)列級約束 靜態(tài)元組約束 靜態(tài)關(guān)系約束 動(dòng)態(tài)列級約束 動(dòng)態(tài)元組約束 動(dòng)態(tài)關(guān)系約束,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),對象狀態(tài) 動(dòng)態(tài)列級約束 動(dòng)態(tài)元組約束 動(dòng)態(tài)關(guān)系約束 動(dòng)態(tài) 靜態(tài)列級約束 靜態(tài)元組約束 靜態(tài)關(guān)系約束 靜態(tài) 列 元組 關(guān)系 對象粒度,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),1. 靜態(tài)列級約束 靜態(tài)列級約束:對的取值域的說明 最常見、最簡單、最容易實(shí)現(xiàn)的

4、一類完整性約束,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),五類靜態(tài)列級約束 1) 數(shù)據(jù)類型約束:數(shù)據(jù)的類型、長度、單位、精度等 例:學(xué)生姓名的數(shù)據(jù)類型為字符型,長度為8 2) 對數(shù)據(jù)格式的約束 例: 學(xué)號:前兩位表示入學(xué)年份,后四位為順序編號 日期:YY.MM.DD。,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),3) 取值范圍或取值集合的約束 例:規(guī)定成績的取值范圍為0-100 年齡的取值范圍為14-29 性別的取值集合為男,女 4) 對空值的約束 空值:未定義或未知的值 空值:與零值和空格不同 有的列允許空值,有的則不允許,如成績可為空值 5) 其他約束 例:關(guān)于列的排序說明,

5、組合列等,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),2. 靜態(tài)元組約束 規(guī)定元組的各個(gè)列之間的約束關(guān)系 例:訂貨關(guān)系中發(fā)貨量=700元 靜態(tài)元組約束只局限在元組上,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(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ì)約束,第5章數(shù)據(jù)庫完整性選講部分,函數(shù)依賴約束,關(guān)系字段間存在的函數(shù)依賴 例:在學(xué)生課程教師關(guān)系 SJT(S,J,T) 的函數(shù)依賴: ( (S,J)T, TJ ) 主碼: (S, J),第5章數(shù)據(jù)庫完整性選講部

6、分,統(tǒng)計(jì)約束,定義某個(gè)字段值一個(gè)關(guān)系多個(gè)元組的統(tǒng)計(jì)值之間的約束關(guān)系 例:職工平均工資的2倍=部門經(jīng)理的工資= 職工平均工資的5倍 職工平均工資值: 統(tǒng)計(jì)值,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),4. 動(dòng)態(tài)列級約束 動(dòng)態(tài)列級約束是修改列定義或列值時(shí)應(yīng)滿足的約束條件,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),1) 修改列定義時(shí)的約束 例:將原來允許空值的列改為不允許空值時(shí): 該列目前已存在空值,則拒絕這種修改 2) 修改列值時(shí)的約束 修改列值時(shí)新舊值之間要滿足的約束條件 例:職工工資調(diào)整 = 原來工資 年齡只能增長,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),5. 動(dòng)態(tài)元

7、組約束 修改元組值: 各個(gè)字段之間要滿足的約束條件 例: 職工工資調(diào)整不得低于其原來工資 + 工齡*1.5,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件(續(xù)),6. 動(dòng)態(tài)關(guān)系約束 關(guān)系變化前后狀態(tài):限制條件 例:事務(wù)一致性、原子性等約束條件,第5章數(shù)據(jù)庫完整性選講部分,完整性約束條件小結(jié),第5章數(shù)據(jù)庫完整性選講部分,第五章 數(shù)據(jù)庫完整性,5.1 完整性約束條件 5.2 完整性控制 5.3 小結(jié),第5章數(shù)據(jù)庫完整性選講部分,5.2 完整性控制,一、DBMS的完整性控制機(jī)制 二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn) 三、參照完整性的實(shí)現(xiàn),第5章數(shù)據(jù)庫完整性選講部分,一、DBMS的完整性控制機(jī)制,1. 定義功能

8、一個(gè)完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整性約束條件。,第5章數(shù)據(jù)庫完整性選講部分,DBMS的完整性控制機(jī)制(續(xù)),2. 檢查功能 立即執(zhí)行的約束(Immediate constraints) 語句執(zhí)行完后立即檢查是否違背完整性約束 延遲執(zhí)行的約束(Deferred constrainsts) 完整性檢查延遲到整個(gè)事務(wù)執(zhí)行結(jié)束后 進(jìn)行,第5章數(shù)據(jù)庫完整性選講部分,DBMS的完整性控制機(jī)制(續(xù)),例:銀行數(shù)據(jù)庫中“借貸總金額應(yīng)平衡”的約束 就應(yīng)該是延遲執(zhí)行的約束 從賬號A轉(zhuǎn)一筆錢到賬號B為一個(gè)事務(wù),從賬號A轉(zhuǎn)出去錢后賬就不平了,必須等轉(zhuǎn)入賬號B后賬才能重新平衡,這時(shí)才能進(jìn)行完整性檢查。,第

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

10、完整性控制機(jī)制(續(xù)),例1:在“學(xué)號不能為空”的約束中 D 約束作用的對象為Sno屬性 O 插入或修改Student 元組時(shí) A Sno不能為空 C 無(A可作用于所有記錄的Sno屬性) P 拒絕執(zhí)行該操作,第5章數(shù)據(jù)庫完整性選講部分,DBMS的完整性控制機(jī)制(續(xù)),例2:在“教授工資不得低于1000元”的約束中 D 約束作用的對象為工資Sal屬性 O 插入或修改職工元組時(shí) A Sal不能小于1000 C 職稱=教授 (A僅作用于職稱=教授的記錄) P 拒絕執(zhí)行該操作,第5章數(shù)據(jù)庫完整性選講部分,二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn),關(guān)系數(shù)據(jù)庫系統(tǒng)都提供了定義和檢查實(shí)體完整性、參照完整性和用戶定義的完

11、整性的功能 違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則的操作: 一般是拒絕執(zhí)行 違反參照完整性的操作: 拒絕執(zhí)行 接受這個(gè)操作,同時(shí)執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的狀態(tài)正確,第5章數(shù)據(jù)庫完整性選講部分,三、參照完整性的實(shí)現(xiàn),例:職工部門數(shù)據(jù)庫包含職工表EMP和部門表DEPT 1 DEPT關(guān)系的主碼為部門號Deptno 2 EMP關(guān)系的主碼為職工號Empno, 外碼為部門號Deptno 稱DEPT為被參照關(guān)系或目標(biāo)關(guān)系,EMP為參照關(guān)系 RDBMS實(shí)現(xiàn)參照完整性時(shí)需要考慮以下4方面:,第5章數(shù)據(jù)庫完整性選講部分,1. 外碼是否可以接受空值的問題,外碼是否能夠取空值:依賴于應(yīng)用環(huán)境的語義 實(shí)現(xiàn)參照

12、完整性: 系統(tǒng)提供定義外碼的機(jī)制 定義外碼列是否允許空值的機(jī)制,第5章數(shù)據(jù)庫完整性選講部分,1. 外碼是否可以接受空值的問題,例1:在職工部門數(shù)據(jù)庫中, EMP關(guān)系包含有外碼Deptno 某元組的這一列若為空值,表示這個(gè)職工尚未分配到任何具體的部門工作 和應(yīng)用環(huán)境的語義是相符,第5章數(shù)據(jù)庫完整性選講部分,1. 外碼是否可以接受空值的問題,例2:學(xué)生選課數(shù)據(jù)庫 Student關(guān)系為被參照關(guān)系,其主碼為Sno。 SC為參照關(guān)系,外碼為Sno。 若SC的Sno為空值:表明尚不存在的某個(gè)學(xué)生,或者某個(gè)不知學(xué)號的學(xué)生,選修了某門課程,其成績記錄在Grade中 與學(xué)校的應(yīng)用環(huán)境是不相符的,因此SC的Sno

13、列不能取空值。,第5章數(shù)據(jù)庫完整性選講部分,2.在被參照關(guān)系中刪除元組時(shí)的問題,出現(xiàn)違約操作的情形: 刪除被參照關(guān)系的某個(gè)元組(student) 而參照關(guān)系有若干元組(SC)的外碼值與被刪除的被參照關(guān)系的主碼值相同,第5章數(shù)據(jù)庫完整性選講部分,2.在被參照關(guān)系中刪除元組時(shí)的問題,違約反應(yīng):可有三種策略 級聯(lián)刪除(CASCADES) 受限刪除(RESTRICTED) 置空值刪除(NULLIFIES) 這三種處理方法,哪一種是正確的,要依應(yīng)用環(huán)境的語義來定,第5章數(shù)據(jù)庫完整性選講部分,2.在被參照關(guān)系中刪除元組時(shí)的問題,級聯(lián)刪除 將參照關(guān)系中外碼值與被參照關(guān)系中要?jiǎng)h除元 組主碼值相對應(yīng)的元組一起刪

14、除 受限刪除 當(dāng)參照關(guān)系中沒有任何元組的外碼值與要?jiǎng)h除 的被參照關(guān)系的元組的主碼值相對應(yīng)時(shí),系統(tǒng) 才執(zhí)行刪除操作,否則拒絕此刪除操作,第5章數(shù)據(jù)庫完整性選講部分,2.在被參照關(guān)系中刪除元組時(shí)的問題,置空值刪除 刪除被參照關(guān)系的元組,并將參照關(guān)系 中與被參照關(guān)系中被刪除元組主碼值相 等的外碼值置為空值。,第5章數(shù)據(jù)庫完整性選講部分,2.在被參照關(guān)系中刪除元組時(shí)的問題,例:要?jiǎng)h除Student關(guān)系中Sno=950001的元組, 而SC關(guān)系中有4個(gè)元組的Sno都等于950001。 級聯(lián)刪除:將SC關(guān)系中所有4個(gè)Sno=950001的元組一起刪除。如果參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種刪除

15、操作會(huì)繼續(xù)級聯(lián)下去 受限刪除:系統(tǒng)將拒絕執(zhí)行此刪除操作。,第5章數(shù)據(jù)庫完整性選講部分,2.在被參照關(guān)系中刪除元組時(shí)的問題,置空值刪除:將SC關(guān)系中所有Sno=950001的元組的Sno值置為空值。 在學(xué)生選課數(shù)據(jù)庫中,顯然第一種方法和第二種方法都是對的。第三種方法不符合應(yīng)用環(huán)境語義。,第5章數(shù)據(jù)庫完整性選講部分,3.在參照關(guān)系中插入元組時(shí)的問題,出現(xiàn)違約操作的情形 需要在參照關(guān)系中插入元組,而被參照關(guān)系不存在相應(yīng)的元組 違約反應(yīng) 受限插入 遞歸插入,第5章數(shù)據(jù)庫完整性選講部分,3.在參照關(guān)系中插入元組時(shí)的問題,受限插入 僅當(dāng)被參照關(guān)系中存在相應(yīng)的元組,其主碼值與參照關(guān)系插入元組的外碼值相同時(shí),

16、系統(tǒng)才執(zhí)行插入操作,否則拒絕此操作。 遞歸插入 首先向被參照關(guān)系中插入相應(yīng)的元組,其主碼值等于參照關(guān)系插入元組的外碼值,然后向參照關(guān)系插入元組。,第5章數(shù)據(jù)庫完整性選講部分,3.在參照關(guān)系中插入元組時(shí)的問題,例:向SC關(guān)系插入(99001,1,90)元組,而Student關(guān)系中尚沒有Sno=99001的學(xué)生 受限插入:系統(tǒng)將拒絕向SC關(guān)系插入(99001,1,90)元組 遞歸插入:系統(tǒng)將首先向Student關(guān)系插入Sno=99001的元組,然后向SC關(guān)系插入(99001,1,90)元組。,第5章數(shù)據(jù)庫完整性選講部分,4. 修改被參照關(guān)系中主碼的問題,兩種策略 (1)不允許修改主碼 (2)允許修

17、改主碼,第5章數(shù)據(jù)庫完整性選講部分,允許修改主碼策略,違約操作 要修改被參照關(guān)系中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等于被參照關(guān)系要修改的主碼值 要修改參照關(guān)系中某些元組的主碼值,而被參照關(guān)系中沒有任何元組的外碼值等于被參照關(guān)系修改后的主碼值,第5章數(shù)據(jù)庫完整性選講部分,允許修改主碼策略,違約反應(yīng) (1) 修改的關(guān)系是被參照關(guān)系:與刪除類似 級聯(lián)修改 受限修改 置空值修改,第5章數(shù)據(jù)庫完整性選講部分,允許修改主碼策略,級聯(lián)修改 修改被參照關(guān)系中主碼值同時(shí),用相同的方法修改參照關(guān)系中相應(yīng)的外碼值。 受限修改 拒絕此修改操作。只當(dāng)參照關(guān)系中沒有任何元組的外碼值等于被參照關(guān)系中某個(gè)元

18、組的主碼值時(shí),這個(gè)元組的主碼值才能被修改。 置空值修改 修改被參照關(guān)系中主碼值,同時(shí)將參照關(guān)系中相應(yīng)的外碼值置為空值。,第5章數(shù)據(jù)庫完整性選講部分,允許修改主碼策略,例:將Student關(guān)系中Sno=950001的元組中Sno值改為960123。而SC關(guān)系中有 4個(gè)元組的Sno=950001 級聯(lián)修改:將SC關(guān)系中4個(gè)Sno=950001元組中的Sno值也改為960123。如果參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種修改操作會(huì)繼續(xù)級聯(lián)下去。,第5章數(shù)據(jù)庫完整性選講部分,允許修改主碼策略,受限修改:只有SC中沒有任何元組的Sno=950001時(shí),才能修改Student表中Sno=950001的元組的Sno值改為960123。 置空值修改:將Student表中Sno=950001的元組的Sno值改為

溫馨提示

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

評論

0/150

提交評論