jwi*_*ir3 5 mysql sql database data-modeling e-commerce
基本上,我的问题是 - 我有一个价格列表,其中一些是历史的(即我希望能够搜索产品X在3月11日为0.99美元,4月1日为1.99美元等).存储此信息的最佳方法是什么?
我假设我可能有一个Product表,它有一个价格表的外键.我最初认为存储当前价格可能是最好的选择,但我认为我希望能够存储历史价格数据,因此更好的路线是如何在价目表中存储如下表格:
CREATE TABLE prices (
id BIGINT auto_increment not null,
primary key (id),
price DECIMAL(4,2) not null,
effectiveStartDate DATETIME NOT NULL,
effectiveEndDate DATETIME
);
Run Code Online (Sandbox Code Playgroud)
我在这里有点不知所措.我希望能够有效地搜索产品,并了解该产品的价格如何随时间而变化.如何有效地将一组这些价格与产品相关联?我想我要问的是,'为了能够为跨越特定日期的查询提供有效搜索,最好的方法是将其编入索引?'
Ken*_*wns 10
将历史数据的需求与当前价格的需求分开.这意味着:
1)将当前价格保留在产品表中.
2)当价格变化时,将新价格插入历史表中,仅包含开始日期.您实际上并不需要结束日期,因为您可以从上一行获取结束日期.(你仍然可以把它放进去,它使查询更容易)
另请记住,您的订单历史记录提供了另一种历史记录,即实际购买的特定价格.
首先,确保你真的需要这样做.您是否在同一个数据库中存储订单?如果是这样,您可以随时通过检查订单中物品的价格来查看历史价格趋势.这样您还可以在价格变化和订购模式变化之间建立关联; 它不会解决的唯一情况是,如果价格变化导致没有下订单.
话虽这么说,如果你想要一个独立的价格变化记录,你所呈现的是好的.我唯一建议的是取消结束日期; 除非您计划在产品没有价格或重叠价格的情况下产生时间差,否则开始日期就足够了,这将使您的逻辑变得更容易.
| 归档时间: |
|
| 查看次数: |
6909 次 |
| 最近记录: |