我正在开发一个类型Symfony3 /学说网上商店的。为了简化事情,假设我有一个表Repairs
和一个Parts
。零件有名称和价格,维修可以使用很多零件,以及各种零件可用于各种修理(多对多)。维修的价格是部件价格和其他一些因素的总和。学说:跟踪缓慢变化维的历史
渐变维度
现在,应该是可以改变一个Part
的价格,这应该改变未来Repairs
的价格。但是,数据库中已存在的任何Repairs
都不应更改,因为它们用于记帐,开具发票等。
“软更新”
删除Part
容易与SoftDeleteable解决。这保持了Parts
和Repairs
之间的完整关系。类似的事情应该发生更新实体。只有在某些重要(如价格)变化的情况下,实体才应在数据库中更新。但是,似乎没有现成的代码。
我已经试过如下:
- 简单地删除旧的实体,在每次更新,这是代码密集,效率低下,留下大量的垃圾在数据库中存储的副本。
- Versionable,但这并不就多到许多实体
- Loggable工作,但这个写在一个单独的日志表中的变化,而不是在表格中我使用
- EntityAudit,但是这也没有按不做我想要的,不能用于多对多的人。
以不同的方式解决问题?
我已经asked用我的技术解决方案before帮助,但因为我相信这个问题是常见的一种,我开始认为,缺乏直接的,现成的解决方案,意味着我以错误的方式接近问题。也许我应该简单地保留一个静态表来存储静态值(但这不允许在保持价格的同时更改某个修复的名称)?要么?