我正在试图找出跟踪随时间累积的数据的最佳方法。
说我有运动员每周都有进球。我可以使用goals
列来存储玩家的目标数,并在需要时更新此值:
Player
id
name
goals
看起来工作正常,但是,我正在考虑在赛季结束时做些什么。我可以继续计算,或者我可以决定我真正感兴趣的是玩家goals_this_season
。
我不想忘记这个辉煌的赛季,我最好还是创造另一张桌来纪录过去几个赛季的目标吗?
因此,我是否应该完全摆脱我的玩家表中的goals_this_season
列?或者这个决定应该取决于我的业务逻辑?即。如果我对goals_this_season
更感兴趣,它是否仍然是玩家表的一部分,这样我每次想要玩家goals_this_season
时都不需要访问两个表?
SeasonGoals
id
season_year
player_id == Player.id
goals
如果我缩放到goals_this_week
或goals_this_game
怎么办?这仍然是最好的主意吗?还有其他选择吗?
Player.goals_this_season
列?或者它应该是SeasonGoals
表的一部分吗?答案 0 :(得分:2)
您应该做的是规范化数据。玩家和目标之间存在一对多关系,因此规范化要求每个目标应对应player_goals
表中的一行。为您的目标添加时间戳,然后使用分组查询(可能在结果表中缓存结果)来获取每个时间段的目标,无论是天,月,年等。