我的应用程序中有一些实体类.我想保存对此实体的所有更改以及历史表中发生的一些事件.问题是实体类是不同的,用不同的原语构建,它们之间有不同的关系.
例如,在购物应用程序中,可以有:用户,项目,交易,监视.我希望能够像这样向用户显示一些活动日志:
- 16:00你在2468交易中买了"指环王",
- 15:30您已将"Hobbit"添加到您的监视列表
- 15:00观看物品的"Silmarillion"价格从15降至12,50欧元,
- 14:30你把你的名字从"Tomasz"改为"Tom".
此日志涉及许多内容:
- 带有项目"LotR"的新交易实体2468,
- 新的Watch实体与项目"Hobbit"和我的帐户相关联,
- 更新的物品价格(但存储了旧价格和新价格),
- 更新的用户名(旧的和新的存储).
我的主要问题是如何跟踪这些数据?
- 我应该拥有与许多实体表一样多的表来保持其更改吗?UserVersions,ItemVersions等?
- 我应该查询所有版本表,加入并排序结果以生成此日志吗?
- 或者也许应该有一个表版本的列"实体","OldValue","NewValue" - 约束和外键怎么样?是不是太脏了解决方案?
- 这有设计模式吗?
- 最后如果你知道 - Facebook如何做到这一点?:)