在某个时刻存储模型关系

时间:2011-03-13 22:12:24

标签: ruby ruby-on-rails-3 model relational-database foreign-key-relationship

我正在开发一个应用程序,允许人们为特定作业请求保修。它们提供的信息包括使用的产品等等(他们的一些选择是从系统中已有的项目列表中提供的。然后我们根据这些选择为它们生成保修。

我正在努力将批准保修的概念作为该时刻的快照,当时它取决于可能随时间变化的相关记录。

我能想到的最简单的方法是不将关系存储到源表(例如product_id),而是将产品写成字符串。这看起来有点乱。另一种方法是不允许从产品表中删除/修改产品,除非没有附加保证。也许实现一个'replacement_with'列指向同一产品的编辑版本?我以前在购物车里做过这个,而且效果很好。我只是有很多关系需要管理,我想知道是否有一种我没想过的方式?

1 个答案:

答案 0 :(得分:0)

怎么样:

  1. 添加“产品已停产”表格,该表格为1:0且保修。只有列是保修ID。
  2. 添加具有以下内容的“历史产品表”

    与产品表相同的列

    填充日期/时间的附加时间戳字段。

    产品ID /时间戳的主键

    产品ID索引

  3. 删除/修改触发/程序:

    选择产品上的所有保修。

    如果有任何保修,则将产品详细信息复制到“历史产品表”,添加主键的第二部分。

    对于发现的每项保修,将记录插入“已停产的产品”表中。

  4. 这是基于您可能希望以不同于有效产品的保证处理已停产物品的保修。