求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

參照完整性檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
  參照完整性

參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證數據的一致性。參照完整性又稱引用完整性。

簡介

參照完整性是關係模型的完整約束之一,屬於數據完整性的一種,其餘還有:實體完整性、用戶自定義完整性。參照完整性規則:若屬性或屬性組F是基本關係R的外鍵,它與基本關係S的主鍵Ks相對應(基本關係R和S不一定是不同的關係),則對於R中的每個元組在F上的值必須為:(1)空值,F的每個屬性值均為空值。(2)S中某個元組中的主鍵值(主碼值)。即參照的關係中的屬性值必須能夠在被參照關係找到或者取空值,否則不符合數據庫的語義。在實際操作時如更新、刪除、插入一個表中的數據,通過參照引用相互關聯的另一個表中的數據,來檢查對表的數據操作是否正確,不正確則拒絕操作。這裡的「學號」和「課程號」屬性都是選課關係的外鍵,但只有「學號」和「課程號」聯合起來才能確定選課的關係,所以這裡存在一個複合主鍵關係,(學號,課程號)是選課關係的主鍵。雖然按照參照完整性可以取兩類值,但是由於實體完整性,複合主鍵中的每個屬性均不能取空值。所以選課關係中的」學號「和」課程號」屬性實際上只能取被參照關係(學生關係和專業關係)中已經存在的主鍵值。即選課關係中的「學號」值必須是確實存在的學生的學號,學生關係中有該學生的記錄;選課關係中的「課程號」值也必須是確定存在的課程的課程號,即課程關係中有該課程的記錄。

評價

參照完整性屬於表間規則。對於永久關係的相關表,在更新、插入或刪除記錄時,如果只改其一不改其二,就會影響數據的完整性:例如修改父表中關鍵字值後,子表關鍵字值未做相應改變;刪除父表的某記錄後,子表的相應記錄未刪除,致使這些記錄成為孤立記錄;對於子表插入的記錄,父表中沒有相應關鍵字值的記錄;等等。對於這些涉及表間數據的完整性,統稱為參照完整性。參照完整性則是相關聯的兩個表之間的約束,具體的說,就是從表中每條記錄外鍵的值必須是主表中存在的,因此,如果在兩個表之間建立了關聯關係,則對一個關係進行的操作要影響到另一個表中的記錄。如果實施了參照完整性,那麼當主表中沒有相關記錄時,就不能將記錄添加到相關表中。也不能在相關表中存在匹配的記錄時刪除主表中的記錄,更不能在相關表中有相關記錄時,更改主表中的主鍵值。也就是說,實施了參照完整性後,對表中主鍵字段進行操作時系統會自動地檢查主鍵字段,看看該字段是否被添加、修改、刪除了。如果對主鍵的修改違背了參照完整性的要求,那麼系統就會自動強制執行參照完整性。[1]

參考文獻