外键可以引用多个表吗?

时间:2013-12-10 21:18:20

标签: sql foreign-keys

所以我在数据库设计方面做了一些练习,出现了一个问题,我无法弄清楚如何纠正。

我对此很陌生,所以我不是最好的,但现在就去了。

所以我想创建两个不同的表,一个叫做Team,另一个叫做Player。这些表格彼此差异很大。

然后我想要另一个名为Challenge的表,我想引用Team或Player。

基本上有竞赛,他们要么单独竞争,要么作为一个团队竞争。我想要一个外键来引用团队,如果是团队挑战,或者玩家是否是个人。

我无法合并这两个表,因为它们包含非常不同的元素。

我对如何做到这一点感到有些困惑。我可以只有一个外键,它将引用一个或另一个表。或者我应该有两个,一个为空。

或者我可以在团队和播放器中添加另一个ID密钥。然后在挑战中如果一个新的Type键表明它是一个组,它将引用Team,如果它的个体,它引用Player。

再次,这个很新,所以希望我有道理。

1 个答案:

答案 0 :(得分:2)

您可以在挑战中添加两列:PlayerID& TeamID,两者都可以为NULL。

PlayerID references Player.id
TeamID references Team.id
例如,挑战有一个玩家:

  PlayerID  = 14
  TeamID = NULL

请注意,引用的列(Player.id& Team.id)必须定义为NOT NULL,因为它们是从表挑战中引用的