所以我在数据库设计方面做了一些练习,出现了一个问题,我无法弄清楚如何纠正。
我对此很陌生,所以我不是最好的,但现在就去了。
所以我想创建两个不同的表,一个叫做Team,另一个叫做Player。这些表格彼此差异很大。
然后我想要另一个名为Challenge的表,我想引用Team或Player。
基本上有竞赛,他们要么单独竞争,要么作为一个团队竞争。我想要一个外键来引用团队,如果是团队挑战,或者玩家是否是个人。
我无法合并这两个表,因为它们包含非常不同的元素。
我对如何做到这一点感到有些困惑。我可以只有一个外键,它将引用一个或另一个表。或者我应该有两个,一个为空。
或者我可以在团队和播放器中添加另一个ID密钥。然后在挑战中如果一个新的Type键表明它是一个组,它将引用Team,如果它的个体,它引用Player。
再次,这个很新,所以希望我有道理。
答案 0 :(得分:2)
您可以在挑战中添加两列:PlayerID& TeamID,两者都可以为NULL。
PlayerID references Player.id
TeamID references Team.id
例如,挑战有一个玩家:
PlayerID = 14
TeamID = NULL
请注意,引用的列(Player.id& Team.id)必须定义为NOT NULL,因为它们是从表挑战中引用的