【问题标题】:stock management database库存管理数据库
【发布时间】:2012-08-20 07:04:45
【问题描述】:

我正在开发一个库存管理应用程序,场景如下:

-用户输入购买的商品,包含以下信息(商品编号、购买数量、购买价格、最低价格、购买日期)

每次操作,用户输入售出的商品,并附上以下信息(商品编号、售出数量、最终成交价、交易日期),每次操作我都提醒用户最终成交价低于风的最低价格

每次操作,一次风我都记录了交易的收益(最终价格风-买入价)

问题是:你可以在不同的时间以不同的价格购买相同的产品,那么我们可以计算出共同利益,

例如如果我有以下情况

购买的商品(T 恤),10 件,20 英镑,23 英镑,2012 年 8 月 10 日购买的商品(T 恤),10 件,22 英镑,25 英镑,2012 年 8 月 19 日

在这种情况下,wind的操作我要怎么做才能以正确的购买价格收回物品并计算利润并将好的信息记录在销售表中?

【问题讨论】:

  • 只计算已售出的产品数量(在您的情况下是 T 恤)。价格不时变化。

标签: mysql database database-design stock


【解决方案1】:

在金融领域,总是(大部分情况下)使用 FIFO 规则来计算盈亏。

即:BUY 10 for $20, SELL 5 @ $22, BUY 5 for $21, SELL 10 @23,必须记为

BUY 10 for $20 date1
BUY 5 for $21 date3

分开

SELL 5 @ $22 date2
SELL 10 @ $23 date4

现在你要做的就是根据先进先出规则将它们配对,并将中间投资组合写入数据库:

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

操作一一:date1后我们以平均开盘价$20买入。从date1date2,我们卖出了一半的股票,获利5 * ($22 - $20 <- avg-open) = $10 并且该交易之后还剩下5 只证券,平均开盘价为20 美元。

date2date3,我们增持了 5 只证券,盈亏保持不变,但平均开盘价上涨至 20.50 美元(20 美元为 5 支,21 美元为 5 支)。

最后,您以10 * ($23 - $20.50) = $25 加上之前的 10 美元的利润率将它们全部出售,即为 35 美元。

总结起来,您可以记录单笔交易 (BUY/SELL),然后即时计算投资组合、平均开盘价和损益。

或者您可以将投资组合连同迄今为止的损益和逐步更新的平均开盘价一起存储。

我不建议同时执行这两种操作(调试目的除外),因为这可能会给您带来数据级别的不一致,这很糟糕。如果这样做,请选择其中一种表示作为主表示,并(重新)计算其他表示以防出现不一致。

只是一个建议。

【讨论】:

    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多