小编Tom*_*ski的帖子

设计模式对许多实体的历史有益吗?

我的应用程序中有一些实体类.我想保存对此实体的所有更改以及历史表中发生的一些事件.问题是实体类是不同的,用不同的原语构建,它们之间有不同的关系.

例如,在购物应用程序中,可以有:用户,项目,交易,监视.我希望能够像这样向用户显示一些活动日志:

  • 16:00你在2468交易中买了"指环王",
  • 15:30您已将"Hobbit"添加到您的监视列表
  • 15:00观看物品的"Silmarillion"价格从15降至12,50欧元,
  • 14:30你把你的名字从"Tomasz"改为"Tom".

此日志涉及许多内容:

  • 带有项目"LotR"的新交易实体2468,
  • 新的Watch实体与项目"Hobbit"和我的帐户相关联,
  • 更新的物品价格(但存储了旧价格和新价格),
  • 更新的用户名(旧的和新的存储).

我的主要问题是如何跟踪这些数据?

  1. 我应该拥有与许多实体表一样多的表来保持其更改吗?UserVersions,ItemVersions等?
  2. 我应该查询所有版本表,加入并排序结果以生成此日志吗?
  3. 或者也许应该有一个表版本的列"实体","OldValue","NewValue" - 约束和外键怎么样?是不是太脏了解决方案?
  4. 这有设计模式吗?
  5. 最后如果你知道 - Facebook如何做到这一点?:)

design-patterns

12
推荐指数
1
解决办法
3720
查看次数

标签 统计

design-patterns ×1