Ade*_*ene 5 mysql database database-design stock
我正在开发库存管理应用程序以下是方案:
- 用户使用以下信息输入购买的商品(商品的ID,购买的数量,购买价格,风的最低价格,购买日期)
每个操作,用户输入出售的物品,其中包含以下信息(物品的ID,销售数量,风的最终价格,交易日期)以及如果最终价格风小于风的最低价格
每次操作,我都记录了交易的好处(最终价格风 - 购买价格)
问题是:您可以在不同的时间以不同的价格购买相同的产品,然后我们可以计算出共同的利益,
例如,如果我有以下情况
购买的商品(T恤),10英镑,20英镑,23英镑,10/08/2012购买商品(T恤),10英镑,22英镑,25英镑,19/08/2012
在这种情况下,风的操作我要做的是用正确的购买价格来回收物品并计算利润并在销售表中记录好的信息?
在财务方面,利用FIFO规则总是(大部分)计算利润/损失.
那就是:20美元买入10美元,买入5美元买入22美元买入5美元买入21美元卖出10美元买入必须记录为
BUY 10 for $20 date1
BUY 5 for $21 date3
Run Code Online (Sandbox Code Playgroud)
并分开
SELL 5 @ $22 date2
SELL 10 @ $23 date4
Run Code Online (Sandbox Code Playgroud)
现在你需要做的是根据FIFO规则配对这些并将中间组合写入数据库:
portfolios AFTER date
date1 10 profit/loss $0 avg-open $20
date2 5 profit/loss +$10 avg-open $20
date3 10 protit/loss +$10 avg-open $20.50
date4 0 profit/loss +$35 avg-open $0
Run Code Online (Sandbox Code Playgroud)
操作一个接一个:date1
我们以20美元的平均开放价格购买.从date1
到date2
,我们卖一半的股票,使得利润5 * ($22 - $20 <- avg-open) = $10
和之后该交易还有留下一个平均开盘价$ 20还是5证券.
从date2
到date3
我们5个证券上股价上涨,利润/损失保持不变,但平均开市价上升到$ 20.50(5 $ 20±5 21 $).
最后,你卖掉它们所有的利润10 * ($23 - $20.50) = $25
加上之前的10美元,这给你35美元.
总而言之,您可以记录单笔交易(BUY
/ SELL
),然后计算投资组合,平均开放价格和即时盈利/亏损.
或者您可以存储投资组合以及迄今为止的盈利/亏损以及逐步更新的平均开放价格.
我不建议同时执行这两项操作(除了调试目的),因为这可能会使您在数据级别上出现不一致,这是令人讨厌的.如果这样做,请选择其中一个表示为主,并(重新)计算另一个表示不一致的情况.
只是一个建议.