我有一个表格,可以按每件单品跟踪库存数据。这是表格的简化版本(排除了一些非关键字段):
UniqueID,
ProductSKU,
SerialNumber,
OnHandStatus,
Cost,
DateTimeStamp
每次给定部分发生问题时,都会创建一个新的审计记录。例如,我的产品 ABC 第一次添加到库存时,我会得到如下记录:
1, ABC, 555, OnHand, $500, 01/01/2009 @ 02:05:22
如果 ABC 序列号 555 的成本发生变化,我得到一个新记录:
2, ABC, 555, OnHand, $600, 01/02/2009 @ 04:25:11
如果这件作品被售出,我会得到另一张唱片:
3, ABC, 555, Sold, $600, 02/01/2009 @ 5:55:55
如果引入一条新的 ABC,我得到这个记录:
4, ABC, 888, OnHand, $600, 02/05/2009 @ 9:01:01
我需要能够在任何时间点尽可能快地获得一组给定产品的现有库存价值。
使用上面的示例,如果我想获取 2009 年 1 月 2 日的产品 ABC 的库存值,我需要为每个唯一的产品/序列号组合选择01/03/之前的最新记录2009 年,状态为“OnHand”,然后将费用加起来。(我不能 100% 确定这个 select 语句在这一点上会是什么样子,但我会做一些实验)。
我的问题:对于我所描述的审计表类型,这是一个好的结构吗?也就是说,如果索引得当,它是否适合快速查询?(我试图想象当这张表增长到数百万行时会发生什么。)
我是否应该将历史记录拆分到一个单独的表中,并且只将每个 ProductID/SerialNumber 组合的最新记录留在“活动”表中?
任何反馈/建议/评论/链接表示赞赏。
谢谢!