2012-12-24 45 views
2

有人可以告訴我是否可以將外鍵用作表中的主鍵?表中的列可以是主鍵還是外鍵?

例子是,我有一個PATIENTPATIENT_ID作爲主鍵,我也想有PATIENT_ID爲外鍵,並在同一時間,主鍵ASSESSMENT表(包含的生命體徵患者)。它是好的還是會產生問題?

+2

聽起來不錯。 – Chris

+0

沒關係:)。我認爲這裏沒有問題。 –

+2

如果您有1對1的關係,那麼應該考慮將這兩個表合併到一個表中。 – Martinsos

回答

4

只要您可以保持1對1的關係,就可以。 數據庫端沒有限制

1

是外鍵可以作爲表中的主鍵。

+0

你能給一些更多的解釋嗎? – slfan

1

它是好的還是會產生問題?

我會說沒關係。這產生的一個小問題可能是它讓你需要問這個問題。所以如果你真的想學更多的東西,你應該問自己爲什麼具體你不確定,這樣你才能真正學到東西。

+0

我的里程略有不同。就我而言,我很確定*爲什麼*我會想要它。我只是無法在DBMS文檔中找到明確的聲明,表明它會被接受。我想如果我在這裏(或某處)沒有找到書面答案,我最終只會試着看看會發生什麼。至少現在我會知道,如果它不起作用,這是一個產品問題,而不是概念問題。 – Hephaestus

+1

一張表的一個索引列(鍵)經常作爲另一張表的外鍵工作。由於主鍵也是識別欄,所以這實際上是該死的。 – hakre

+0

但@hakre,等待:如果表A具有主鍵A_id,並且表B僅僅將A_id引用爲外鍵,那只是日常的情況 - 我認爲您的意見正在解決。 OP和我要做的是「借用」A_id的某些值,並將它們用作B的主鍵B_id的值。在這種情況下,B_id將是_both_ B的主鍵和一個引用A_id的外鍵 - 這有點更具異國情調。 (但是我承認我對你的短語「外鍵*到另一個表」感到困惑:哪個方向是你的「一張桌子」和你的「另一張桌子」之間的引用關係?) – Hephaestus

1

這被稱爲一對一關係。

它是好的還是會產生問題?

只要您有充分的理由將數據保存到兩個表中,就可以。

0

外鍵的先決條件是作爲外鍵的列需要是兩個表中的鍵。所以從這個角度來看,你是完全安全的。可能會引發的唯一問題是應用程序未來的發展,當您需要在兩個表之間建立一對多關係時,在這種情況下,使用這種方法是相當糟糕的。稍後在數據庫級別上改變這種行爲並不會很難,但在應用程序級別上它可能證明是相當棘手的。

老實說,我非常懷疑你需要在兩張表之間實際使用一個外鍵,因爲id總是相同的,而這種打破了外鍵的目的。而且,大多數主鍵通常是自動遞增的,這對您而言並非如此,這可能會導致未來開發中的其他問題。

相關問題