【问题标题】:Database Historical Data数据库历史数据
【发布时间】:2013-05-20 23:36:14
【问题描述】:

我将如何跟踪数据库的历史记录?我几乎将它完全用于统计目的。例如,查询数据库以找出我们目前有多少客户很容易,但是如果我想比较我们上个月的客户数量和现在的客户数量呢?

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

我的想法是这样的:

id table_name column row_id value valid_from valid_to

valid_from 是插入数据的时间,valid_to 是数据无法在数据库中找到的日期。

例如,我有一个名为“教师”的表,其中包含一个列状态。在状态栏中,教师可能正在“申请”“已雇用”“活跃”等。从一种状态到另一种状态的更改将保存在上表中,列有效_以保存教师停止具有“状态”的日期申请”并为“已雇用”创建一个新行。查询该表以获取统计数据似乎相当容易。

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

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

【问题讨论】:

    标签: database database-design relational-database


    【解决方案1】:

    这会做你想做的。

    您可以通过关闭旧的id(将valid_to 设置为某个日期)并使用相同的table_namecolumnrow_id 开始另一个字段来跟踪该字段的更新,并且新的value

    另一种方法是:

    id entry_time table_name row_id column_name value
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2014-07-21
      相关资源
      最近更新 更多