关系数据库 - 存储累积数据的最佳方式?

Relational Databases - Best Way to Store Accumulating Data?

我正在尝试找出跟踪随时间累积的数据的最佳方法。

假设我有每周都进球的运动员。我可以使用 goals 列来存储玩家的进球数并在需要时更新此值:

Player
    id
    name 
    goals

看起来不错,但是,我正在考虑在赛季结束时做什么。我可以继续数数,也可以决定我真正感兴趣的是玩家的 goals_this_season.

我不想忘记那个辉煌的赛季,我最好再创造一个table来记录过去赛季的进球吗?

因此,我是否应该完全删除播放器 table 中的 goals_this_season 列?还是应该根据我的业务逻辑来决定这个决定? IE。如果我对 goals_this_season 更感兴趣,它是否应该保留为玩家 table 的一部分,这样我就不需要在每次想要玩家的 [=] 时访问两个 table 13=]?

SeasonGoals
    id
    season_year 
    player_id == Player.id
    goals

如果我缩放到 goals_this_weekgoals_this_game 会怎样?这仍然是最好的主意吗?有其他选择吗?

总结

你应该做的是规范化数据。球员和进球是一对多的关系,所以归一化要求每个进球对应player_goalstable中的一行。为您的目标打上时间戳,然后使用分组查询(可能将结果缓存在摘要中 table )以获得每个时间段的目标,无论是天、月、年等。