時間:2022-11-27 18:30:01 | 來源:信息時代
時間:2022-11-27 18:30:01 來源:信息時代
完整性子系統(tǒng) : DBMS中處理完整性定義與檢查的子系統(tǒng)。數(shù)據(jù)庫完整性功能是通過DBMS的完整性子系統(tǒng)實現(xiàn)的?,F(xiàn)代數(shù)據(jù)庫管理系統(tǒng)一般都有完整性子系統(tǒng),負責處理數(shù)據(jù)庫的完整性語義約束的定義和檢查,防止因錯誤的更新操作產(chǎn)生的不一致性。用戶可以使用完整性保護機制,對某些數(shù)據(jù)規(guī)定一些語義約束。
1.完整性子系統(tǒng)功能
完整性子系統(tǒng)是根據(jù)“完整性規(guī)則集”工作的,完整性規(guī)則集是由DBA或應用程序員事先向完整性子系統(tǒng)提供的有關數(shù)據(jù)約束的一組規(guī)則。
(1)監(jiān)督事務執(zhí)行(尤其是更新操作),檢查是否違反完整性規(guī)則。
(2)如出現(xiàn)違反現(xiàn)象時,作出適當?shù)姆磻?例如,拒絕操作,報告違反,也可能改正錯誤)。
其完整性檢查是由一組完整性規(guī)則提供的。
2.完整性子系統(tǒng)的約束條件分類
在完整性子系統(tǒng)中,完整性的約束條件可以從不同角度進行分類,因此會有多種分類方法。
(1)集合約束(set constraint):指在對數(shù)據(jù)庫進行插入、更新或刪除時,其操作對象是記錄的完整集合而不只是一個特定記錄的約束。即僅從單一記錄本身還無法判斷是否滿足該約束,而要考慮與該記錄有關的數(shù)據(jù)記錄的集合。例如,在供應商和裝運單關系中,只有當某個供應商目前沒有裝運單時才允許刪去這個供應商,亦即刪除某供應商的操作應在該供應商的所有裝運單刪除后才能進行,這就是集合約束。
(2)狀態(tài)約束(state constraint): 指數(shù)據(jù)庫狀態(tài)的變化只涉及變化的數(shù)據(jù)庫狀態(tài)是否正確,數(shù)據(jù)之間是否滿足一致性,而同數(shù)據(jù)庫中所有其他數(shù)據(jù)狀態(tài)無關的一種約束。例如,“教學數(shù)據(jù)庫中輸入的學生課程考試成績應是0~100之間的整數(shù)”就屬于狀態(tài)約束。
(3)變遷約束(transition constraint): 對數(shù)據(jù)庫修改前和修改后的狀態(tài)相比較應滿足一定條件的一種約束。例如,“當修改一個人的年齡數(shù)據(jù)時,修改后的值必須大于舊值”,就屬于變遷約束。
(4)立即約束(immediate constraint):當數(shù)據(jù)庫狀態(tài)改變時,只要插入、更新或刪除過程一旦執(zhí)行,就要立即對數(shù)據(jù)所應滿足的約束條件進行檢查的一種約束。該約束要求數(shù)據(jù)庫在任何時刻的狀態(tài)都必須與這些約束相一致。
(5)推遲約束(deferred constraint): 指在改變數(shù)據(jù)庫狀態(tài)的執(zhí)行過程中可能要違反約束條件,而在整個過程執(zhí)行完后才滿足的一種約束。例如,轉(zhuǎn)賬事務需要把一筆金額從一個賬號轉(zhuǎn)到另一個賬號,從而要更新兩個不同的金額;在更新了一個金額后,賬上金額總和是錯誤的,而只有在第二個金額更新之后,金額總和才是正確的。這種完整性約束的檢驗,只在事務結(jié)束即事務提交時才進行,所以屬于推遲約束。
(6)有條件與無條件類型的約束(constraint of conditional and unconditional type): 指對約束條件的一種劃分。例如,以關系模式R (NAME,AGE,SALARY)為例,AGE<300是無條件約束; 而IF AGE<30 THEN SALARY<100便是有條件約束。
(7) 局部約束與全局約束(local and global constraint): 局部約束是指在某一特定范圍內(nèi)所應滿足的限制,全局約束是指在整個數(shù)據(jù)庫范圍內(nèi)均應滿足的限制。如在一個關系內(nèi)部屬性域之間的函數(shù)依賴、多值依賴等,是局部約束。參照完整性約束則是全局約束。
(8)一致性約束(consistency constraint): 數(shù)據(jù)庫中為了維護數(shù)據(jù)與現(xiàn)實世界的一致性,對數(shù)據(jù)庫的插入、刪除和修改操作必須遵循兩條約束規(guī)則: ①實體完整性(即存在性約束); ②參照完整性。
(9)存在性約束(existing constraint):主屬性非空的約束。在一個關系中,主鍵是唯一標識一個元組的,因而它也唯一標識該元組所表示的作為現(xiàn)實世界事物的抽象的某個實體。如果組成主鍵的屬性中某些分量為空值,則將難以判斷該元組與其他元組(相應地,該元組所對應的實體與其他實體)的區(qū)別。因此在關系的元組中,主鍵鍵值的任一分量都不允許為空值,這就是存在性約束或?qū)嶓w完整性約束。
(10)系完整性約束(set integrity constraint): 指在網(wǎng)狀數(shù)據(jù)庫中系結(jié)構(gòu)的完整性約束,即對系的首記錄或成員記錄進行操作時所應遵守的一種約束。如在插入一個成員記錄時,要保證其未來的首記錄值已經(jīng)存在才能插入,在插入后要建立與首記錄的相應聯(lián)系。在刪除首記錄時,與該首記錄相應聯(lián)系的成員記錄在不與其他首記錄發(fā)生聯(lián)系時應一起刪去,否則保留。在DBTG的模式描述中規(guī)定成員記錄的入系類別和出系類別時可提供這類完整性約束。一個完善的完整性子系統(tǒng)應該允許用戶根據(jù)實際應用定義各種完整性約束條件。
微信公眾號
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。