Database-Design

外鍵和主外鍵有什麼區別?

  • April 7, 2019

我了解您使用外鍵將一個表中的行與另一個表相關聯,如果此外鍵也成為該表的主鍵,那麼它就是主外鍵。

但是,例如,如果酒店記錄了每個客戶的入住日期和時間,並且每個客戶都有一個客戶 ID,**我應該將客戶 ID 作為主外鍵還是僅包含外鍵?**因為一次可以有多個簽到所以日期和時間不足以作為主鍵?

我應該將客戶 ID 作為主外鍵還是僅作為外鍵?

它不能是“主外鍵”,因為 aPRIMARY KEY總是UNIQUE(and NOT NULL) 並且可能客戶可以再次簽到,可能在不同的日期或時間。

PRIMARY FOREIGN KEY在我看來,在您引用的表不是複合鍵的所有情況下, A都是一種反模式。這意味著存在嚴格的 0-1:1 關係,就像所有NULLABLE列一樣。而且在所有情況下,在大多數數據庫中,最好將此類關係放在原始表中的列中,並讓DEFAULT它們NULL.

CREATE TABLE foo ( a int, b int );

完全沒問題。如果b不存在或不適用,您可以將其設置為NULL(或讓它預設為)。

CREATE TABLE foo ( a int PRIMARY KEY );
CREATE TABLE bar ( a int PRIMARY KEY REFERENCES foo, b int );

有點傻。我唯一能看到這有意義的是這樣的,

CREATE TABLE foo (a int PRIMARY KEY);
CREATE TABLE bar (a int REFERENCES TABLE foo, b int, PRIMARY KEY (a,b) );

在上述情況下bar,有一個複合主鍵,它a是引用表的一個組成部分foo

引用自:https://dba.stackexchange.com/questions/234108