Rails设计用于数据库记录(就业)历史

时间:2011-01-25 19:06:59

标签: ruby-on-rails database-design

所以,我有一个跟踪员工的Rails应用程序。我们想跟踪一段时间内的就业历史。我们希望能够进行以下类型的查询:

  1. 按员工当前状态(薪水,经理,职称等)搜索员工
  2. 按特定日期的状态搜索失业者
  3. 搜索符合条件的员工
  4. 我们不介意历史查询明显较慢,甚至可能慢2个数量级。

    此历史记录与审计跟踪不同 - 审计跟踪是数据的历史记录,因此审计跟踪将告诉您“在日期Y为员工X存储的工资”,但它不会让您更正那些旧数据是否错误。

    [我们也使用审计跟踪进行审计,但我认为审计跟踪的逻辑提供了几乎正交的设计要求。]

    是否有一种已知的数据库设计模式可以最好地实现此类历史记录?或者我可以在哪里找到各种“明显”设计和权衡的讨论?任何Rails插件?

    使用Ruby 1.8.7的Rails 2.3.5,如果重要的话。

1 个答案:

答案 0 :(得分:1)

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

  

此历史记录与审计跟踪不同

意味着您需要能够对旧版本进行更改 - 我怀疑是否支持,如果您还需要将其作为审计跟踪,则实施起来似乎有问题。