Php 存储';历史数据';进入拉威尔的数据库?

Php 存储';历史数据';进入拉威尔的数据库?,php,mysql,database,laravel,eloquent,Php,Mysql,Database,Laravel,Eloquent,我正在使用Laravel作为后端开发来创建一个电子商务移动应用程序 场景:我有一个产品表,其中存储了一些关于产品的信息。每当用户购买产品时,他都会得到一条购买历史记录(显示产品信息),该记录将存储到数据库中。因此,当卖家更新其产品信息时,用户的购买历史记录中的产品信息不会受到影响 问题:如果我只是简单地创建一个用户的购买历史记录表来存储每个用户的记录,我认为数据库中需要很多空间 问题:是否有更好的方法来存储购买历史记录?或者有没有办法在卖家更新或删除产品之前为记录创建类似“快照”的内容?嗯,这更

我正在使用Laravel作为后端开发来创建一个电子商务移动应用程序

场景:我有一个产品表,其中存储了一些关于产品的信息。每当用户购买产品时,他都会得到一条购买历史记录(显示产品信息),该记录将存储到数据库中。因此,当卖家更新其产品信息时,用户的购买历史记录中的产品信息不会受到影响

问题:如果我只是简单地创建一个用户的购买历史记录表来存储每个用户的记录,我认为数据库中需要很多空间


问题:是否有更好的方法来存储购买历史记录?或者有没有办法在卖家更新或删除产品之前为记录创建类似“快照”的内容?

嗯,这更像是一个基于意见的问题

我个人使用的方法也是您心目中的方法:将产品的相关数据存储在单独的表中。假设您有
用户
产品
订单
表。一个用户有很多订单,一个订单有很多产品。我使用一个传统的表
details
来存储与产品相关的信息(基本上是相关数据),因此,在原始产品发生变化的情况下,信息仍然是正确的。您还可以将此信息存储在购买历史记录的json列中

另一种方法是在更新产品对象时创建新的产品对象:

  • 产品A(
    id:1
    ):价格-10美元-2019年8月1日
  • 产品B(
    id:2
    ):价格-25美元-2019年8月1日
  • 产品A(
    id:3
    ):价格-$11-2019年8月5日(在产品价格“更新”后)

这样,如果有人在2019年8月2日购买了
产品a
,价格将为10美元,历史记录中的外键将指向
产品id=1
。当然,我不会使用这种方法,因为报告将更难处理。

谢谢。我刚刚发现了一个可修改的包调用,我认为它可以帮助我实现这个想法。