引用完整性
引用完整性指被引用表中的主關鍵字和引用表中的外部主關鍵字之間的關係。如被引用行是否可以被刪除等。
在現實生活中的實體之間總是存在著某種聯繫,在關係模型中實體與實體之間的聯繫都是用關係來描述的,這樣就存在關係與關係之間的引用。例如,有學生實體和班級兩個實體集合:
學生(學號,姓名,性別,年齡,班級編號)其中學號為主碼。
班級(班級編號,學生數量,班主任姓名),其中班級編號為主碼。
這兩個關係之間存在著屬性的引用,即學生關係引用了班級關係的主關鍵字"班級編號",顯然,學生關係中的"班級編號"值必須是在班級表中確實存在的班級的班級編號,即班級關係中有該班級的記錄。這說明學生關係中某個屬性的取值要參照班級關係的屬性取值。
在這種情況下,"班級編號"不是學生關係的主關鍵字,但是卻是班級關係的主碼,則稱"班級編號"是學生關係的外關鍵字。
外關鍵字的定義
設FK是基本關係R的一個或一組屬性,但不一定是關係R的主關鍵字。如果FK與基本關係S的主關鍵字相對應,則稱FK是基本關係R的外關鍵字,並稱基本關係R為引用關係,基本關係S為被引用關係。在上例中,"班級編號"是學生關係的外關鍵字,學生關係是引用關係,班級關係是被引用關係。
引用完整性就是定義外關鍵字與主關鍵字之間的引用規則。如果要刪除被引用的對象,那么也要刪除引用它的所有對象,或者把引用值設定為空(如果允許的話)。例如,前面的學生和班級關係中,刪除某個班級元組之前,必須先刪除相應的引用該班級的學生元組。這就是引用完整性。
圖3-1,綜合了三種關係數據的完整性。由圖中可以看到,實體完整性是對應元組或行而言域完整性是對應屬性或列而言,引用完整性是對不同表之間的屬性或列的引用關係而言。