




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1數據庫完整性數據庫完整性 第第10章章n 完整性約束條件完整性約束條件n 完整性控制完整性控制n OracleOracle的完整性的完整性2l 學習重點l 學習難點第第10章章 重點與難點重點與難點 3n什么是數據庫的完整性什么是數據庫的完整性p數據的數據的正確性正確性和和相容性相容性p防止不合語義防止不合語義的數據進入數據庫的數據進入數據庫例例: : 學生的年齡必須是整數,取值范圍為學生的年齡必須是整數,取值范圍為14-2914-29; 學生的性別只能是男或女;學生的性別只能是男或女; 學生的學號一定是唯一的;學生的學號一定是唯一的; 學生所在的系必須是學校開設的系。學生所在的系必須是學校
2、開設的系。p完整性完整性:是否真實地反映現實世界:是否真實地反映現實世界4安整性控制機制安整性控制機制1. 1. 完整性約束條件完整性約束條件定義機制定義機制2. 2. 完整性檢查完整性檢查機制機制3. 3. 違約反應違約反應 完整性約束條件:加在數據庫數據之上的語義約束條件完整性約束條件:加在數據庫數據之上的語義約束條件檢查用戶發出的操作請求是否違背了完整性約束條件檢查用戶發出的操作請求是否違背了完整性約束條件如果發現用戶的操作請求使數據違背了完整性約束條件,如果發現用戶的操作請求使數據違背了完整性約束條件,則采取一定的動作來保證數據的完整性。則采取一定的動作來保證數據的完整性。510.1
3、10.1 計算機安全性概論計算機安全性概論n 完整性約束條件作用的對象完整性約束條件作用的對象p 列列:對屬性的取值類型、范圍、精度等的約束條件:對屬性的取值類型、范圍、精度等的約束條件p 元組元組:對元組中各個屬性列間的聯系的約束:對元組中各個屬性列間的聯系的約束p 關系關系:對若干元組間、關系集合上及關系之間的聯系的約束:對若干元組間、關系集合上及關系之間的聯系的約束6n 靜態靜態對靜態對象的約束是反映對靜態對象的約束是反映數據庫狀態合理性數據庫狀態合理性的約束的約束n 動態動態對動態對象的約束是反映對動態對象的約束是反映數據庫狀態變遷數據庫狀態變遷的約束的約束781. 1. 靜態列級約束
4、靜態列級約束n靜態列級約束:靜態列級約束:對列的取值域的說明對列的取值域的說明n最常見、最簡單、最容易實現的一類完整性約束最常見、最簡單、最容易實現的一類完整性約束n五類靜態列級約束五類靜態列級約束1) 1) 數據類型約束:數據的類型、長度、單位、精度等數據類型約束:數據的類型、長度、單位、精度等 例:學生姓名的數據類型為字符型,長度為例:學生姓名的數據類型為字符型,長度為8 83) 3) 取值范圍或取值集合的約束取值范圍或取值集合的約束例:規定成績的取值范圍為例:規定成績的取值范圍為0-100;0-100;年齡的取值范圍為年齡的取值范圍為14-2914-29 性別的取值集合為性別的取值集合為
5、 男男, ,女女 2) 2) 對數據格式的約束對數據格式的約束例:學號:前兩位表示入學年份,后四位為順序編號例:學號:前兩位表示入學年份,后四位為順序編號 日期:日期:YY.MM.DDYY.MM.DD。4) 4) 對空值的約束對空值的約束( (空值:未定義或未知的值空值:未定義或未知的值, ,與零值和空格不同與零值和空格不同) ) 有的列允許空值,有的則不允許,如成績可為空值有的列允許空值,有的則不允許,如成績可為空值5) 5) 其他約束其他約束例:關于列的排序說明等例:關于列的排序說明等92. 2. 靜態元組約束靜態元組約束n 規定規定元組的各個列之間元組的各個列之間的約束關系的約束關系例:
6、訂貨關系中發貨量例:訂貨關系中發貨量=700=700元元n 靜態元組約束只局限在元組上靜態元組約束只局限在元組上 103. 3. 靜態關系約束靜態關系約束n 關系的關系的各個元組之間各個元組之間或或若干關系之間若干關系之間存在的各種聯系或約束存在的各種聯系或約束n 關系字段間存在的函數依賴關系字段間存在的函數依賴例:在學生課程教師關系例:在學生課程教師關系 SJT(S,J,T) SJT(S,J,T) 的函數依賴:的函數依賴: ( (S,J( (S,J)T, TJ ) T, TJ ) 主碼:主碼: (S, J)(S, J)n 定義某個字段值與一個關系多個元組的統計值之間的約束關系定義某個字段值與
7、一個關系多個元組的統計值之間的約束關系 例:職工平均工資的例:職工平均工資的2 2倍倍=部門經理的工資部門經理的工資= = 原來工資原來工資 年齡只能增長年齡只能增長125. 5. 動態元組約束動態元組約束n修改元組值修改元組值: : 各個屬性之間要滿足的約束條件各個屬性之間要滿足的約束條件6. 6. 動態關系約束動態關系約束n關系變化前后狀態關系變化前后狀態:限制條件:限制條件例例: : 職工工資調整不得低于其原來工資職工工資調整不得低于其原來工資 + + 工齡工齡1.51.5例:事務一致性、原子性等約束條件例:事務一致性、原子性等約束條件13 粒度粒度狀態狀態 列列 級級 元元 組組 級級
8、 關關 系系 級級 靜靜 態態 列定義列定義 類型類型 格式格式 值域值域 空值空值 元 組 值 應 滿元 組 值 應 滿足的條件足的條件 實體完整性約束實體完整性約束參照完整性約束參照完整性約束 函數依賴約束函數依賴約束 統計約束統計約束 動動 態態 改變列定改變列定義或列值義或列值 元組新舊值元組新舊值之間應滿足之間應滿足的約束條件的約束條件 關系新舊狀態間應關系新舊狀態間應滿足的約束條件滿足的約束條件 1410.2 10.2 完整性控制完整性控制n DBMS DBMS的完整性控制機制的完整性控制機制n 關系系統三類完整性的實現關系系統三類完整性的實現n 參照完整性的實現參照完整性的實現1
9、5DBMSDBMS的完整性控制機制的完整性控制機制1. 1. 定義功能定義功能 允許用戶定義各類完整性約束條件允許用戶定義各類完整性約束條件2. 2. 檢查功能檢查功能p 立即執行的約束立即執行的約束(Immediate constraints)(Immediate constraints) 語句執行完后立即檢查是否違背完整性約束語句執行完后立即檢查是否違背完整性約束p延遲執行的約束延遲執行的約束(Deferred constraints)(Deferred constraints) 完整性檢查延遲到整個事務執行結束后進行完整性檢查延遲到整個事務執行結束后進行例:銀行數據庫中例:銀行數據庫中“
10、借貸總金額應平衡借貸總金額應平衡”的約束的約束 應該是延遲執行的應該是延遲執行的約束約束n從賬號從賬號A A轉一筆錢到賬號轉一筆錢到賬號B B為一個事務,從賬號為一個事務,從賬號A A轉出去錢后賬就不平了,轉出去錢后賬就不平了,必須等轉入賬號必須等轉入賬號B B后賬才能重新平衡,這時才能進行完整性檢查。后賬才能重新平衡,這時才能進行完整性檢查。3. 3. 違約反應違約反應p 拒絕該操作拒絕該操作p 其他處理方法其他處理方法16DBMSDBMS的完整性控制機制的完整性控制機制完整性規則五元組表示完整性規則五元組表示: :(D(D,O O,A A,C C,P)P)nD D(DataData) 約束
11、作用的數據對象;約束作用的數據對象;nO O(OperationOperation) 觸發完整性檢查的數據庫操作觸發完整性檢查的數據庫操作 當用戶發出什么操作請求時需要檢查該完整性規則是立即檢查當用戶發出什么操作請求時需要檢查該完整性規則是立即檢查還是延遲檢查;還是延遲檢查;nA A(AssertionAssertion) 數據對象必須滿足的斷言或語義約束,這是數據對象必須滿足的斷言或語義約束,這是規則的主體;規則的主體;n C C(ConditionCondition) 選擇選擇A A作用的數據對象值的謂詞;作用的數據對象值的謂詞;nP P(ProcedureProcedure) 違反完整性
12、規則時觸發的過程。違反完整性規則時觸發的過程。1718例例2 2:在:在“教授工資不得低于教授工資不得低于10001000元元”的約束中的約束中D D 約束作用的對象為工資約束作用的對象為工資SalSal屬性屬性O O 插入或修改職工元組時插入或修改職工元組時A SalA Sal不能小于不能小于10001000C C 職稱職稱=教授教授 (A (A僅作用于職稱僅作用于職稱=教授教授的記的記錄錄) )P P 拒絕執行該操作拒絕執行該操作19關系系統三類完整性的實現關系系統三類完整性的實現n關系數據庫系統都提供了定義和檢查實體完整性、參關系數據庫系統都提供了定義和檢查實體完整性、參照完整性和用戶定
13、義的完整性的功能照完整性和用戶定義的完整性的功能n違反違反實體完整性實體完整性規則和規則和用戶定義的完整性用戶定義的完整性規則的操作:規則的操作: 一般是一般是拒絕執行拒絕執行n違反違反參照完整性參照完整性的操作:的操作:p拒絕執行拒絕執行p接受這個操作,同時接受這個操作,同時執行一些附加的操作執行一些附加的操作,以保,以保證數據庫的狀態正確證數據庫的狀態正確20參照完整性的實現參照完整性的實現例例: :職工部門數據庫包含職工表職工部門數據庫包含職工表EMPEMP和部門表和部門表DEPTDEPT1 DEPT1 DEPT關系的主碼為部門號關系的主碼為部門號DeptnoDeptno2 EMP2 E
14、MP關系的主碼為職工號關系的主碼為職工號EmpnoEmpno, , 外碼為部門號外碼為部門號DeptnoDeptno 稱稱DEPTDEPT為被參照關系或目標關系,為被參照關系或目標關系,EMPEMP為參照關系為參照關系RDBMSRDBMS實現參照完整性時需要考慮以下實現參照完整性時需要考慮以下4 4方面:方面:外碼是否可以接受空值的問題外碼是否可以接受空值的問題在參照關系中插入元組時的問題在參照關系中插入元組時的問題在被參照關系中刪除元組時的問題在被參照關系中刪除元組時的問題修改被參照關系中主碼的問題修改被參照關系中主碼的問題21外碼是否可以接受空值的問題外碼是否可以接受空值的問題外碼是否能夠
15、取空值:外碼是否能夠取空值:依賴于應用環境的語義依賴于應用環境的語義實現參照完整性:實現參照完整性: 系統提供定義外碼的機制系統提供定義外碼的機制 定義外碼列是否允許空值的機制定義外碼列是否允許空值的機制例例2 2:學生選課數據庫:學生選課數據庫 StudentStudent關系為被參照關系,其主碼為關系為被參照關系,其主碼為SnoSno。 SCSC為參照關系,外碼為為參照關系,外碼為SnoSno。 若若SCSC的的SnoSno為空值:表明尚不存在的某個學生,或者某個不知學號的學為空值:表明尚不存在的某個學生,或者某個不知學號的學生,選修了某門課程,其成績記錄在生,選修了某門課程,其成績記錄在
16、GradeGrade中,與學校的應用環境是不相符中,與學校的應用環境是不相符的,因此的,因此SCSC的的SnoSno列不能取空值。列不能取空值。22在被參照關系中刪除元組時的問題在被參照關系中刪除元組時的問題 刪除被參照關系的某個元組(刪除被參照關系的某個元組(studentstudent),而參照關系有若干),而參照關系有若干元組元組(SC)(SC)的外碼值與被刪除的被參照關系的主碼值相同。的外碼值與被刪除的被參照關系的主碼值相同。n 違約反應:可有三種策略(正確與否依應用環境的語義來定)違約反應:可有三種策略(正確與否依應用環境的語義來定)p 級聯刪除級聯刪除(CASCADESCASCAD
17、ES)p 受限刪除受限刪除(RESTRICTEDRESTRICTED)p 置空值刪除置空值刪除(NULLIFIESNULLIFIES)23例:要刪除例:要刪除StudentStudent關系中關系中SnoSno=950001=950001的元組,的元組, 而而SCSC關系中有關系中有4 4個元組的個元組的SnoSno都等于都等于950001950001。p級聯刪除級聯刪除:將:將SCSC關系中所有關系中所有4 4個個SnoSno=950001=950001的元組一起刪的元組一起刪除。如果參照關系同時又是另一個關系的被參照關系,除。如果參照關系同時又是另一個關系的被參照關系,則這種刪除操作會繼續
18、級聯下去。則這種刪除操作會繼續級聯下去。 p受限刪除受限刪除:系統將拒絕執行此刪除操作。:系統將拒絕執行此刪除操作。p置空值刪除置空值刪除:將:將SCSC關系中所有關系中所有SnoSno=950001=950001的元組的的元組的SnoSno值值置為空值。置為空值。p在學生選課數據庫中,顯然第一種方法和第二種方法都在學生選課數據庫中,顯然第一種方法和第二種方法都是對的。第三種方法不符合應用環境語義。是對的。第三種方法不符合應用環境語義。24在參照關系中插入元組時的問題在參照關系中插入元組時的問題n出現違約操作的情形出現違約操作的情形p需在參照關系中插入元組,而被參照關系不存在相應的元組需在參照
19、關系中插入元組,而被參照關系不存在相應的元組n違約反應違約反應p受限插入受限插入p遞歸插入遞歸插入 25例:向例:向SCSC關系插入(關系插入(9900199001,1 1,9090)元組,而)元組,而StudentStudent關系中尚沒有關系中尚沒有SnoSno=99001=99001的學生。的學生。p受限插入受限插入:系統將拒絕向:系統將拒絕向SCSC關系插入(關系插入(9900199001,1 1,9090)元組。)元組。p遞歸插入遞歸插入:系統將首先向:系統將首先向StudentStudent關系插入關系插入SnoSno=99001=99001的元組,然后向的元組,然后向SCSC關系
20、插入(關系插入(9900199001,1 1,9090)元組。)元組。26修改被參照關系中主碼的問題修改被參照關系中主碼的問題n兩種策略兩種策略p不允許修改主碼不允許修改主碼p允許修改主碼允許修改主碼 l違約操作違約操作u要要修改被參照關系修改被參照關系中某些元組的主碼值,而參照關系中有些元中某些元組的主碼值,而參照關系中有些元組的外碼值正好等于被參照關系要修改的主碼值組的外碼值正好等于被參照關系要修改的主碼值u要要修改參照關系修改參照關系中某些元組的主碼值,而被參照關系中沒有任中某些元組的主碼值,而被參照關系中沒有任何元組的外碼值等于被參照關系修改后的主碼值何元組的外碼值等于被參照關系修改后
21、的主碼值l修改的關系是被參照關系:與刪除類似修改的關系是被參照關系:與刪除類似u級聯修改級聯修改: :u受限修改受限修改: :u置空值修置空值修: :改改27例:將例:將StudentStudent關系中關系中SnoSno=950001=950001的元組中的元組中SnoSno值改為值改為960123960123。而而SCSC關系中有關系中有 4 4個元組的個元組的SnoSno=950001=950001p級聯修改級聯修改:將:將SCSC關系中關系中4 4個個SnoSno=950001=950001元組中的元組中的SnoSno值也改為值也改為960123960123。如果參照關系同時又是另一個
22、關系的被參照關系,。如果參照關系同時又是另一個關系的被參照關系,則這種修改操作會繼續級聯下去。則這種修改操作會繼續級聯下去。p受限修改受限修改:只有:只有SCSC中沒有任何元組的中沒有任何元組的SnoSno=950001=950001時,才能修時,才能修改改StudentStudent表中表中SnoSno=950001=950001的元組的的元組的SnoSno值改為值改為960123960123。p置空值修改置空值修改:將:將StudentStudent表中表中SnoSno=950001=950001的元組的的元組的SnoSno值改為值改為960123960123。而將。而將S S表中所有表中所有SnoSno=950001=950001的元組的的元組的SnoSno值置為空值。值置為空值。28RDBMSRDBMS在實現參照完整性時在實現參照完整性時: :n需要向用戶提供定義主碼、外碼的機制需要向用戶提供定義主碼、外碼的機制n向用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度學習驅動的自適應量子糾錯算法-洞察闡釋
- 新生兒鐵缺陷精準醫療優化研究-洞察闡釋
- 數據訪問權限控制機制-洞察闡釋
- 虛擬現實技術在游戲中的應用監管-洞察闡釋
- 智能化紙張生產線中的智能設備狀態監測與優化-洞察闡釋
- 航空貨運產品運輸服務協議
- 車輛收費員勞動合同工傷賠償協議范本
- 基于深度學習的電子設備壽命預測方法-洞察闡釋
- 綠色生態工業園區場地廠房租賃與環保責任合同
- 高端裝備制造業廠房租賃居間合同樣本
- 高迪 圣家族大教堂賞析課件
- 2024屆陜西省西安市碑林區鐵一中學數學七年級第二學期期末考試試題含解析
- 直腸損傷查房
- 腦卒中后遺癥康復護理查房課件
- 無人機駕駛員培訓計劃及大綱
- 美術遺存的保護與傳承
- 圓錐破碎機技術協議
- 年產4億片阿奇霉素片的精烘包及車間設計
- 執業藥師課件
- 模具工裝檢具加工申請單
- TB10092-2017 鐵路橋涵混凝土結構設計規范
評論
0/150
提交評論