mysql - 你会推荐什么版本控制设计模式

标签 mysql ruby-on-rails design-patterns

我需要在应用程序中构建“版本控制”,并且想知道如何最好地处理它。

我有这个一般模式:

模型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 有一些关于基于时间/版本控制的设计模式的好文章 - 绝对值得一看:

http://martinfowler.com/eaaDev/timeNarrative.html

关于mysql - 你会推荐什么版本控制设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/557570/

相关文章:

php - php中带有固定标签的简单搜索功能,用于mysql数据库

ruby-on-rails - 通配符路由的 Rspec 路由测试失败

html - 如何滚动父div中的subdivs

design-patterns - 图像编辑工具的高级设计模式

objective-c - 如何重用 UIView 和方法 - iOS 中的 DRY 代码

java - 构建器模式适用于哪里

mysql - 在一行中存储对多个表的引用的最佳方式?

python - 加快 MySQL 更新/插入语句

mysql - 为什么将数据存储在数据库的不同行上?

ruby-on-rails - 许多用户对模型 'owned' 的 Rails 关联