电子商务数据库设计,在不影响历史数据的情况下保存产品信息

时间:2019-04-03 05:47:53

标签: php mysql database database-design relational-database

设计一种电子商务数据库的最佳实用方法是,如果没有,那么在更新商品信息时不应更新客户购买的商品的商品信息?

为了更好地理解,这里是一个场景:

  1. 商人创建了价格为50美元的“产品A”。
  2. 客户看到并购买了产品A。
  3. 客户访问了交易记录并查看了他最近的购买交易:价格为$ 50的产品A
  4. 一个月后,商家将产品A的价格更新为$ 80。
  5. 客户再次查看了他的交易记录。他与产品A的交易应保留为$ 50,而不是$ 80的更新价格,因为这是他当时支付的价格。

我正在研究的一种解决方案是将整个产品信息作为PHP序列化数据保存在表中,作为“ purchases.product_information”中的数据。

将PHP序列化数据存储在列中甚至是个好主意吗?如果用户想在产品信息中搜索价格,商品名称等文字,效果如何?

还有其他解决方法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这是尺寸变化缓慢的情况(https://en.wikipedia.org/wiki/Slowly_changing_dimension

一个简单的解决方案是拥有一个单独的表purchase_items,并使所有列随时间变化(例如价格,折扣等)(例如:价格,折扣等),而purchase和purchase_items表将具有one_to_many关系

尽管如此,在更复杂的情况下,产品的价格会根据一天中的订购时间等即时变化。在这种情况下,价格可能无法与产品本身相对应存储< / p>

此答案恰好解决了问题,您可能会发现这很有帮助 https://dba.stackexchange.com/questions/57992/ecommerce-orders-table-save-prices-or-use-an-audit-history-table