我需要在应用程序中构建“版本控制”,并且想知道如何最好地处理它。
我有这个一般模式:
模型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。只是想知道是否可以做得更好。
最佳答案
Martin Fowler 有一些关于基于时间/版本控制的设计模式的好文章 - 绝对值得一看:
关于mysql - 你会推荐什么版本控制设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/557570/