通過上一篇隨筆,筆者了解到,實體完整性是通過主鍵約束實現的,而參照完整性是通過外鍵約束實現的,兩者都是為了保證數據的完整性和一致性。
主鍵約束比較好理解,就是主鍵值不能為空且不重復,已經強調好多次,所以這里重點記錄對外鍵約束的學習。
主表與從表
若同一個數據庫中,B表的外鍵與A表的主鍵相對應,則A表為主表,B表為從表。
假設學生表(學號,姓名,性別,專業號),專業表(專業號,專業名稱),則學生表中的專業號為學生表的外鍵,其與專業表中“專業號”屬性相關聯,因此,專業表為主表,學生表為從表。
外鍵約束
外鍵約束是相關聯的兩個表之間的數據操作約束,包括刪除,插入,更新等。理論上,在對關聯數據表進行數據操作時,只改其一,不改其二,不符合關系數據庫的參照完整性。
(1)更新
更新主表的某一個記錄的主鍵值(其實,這種操作是不被允許的),系統會自動檢測該主鍵值在從表中是否存在,若存在,則需要明確操作(一般默認為不被允許);
更新從表的某一個記錄的外鍵值,系統會自動檢測欲更新的外鍵值在主表中是否存在,若不存在,則需要明確操作(一般默認為不被允許);
(2)插入
向主表中插入一條新的記錄,不會對現有從表造成影響;
向從表中插入一條新的記錄,系統會檢測外鍵對應的屬性值在主表中是否存在,若存在,否則需要明確操作(一般默認為不被允許);
(3)刪除
從主表中刪除一條記錄,系統會自動檢測該記錄的主鍵值是否在從表中存在,若存在,則需要明確操作(一般默認為不被允許);
從從表中刪除一條記錄,不會對主表造成影響;