Database 数据库历史数据

Database 数据库历史数据,database,database-design,relational-database,Database,Database Design,Relational Database,我如何跟踪数据库的历史记录?我几乎完全是为了统计的目的。例如,查询数据库以了解我们目前有多少客户非常容易,但是如果我想比较上个月有多少客户与现在有多少客户,该怎么办 我想我需要另一个表来跟踪这些信息,我想知道是否有一些标准的方法来做到这一点 我想的是这样的: id table_name column row_id value valid_from valid_to 其中valid_from是插入数据的时间,valid_to是在数据库中找不到数据的日期 例如,我有一个名为teachers的表,它

我如何跟踪数据库的历史记录?我几乎完全是为了统计的目的。例如,查询数据库以了解我们目前有多少客户非常容易,但是如果我想比较上个月有多少客户与现在有多少客户,该怎么办

我想我需要另一个表来跟踪这些信息,我想知道是否有一些标准的方法来做到这一点

我想的是这样的:

id table_name column row_id value valid_from valid_to
其中valid_from是插入数据的时间,valid_to是在数据库中找不到数据的日期

例如,我有一个名为teachers的表,它有一个列status。在“状态”列中,教师可能正在“申请”“雇佣”“活动”等。从一种状态到另一种状态的更改将保存在上表的“有效”列中,以保存教师停止“申请”状态的日期,并为“雇佣”创建新行。查询该表的统计数据似乎相当容易

但我真的不知道这是不是一个好办法。这正是我想到的,可能是一种可怕的方式。如有任何帮助/建议,将不胜感激


如果有关系的话,我正在使用MySQL和CakePHP

你想怎么做就怎么做

您可以通过关闭旧的
id
(将
valid\u设置为一个日期)并使用相同的
表名
行id
以及新的
来跟踪该字段的更新

另一种方法是:

id entry_time table_name row_id column_name value
特定
表名
行id
列名
的第一条记录是该记录的创建。后续记录可以是更新(非空
)或删除(空