2016-08-06 63 views
2

我正在嘗試創建在線航班預訂網站的數據庫結構。它只是我的一個項目。我想知道我可以使用一個外鍵作爲我的主鍵在桌子上。我可以在我的大多數表中使用我的外鍵作爲我的主鍵嗎?

這裏我有多麼表的一個樣子:

表名:Customer_Account 有:ACCOUNT_ID(PK),用戶名和密碼。

而我的其他表格是:Customer_Info 它有:Account_id,名字,姓氏和其他個人信息。

我記住的是,如果我在我的Customer_info 表上使用(Account_id)作爲我的主鍵,因爲它是一個引用Customer_Account的(Account_id)的外鍵,可以嗎?

如果這是可能的,那麼當它是我真正需要該表的ID時,是否將外鍵用作我的主鍵?

回答

1

您的問題解決了稱爲「共享主鍵」的技術,因此我將該標記添加到了您的問題中。

簡而言之,答案是肯定的。當您希望在兩個表之間強制執行一對一關係時,可以將外鍵作爲主鍵。在IS-A關係中常常出現這種情況,這是典型的類 - 子類(類型 - 子類型)情況。

通常情況下,您可以通過將兩個表合併爲一個表來獲得相同的結果。但有些情況下,子類數據如此不同以至於有兩個或更多表格更令人滿意。有關這種情況的討論,請參見「類表繼承」。

+0

我會查看更多的類表繼承以獲取更多信息。無論如何感謝您的答案。這對我幫助很大。 – TheAsker101

2

這是完全可以接受的,儘管我一定很想知道爲什麼你需要兩張桌子。如果每個(或甚至大多數)客戶都有附加信息,則更簡單的方法是隻需要customer_account表中的所有列。

+0

非常感謝! :) – TheAsker101

相關問題