关系数据库 - 存储累积数据的最佳方式?
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_week
或 goals_this_game
会怎样?这仍然是最好的主意吗?有其他选择吗?
总结
- 我是否应该按照概述将与对象相关的历史数据存储在单独的 table 中?
- 我是否有
Player.goals_this_season
列是否应该取决于我打算如何使用数据库?或者它应该是 SeasonGoals
table 的一部分?
你应该做的是规范化数据。球员和进球是一对多的关系,所以归一化要求每个进球对应player_goals
table中的一行。为您的目标打上时间戳,然后使用分组查询(可能将结果缓存在摘要中 table )以获得每个时间段的目标,无论是天、月、年等。
我正在尝试找出跟踪随时间累积的数据的最佳方法。
假设我有每周都进球的运动员。我可以使用 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_week
或 goals_this_game
会怎样?这仍然是最好的主意吗?有其他选择吗?
总结
- 我是否应该按照概述将与对象相关的历史数据存储在单独的 table 中?
- 我是否有
Player.goals_this_season
列是否应该取决于我打算如何使用数据库?或者它应该是SeasonGoals
table 的一部分?
你应该做的是规范化数据。球员和进球是一对多的关系,所以归一化要求每个进球对应player_goals
table中的一行。为您的目标打上时间戳,然后使用分组查询(可能将结果缓存在摘要中 table )以获得每个时间段的目标,无论是天、月、年等。