2011-01-25 74 views
3

所以,我有一个跟踪员工的Rails应用程序。我们希望随时跟踪就业历史。我们希望能够做到以下各种查询:他们目前的状态(工资,经理,职称等) Rails数据库记录设计(就业)历史

  • 搜索remployees的地位,作为一个特定日期
    1. 搜索员工
    2. 搜索的员工谁比得上的条件

    我们不介意的历史查询是显著慢,甚至可能2级慢几个数量级。

    此历史记录与审计线索不同 - 审计线索是数据的历史记录,因此审计线索会告诉您“Y日期的员工X存储了什么薪水”,但它不会让您纠正旧数据,如果它是错误的。

    [我们还利用用于审计的审计线索,但我认为对审核跟踪作为提供几乎正交设计要求的逻辑的。]

    是否有最好的实现这种类型的已知的数据库设计模式历史?或者我可以找到讨论各种“明显”设计和权衡的网站?任何Rails插件?

    Rails 2.3.5与Ruby 1.8.7,如果有关系。

    回答

    1

    我还没有使用它,但paper_trail声称支持这种类型的版本管理。它似乎很容易处理您的需求(1)和(2) - 不确定(3),您可能需要做一些繁重的工作才能获得同时在各个模型和版本中搜索的查询。

    这段历史是从审计跟踪

    这意味着你需要更改旧版本的能力不同 - 我怀疑是支持的,而且似乎有问题的实现,如果你还需要这起到审计线索的作用。

    +0

    是的,我不是在寻找一个审计线索(可以看作是系统中数据的叙述历史),而是一个追踪当前和过去“真实”值的工具。所以我想知道“2010年10月15日吉姆的薪水是多少?”不是,“2010年10月15日,Jim的薪水值存储在数据库中的价值是多少。”特别是,我希望能够导入,输入和更新过去时期的数据。 – 2011-01-31 16:14:13