数据库历史数据

时间:2013-05-20 15:18:13

标签: database database-design relational-database

如何跟踪数据库的历史记录?我几乎完全用于统计目的。例如,查询数据库以查找我们当前拥有的客户数量是很容易的,但如果我想比较上个月的客户数量与现在的客户数量比较,该怎么办?

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

我在想的是这样的事情:

id table_name column row_id value valid_from valid_to

如果插入数据时为valid_from,而valid_to将是数据库中无法再找到数据的日期。

因此,例如我有一个名为教师的表,具有列状态。在状态栏中,教师可以“申请”“雇用”“活动”等。从一个状态到另一个状态的更改将保存在上表中,其中列有效__保存教师停止状态为“应用“并为”雇用“创建一个新行。看起来查询该表以获取统计数据似乎相当容易。

但我真的不知道这是不是一个好的方式去做。这正是我提出的,可能是一种可怕的方式。任何帮助/建议将不胜感激!

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

1 个答案:

答案 0 :(得分:2)

这将做你想要的。

您可以通过关闭旧的id(将valid_to设置为日期)并使用相同的table_name,{{1}开始另一个来跟踪该字段的更新},column和新row_id

另一种方法是:

value

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