我有一张users
桌子。我想跟踪我所做的所有更改,姓名,电话等。我想创建一个额外的表changes
来存储用户的id
上一个和下一个版本。我保留所有users
记录。这是一个好方法吗?
我也想过使用单独的表来记录历史,见下文
或者,使用单个表并从timestamp
或跟踪其版本id
(因为它是增量),但我认为这是一个糟糕的解决方案。
您的设计有一个很大的缺点:仅获取当前值(您大部分时间都会使用该值)是一项昂贵的操作,需要连接。
users
如果您有一个包含当前数据的表和一个用于历史信息的额外表(由 的所有列和一个valid_until
时间戳列组成,并且主键位于 ( user_id
, valid_until
)上),那么您的系统会快得多。