2012-11-22 62 views
3

我有一個簡單的數據庫,我正在兩個表之間建立關係。所以我有這個第三張表,他們被鏈接。第三個表是否需要主鍵?因爲我所需要的只是將兩個表連接在一起,另外還有一個額外的列。你可以有2個外鍵,沒有主鍵?

+0

你必須有一個主鍵,但是這兩個外鍵可以形成一個複合主鍵。 –

+0

你通常不需要「必須有主鍵」 - 但你應該有一個! (@Luben Todorov) – DRobinson

+0

我不同意,事實上這是一個很可愛的論點。 @DRobinson [是的,我們必須有主鍵](http://stackoverflow.com/questions/840162/should-each-and-every-table-have-a-primary-key),除非我們屬於這些特殊情況下。 –

回答

3

那種你所描述的表有時稱爲join table。您將在您加入的列中創建一個主鍵,這既是爲了獲得唯一性,又因爲它更有可能被索引以獲得更好的性能。

+0

這兩個外鍵是唯一的 – Tom

+0

當然外鍵是單獨唯一的(因爲它們應該是它們各自表中的主鍵),但是跨兩列的唯一性約束意味着你沒有重複的行在你的連接表中。 –

+0

這張桌子加入了說讓火車路線,與運行它們的公司。這個表格假設顯示每家公司的比例以及他們運行多少列車。例如路線A - 由compaby X運行,運行50%的列車。如果你看看這裏是關係http://stackoverflow.com/questions/13500200/creating-relational-database – Tom

3

你所描述的是一個連接表。 是的,你可以做一個沒有主鍵(或者,另一個選項是一個複合主鍵 - 使兩個參考一個獨特的對,並使用它作爲唯一的識別鍵 - 但即使這不是必要的(注意:只是因爲它「沒有必要」並不意味着它不是「良好的實踐」;它通常不是一個好主意,有幾行具有完全相同的內容))。

使用這些條款,您應該能夠找到實施所需的答案。