0

我正在尝试找出管理此数据存储问题的最佳方法....

我有一张球员、球队和比赛的表格。

一个团队可能会参与 3 场比赛。

一名球员属于一个球队,但可能只有资格参加他或她的球队参加的 3 场比赛中的 2 场。同样,同一球队的另一名球员可能有资格参加所有 3 场比赛。

我不想在每次比赛的玩家表中添加一列,因为我正在远离关系模型。我需要另一张桌子“competition_eligiblity”吗?但这似乎需要做很多工作!

有什么建议么?

谢谢,

艾伦。

4

1 回答 1

0

是的,您确实需要一张参赛资格表。

把它放在那里真的没有更多的工作。实际上,它的工作量会更少:

  • 如果涉及在表中添加新列,那么将来添加新的竞争将是一件非常痛苦的事情。
  • 如果竞赛资格存储在列中,执行查询以获取有关资格的信息将成为一场噩梦。

假设您想列出玩家有资格参加的所有比赛。这是您的查询:

select player, "competition1" from players where competition1_eligible = 1
   union all
select player, "competition2" from players where competition2_eligible = 1
   union all
select player, "competition3" from players where competition3_eligible = 1
   union all
select player, "competition4" from players where competition4_eligible = 1

听起来很有趣,嗯?然而,如果您有资格表,则此信息将很容易获得。

更新:将所有资格信息存储在一个值中将更像是一场噩梦,因为想象一下试图从字符串中提取该信息。这超出了理智的 SQL 查询的限制。

创建一个新表实际上是一件微不足道的工作,您只需要做一次。如果你这样做,之后的一切都会容易得多。

于 2013-06-06T11:29:32.990 回答