【发布时间】:2009-02-17 16:12:58
【问题描述】:
我需要将“版本控制”构建到应用程序中,并且想知道如何最好地处理它。
我有这个一般模式:
模型 A 有很多 B
更新时 A 的属性需要版本化,其关联对象 (B) 也需要版本化。因此应用程序将显示 A 的当前版本,但也必须可以查看 A 的以前版本及其关联对象。
我想使用文档存储,但这只是应用程序的一部分,拥有文档存储和关系数据库会引入更多复杂性。
我曾考虑过使用星型模式,但在我取得进展之前,我想知道是否有一种设计模式可以解决这个问题?
这个问题倾向于解决将关联对象的版本存储在关系数据库中的问题。在需要能够有效地查询数据的地方(即序列化对象是不够的)。
更新:我在想/已经实现但想看看是否是“更好的方法”
,---------. 1 * ,--------.
| Model A |----------| Model B|
`---------' `--------'
|PK | | a_id |
|b_version| |version |
|version | `--------'
`---------'
我将复制模型 A 和所有关联的 B 并增加版本属性。然后通过 b_version 和 b.version 选择加入 B。只是想知道这是否可以做得更好。
【问题讨论】:
标签: mysql ruby-on-rails design-patterns