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