2013-05-20 206 views
2

我将如何去跟踪数据库的历史?我将几乎完全用于统计目的。例如,查询数据库很容易找出我们目前有多少客户端,但如果我想比较我们上个月有多少客户端与现在有多少客户端相比,该怎么办?数据库历史数据

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

什么我想到的是这样的:

id table_name column row_id value valid_from valid_to 

在当插入数据和失效日期将是数据再也无法在数据库中找到的日期VALID_FROM会。

因此,例如我有一个名为老师列表状态的表。在状态栏中,教师可以“应用”,“雇用”,“主动”等。从上述表格中将valid_to保存在上表中,保存教师停止状态为“申请“,并为”雇用“创建一个新行。对于统计数据来说,查询该表似乎相当容易。

但是我真的不知道这是否是一种好方法。这正是我想出来的,并且可能是一种可怕的方式来做到这一点。任何帮助/建议,将不胜感激!

如果它很重要,我使用MySQL和CakePHP。

回答

2

这将做你想要的。

您可以通过关闭淘汰旧id(设置valid_to为日期),并开始另一个具有相同table_namecolumnrow_id和新value跟踪更新的那场。

另一种方式来做到这一点是这样的:

id entry_time table_name row_id column_name value 

特定table_namerow_idcolumn_name第一个记录是记录的创建。后续记录可以是更新(非空value)或删除(空value)。