回答

收藏

在MySQL表中存储历史价格表的最佳方法是什么?

技术问答 技术问答 235 人阅读 | 0 人回复 | 2023-09-14

基本上,我的问题是-
) ?8 z: ?: q: G0 Y4 j9 a我有一个价格清单,其中一些是历史价格(即,我希望能够搜索到产品X在3月11日价格为0.99美元,在4月1日价格为1.99美元,等等)。存储此信息的最佳方法是什么?" M( l$ p, k; M- |' W" b0 H
我以为我可能会有一个产品表,该产品表具有一个价格表的外键。最初,我认为存储当前价格可能是最好的选择,但是我想我希望能够存储历史价格数据,所以最好的方法是存储一个类似于以下价格表的表:
0 w* w- d1 d0 L+ G' L4 x- lCREATE TABLE prices (
: C7 C  x% J3 P+ c         id BIGINT auto_increment not null,
, T, n  P$ @; L, w! S' W4 Z         primary key (id),
* r  \' Y, H1 `# V( d$ U5 ]) p! J         price DECIMAL(4,2) not null,$ v( F) p5 T' K2 T) \
         effectiveStartDate DATETIME NOT NULL,( m& I: G. n  o  Q: p% K# ^
         effectiveEndDate DATETIME
2 J  f# f1 h! _& I);6 j1 o( Z% r1 k  D; w2 {
我在这里有点茫然。我希望能够高效地搜索产品,并查看该产品的价格随时间变化的情况。如何有效地将一组这些价格与产品相关联?我想我要问的是,“为了对跨越特定日期集的查询提供有效的搜索,对它进行索引的最佳方法是什么?”
$ z& \; s7 q9 [- }                1 L7 g. t+ A( E2 I+ Q4 g
解决方案:3 J- ?9 [" Q& s; f9 P; R7 V
               
: l) U4 r; D; K4 v: ?9 y5 L4 M+ B3 h+ p' x9 |0 O# ~3 ^% {; c

6 t8 ~0 T! r0 [' Z                将历史数据的需求与当前价格的需求分开。这表示:
8 e, o3 o6 c- `7 o% J8 u( x7 C1)将当前价格保留在产品表中。: X& _! M6 z4 L4 [/ c
2)价格更改时,将仅包含开始日期的新价格插入历史记录表。您实际上不需要结束日期,因为您可以从上一行获取结束日期。(您仍然可以将其放入,这使查询更加容易)% R$ L- _( X* y* i7 }# X# v0 ^
还要记住,您的订单历史记录提供了另一种历史记录,即随着时间的推移以给定价格进行的实际购买。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则