为了简化一些...我想要了解用户EAV数据的历史,特别是指向地址的地方,但是消除冗余似乎很棘手。我应该如何在数据库中存储EAV地址历史记录?
地址有自己的表。
除了用户表和其他实体表中的标准数据外,用户还有一些奇怪的数据。我打算将这些奇怪的用户数据放在EAV表中。这个用户的EAV数据还可以包含多个指向存储在地址表中的地址的条目。
我想记录更改的历史记录。
因此,当用户地址的变化,它看起来需要做的是:
- 一个新的地址添加到地址表中。
- 旧的EAV条目现在不是指向旧地址行而是更新为指向地址表中的新行。
- 换到EAV行被写入到一个EAV历史记录表(将使用触发器)
说实话这似乎并不像很多工作,但:
- 如若老地址表中的条目永远以只读方式坐在那里? (好的,所以我的猜测是肯定的,清除旧的记录是一个仓库的考虑因素,但它似乎是如此... icky)。
- 我该如何至少重用这些地址条目? (或许通过提供基于新的用户输入匹配现有条目)
这一切似乎都那么不洁净的,并不仅仅是EAV)
是的。 EAV几乎是最糟糕的结构,可以用作地址的理解。 –
对不起,也许有一点误解(我已经调整了我的问题,使其更加明确)。地址已经坐在桌子上了。但该地址实例是一种奇怪的数据(可选且较少见),因此它的引用存储在EAV表中。 like: - > - > –
对不起,我一开始并没有跟着你。如果您的EAV数据与客户有关,并且属于该客户的地址,那么您可能会或可能不会走上正确的轨道。这取决于EAV数据以何种方式取决于地址。它是一个很难依赖的软件吗?它是指“客户的帐单地址”还是指“我们发送该帐单的实际地点” - 如果您关注我。真正的“icky”部分将清除旧数据。如果你试图保持参照完整性,这会变得非常难看。否则,你可能是在正确的轨道上。 –