如何在数据库中存储订单历史记录,尤其是旧的图片路径?

时间:2018-11-07 19:20:26

标签: database

enter image description here (表格:order_items)

我不确定这是否是在数据库中实现订单历史记录表的正确方法。通常,我正在尝试减少冗余。但是由于用户可以在其报价中更改数据,因此我需要保存订单的最低信息

目标:买方可以看到带有正确标题/图片/原始路径/过敏原(长话……)的旧订单

什么不利于我的方法?

唯一的“恐惧”是该表将充满大量冗余信息。

1 个答案:

答案 0 :(得分:1)

这开始只是一个评论,但是它太长了,所以...

您正在使用哪个数据库?

例如,

SQL Server在2016版本中引入了temporal tables的概念。基本上,您有两个结构相同的表,其中一个是主表,可以像使用普通表一样使用DML,另一个是存储历史数据的只读表-因此在主表中更新记录时在表中,实际发生的情况是该记录首先被复制到历史记录表中,然后再进行更新。

其他数据库中也可能存在类似的情况,如果您的数据库未提供现成的数据库,也可以使用触发器轻松手动实现。

当然,您可以使用一种称为“软删除”的技术,在该方法中,您可以将其标记为已删除,而不是实际删除数据,而无需使用更新的数据创建新记录并更改现有记录的状态为“不活动”。
这种方法相对于时态表的主要优点是您的实体仍然只有一个表,而不是两个;但是,另一方面,时态表的优点是活动数据与历史数据保存在单独的表中数据,因此活动数据存储在相对较小的表中,因此,所有CRUD操作都更加高效。

在当今时代,内存和存储如此便宜的时候,拥有一个table肿的桌子的“恐惧”对我来说似乎有点奇怪。