在表中設置外鍵實現(xiàn)的是參照完整性。
參照的完整性要求關系中不允許引用不存在的實體。與實體完整性是關系模型必須滿足的完整性約束條件,目的是保證數據的一致性。參照完整性又稱引用完整性。(推薦學習:MySQL視頻教程)
參照完整性是關系模型的完整約束之一,屬于數據完整性的一種,其余還有:實體完整性、用戶自定義完整性。
參照完整性規(guī)則:若屬性或屬性組F是基本關系R的外鍵,它與基本關系S的主鍵Ks相對應(基本關系R和S不一定是不同的關系),則對于R中的每個元組在F上的值必須為:
(1)空值,F(xiàn)的每個屬性值均為空值。
(2)S中某個元組中的主鍵值(主碼值)。
即參照的關系中的屬性值必須能夠在被參照關系找到或者取空值,否則不符合數據庫的語義。在實際操作時如更新、刪除、插入一個表中的數據,通過參照引用相互關聯(lián)的另一個表中的數據,來檢查對表的數據操作是否正確,不正確則拒絕操作
性質
參照完整性屬于表間規(guī)則。對于永久關系的相關表,在更新、插入或刪除記錄時,如果只改其一不改其二,就會影響數據的完整性:
例如修改父表中關鍵字值后,子表關鍵字值未做相應改變;刪除父表的某記錄后,子表的相應記錄未刪除,致使這些記錄成為孤立記錄;對于子表插入的記錄,父表中沒有相應關鍵字值的記錄;等等。對于這些設計表間數據的完整性,統(tǒng)稱為參照完整性。
參照完整性則是相關聯(lián)的兩個表之間的約束,具體的說,就是從表中每條記錄外鍵的值必須是主表中存在的,因此,如果在兩個表之間建立了關聯(lián)關系,則對一個關系進行的操作要影響到另一個表中的記錄。
如果實施了參照完整性,那么當主表中沒有相關記錄時,就不能將記錄添加到相關表中。也不能在相關表中存在匹配的記錄時刪除主表中的記錄,更不能在相關表中有相關記錄時,更改主表中的主鍵值。
也就是說,實施了參照完整性后,對表中主鍵字段進行操作時系統(tǒng)會自動地檢查主鍵字段,看看該字段是否被添加、修改、刪除了。如果對主鍵的修改違背了參照完整性的要求,那么系統(tǒng)就會自動強制執(zhí)行參照完整性。