存储序列

Storing a sequence

我正在寻找模拟以下需求的正确方法:

我有一个 Fantasy Football League 网站,其中有 16 支球队保持连续弃权令。赛季开始时球队顺序如下:1,2,3,4,5...14,15,16。如果第 3 队做出弃权动作,他们会排在队伍的后面:1,2,4,5..14,15,3.

这个顺序在整个赛季中不断变化。我一直将团队的弃权位置存储为团队中的一列 table。

'''id, teamName, waiverPos'''

问题是,当我 运行 一个影响弃权位置但随后需要回滚的更新时,我没有重建原始序列的历史记录。注意:这些更新并不总是我可以包装在数据库事务中的东西。他们有时出于非技术原因需要回滚。

所以问题是:这种序列的最佳存储模型是什么,以便我可以恢复以前状态的序列?

审计table

一个选项是审计 table,它将记录对团队的所有更改 table。当主要 table 值发生变化时,使用触发器插入审计数据。通过从审计 table.

复制旧值来回滚

滚动table

另一种选择是向团队 table(以及可选的状态列)添加增量 ID 或时间戳列,并且从不更新它,但总是插入描述当前情况的新行。 waiverPos 将不再是唯一的。通过删除最新的行回滚。

添加 1 个或多个包含先前值的列。回滚期间或之后,设置为需要的特定值。