我在mysql中做一个非常简单的数据库来跟踪项目的移动。目前的纸质表格如下:
Date totalFromPreviousDay NewToday LeftToday RemainAtEndOfDay
1.1.2017 5 5 2 8 (5+5-2)
2.1.2017 8 3 0 11 ( 8+ 3 -0)
3.1.2017 11 0 5 6 (11+0-5)
等等。在我的表中,我想制作totalFromPreviousDay和RemainAtEndOfDay计算字段,我只在前端显示。这主要是由于错误我们倾向于在纸上擦除。我希望根据对其他两个字段的更改来反映它们。就这样,我这样做了我的桌子:
id
date
NewToday
LeftToday
现在我面临的问题是,我想选择任何日期,并且能够说“当天开始时或前一天有5件物品,然后添加5件,剩下0件,当天结束10项“
到目前为止,我无法想到一种方法。从理论上讲,我想尝试这样的事情:如果请求的日期是2017年2月1日,那么从我们开始收集数据的那天开始0 cos。如果没有,则通过0处的记录循环并进行数学运算,直到找到所请求的日期。
但这显然是低效的,因为我必须从第一个日期开始,直到最后一次。
我的方法是否正常,或者我应该在表格中包含列?如果是第一个,那么在python / mysql中做什么呢?
答案 0 :(得分:0)
我认为你必须先退一步,先确定业务需求(之前有人说过,之前曾与股票合作过),因为这些决定了你的表结构。
系统始终跟踪当前的库存水平和变动。商业决策保存历史库存水平的频率,这会影响您存储数据的方式。
您可以将当前库存水平与所有交易一起保存。在这种情况下,您可以将库存水平存储在交易表中。您甚至不必每天总结一笔交易,因为每天的最后一笔交易无论如何都会有每日结算库存水平。
您可以选择定期保存历史库存水平(每日/每周/每月等)。在这种情况下,您将拥有一个单独的历史库存水平表,其中包含库存ID,库存名称(名称可能随时间变化,因此可能是保存它的好主意),日期和级别。如果您想知道保存点之间任何时间点的历史库存水平,那么您需要在您查找的期间之前获取最新保存的库存水平,并将所有交易总结为保存期。