2013-12-10 71 views
5

所以我在數據庫設計方面做了一些練習,出現了一個問題,我無法弄清楚如何糾正。外鍵可以引用多個表嗎?

我很新,所以我不是最好的,但它在這裏。

所以我想創建兩個不同的表,一個叫Team,一個叫Player。這些表格彼此非常不同。

然後我想要另一個表叫做挑戰,我想參考團隊或玩家。

基本上有競爭,他們要麼單獨競爭,要麼作爲一個團隊。我想要一個外鍵來引用Team,如果它是一個團隊的挑戰,或者是Player,如果它是個人的話。

我無法合併這兩個表格,因爲它們包含非常不同的元素。

我只是有點困惑,如何做到這一點。我可以只有一個外鍵,它會引用一個表或另一個表。或者我應該有兩個,一個空。

或者我可以在團隊和播放器中添加另一個ID密鑰。然後在Challenge中,如果一個新的Type鍵表示它的一個組,它將引用Team,如果它的個人,它引用Player。

再一次,在這個很新,所以希望我有道理。

+0

您不能將一列的外鍵鍵入兩個表中,否。 –

+1

一種解決方法是擁有一個競爭對手錶,該表對於團隊和玩家都有一排。所以現在你有一個競爭者的外鍵來挑戰,並且球隊和球員的外鍵都返回競爭者。可能不值得麻煩。 –

回答

2

您可以在挑戰中添加兩列:PlayerID & TeamID,它們都可以爲NULL。

PlayerID references Player.id 
TeamID references Team.id 

例如,挑戰玩家:

PlayerID = 14 
    TeamID = NULL 

注意,引用的列(Player.id & Team.id)必須定義爲NOT NULL,因爲它們是從表中引用的挑戰

相關問題