鍵是dbms的關鍵部分,它們用于標識和建立模式中表之間的關系。下面本篇文章就來帶大家認識一下dbms的兩個非常重要的鍵,即主鍵和外鍵;介紹主鍵和外鍵之間的區(qū)別,希望對大家有所幫助。
DBMS中的主鍵
主鍵可以唯一地定義關系中的元組。它可以是關系中的單個屬性,也可以是關系中的一組屬性。主鍵屬性的值不應更改或很少更改。因為它是主體,所以意味著標識數據庫中的任何記錄;主鍵的任何屬性值的更改都會造成混亂。【視頻教程推薦:MySQL教程】
任何關系只能有一個主鍵。主鍵默認為cluster-indexed,這意味著表中的所有元組都根據主鍵屬性值進行排序。可以在臨時表上定義主鍵約束。在執(zhí)行查詢期間創(chuàng)建的中間表稱為臨時表。
DBMS中的外鍵
外鍵是引用另一個關系的主鍵的鍵;當其屬性中的關系R1具有其他關系R2的主鍵時,則該屬性被稱為關系R1的外鍵。包含外鍵的關系R1稱為引用關系,因為它引用關系R2的主鍵,而關系R2稱為引用關系。?
與主鍵不同,外鍵可以接受NULL值,因為它沒有在關系中明確標識記錄的任務;同樣,外鍵也接受重復值。
關系可以有多個外鍵,因為它可以具有不同的屬性,這些屬性是不同關系中的主鍵。無法在臨時表上定義外鍵約束,外鍵也不是集群索引屬性。
主鍵和外鍵之間的主要區(qū)別
1、本質上不同
主鍵是選擇的候選鍵,它唯一地定義關系中的元組; 表中的外鍵是指其他表的主鍵。
2、NULL值
主鍵值永遠不能為NULL;外鍵接受NULL值。
3、重復值
主鍵關系中沒有兩個元組攜帶主鍵屬性的重復值。外鍵中元組可以為外鍵屬性攜帶重復值。
4、范圍
關系只能有一個主鍵。關系中可以有多個外鍵。
5、臨時表
主鍵可以在臨時表上定義主鍵約束。外鍵無法在臨時表上定義外鍵約束。
6、聚集索引
默認情況下,主鍵是聚簇索引的。外鍵不能自動聚集索引,它必須手動完成。
7、插入
在主鍵中,我們可以向主鍵屬性插入一個值,即使引用外鍵在其列中沒有該值也是如此。
在外鍵中,如果引用的主鍵列中不存在該值,則無法將值插入外鍵。
8、刪除
在刪除主鍵值之前,請確保該引用表的引用外鍵列中仍不存在該值。我們可以從外鍵列中刪除值而不必擔心,該值是否存在于引用關系的引用主鍵列中。