我正试图找出管理此数据存储问题的最佳方法....
我有一张球员,球队和比赛表。
一支球队可能会参与3场比赛。
球员属于球队,但可能只有资格参加他或她的球队参加的3场比赛中的2场比赛。同样,同一球队的其他球员可能有资格参加所有3场比赛。
我不希望为每个比赛添加一个列到播放器表,因为我正在离开关系模型。我需要另一张桌子'competition_eligiblity' - 这看起来好像很多工作!
有什么建议吗?
谢谢,
艾伦。
答案 0 :(得分: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查询的限制。
创建一个新表真的是一件微不足道的工作,你只需要做一次。如果你那样做,那之后的一切都会容易得多。