【问题标题】:What is the best way to stock products with different purchase prices & expiration date?存储具有不同购买价格和有效期的产品的最佳方式是什么?
【发布时间】:2015-04-07 00:56:37
【问题描述】:

我正在使用 PHP、Mysql 开发一个库存盘点系统。该系统有购买模块来增加/更新/增加产品的数量和到期日期和销售模块来减少/减少产品的数量。

现在是什么让我感到困惑,而我真正的问题是

  • 假设我们的库存中有产品 A1,数量为 20,价格为 我们购买 PRODUCT A1 时的价格为 15 美元。
  • 现在我们想增加该产品的库存,例如我们想再购买 100 件 PRODUCT A1,但现在 PRODUCT A1 的新价格为 18 美元。

什么是最好的方式/逻辑将这些项目分开,以了解在销售页面上以 15 美元的价格和 18 美元的新价格购买了多少产品。

  1. 我是否必须在数据库中存储 2 个或更多数量列?

  2. 我是否必须在我的数据库中多次存储相同的产品?

目前我生成的平均值为 15 美元和 18 美元,然后添加此值 作为产品的购买价格。

【问题讨论】:

    标签: php algorithm logic inventory stock


    【解决方案1】:

    哦,亲爱的,您的问题表明您真的处于数据库设计的开始阶段。您是否应该在这么早的阶段解决如此复杂的问题?嗯,是的,为什么不...

    您的问题的答案是:1. 不! 2. 也许。

    第一个想法很愚蠢。想想看。如果您为一种产品获得三种不同的价格,那么您将需要三列,等等……这不是一个好主意。

    第二个选项似乎是一个不错的解决方案。您有一排 20 件商品的价格为 15 美元,另一排 100 件商品的价格为 18 美元。你可以用这个做大部分事情。平均价格?那么:(20*15 + 100*18)/(20 + 100)。简单。但它很快变得更加复杂。如果您向客户出售了 110 件商品怎么办?您将需要更改两行,但是如何更改?第一行 20 件,第二行 90 件?或者第二个的全部 100 个和第一个的 10 个。你不能忽视这个问题,你必须对如何做到这一点制定严格的规则。您会发现,添加到系统中的选项越多,复杂性就会不断增加。它会起作用,但它会不屈不挠。

    但是,您还没有提到第三个选项:在您的表中为库存中的每件商品指定其自己的行。这似乎是对数据库空间的浪费,但坚持下去,它确实简化了事情。平均价格?很简单,只需计算包含价格的列的平均价格。即使每件商品都有不同的价格,它也会同样复杂。从库存中取货的规则也很简单:只需使用 FIFO 或 FILO 系统。

    所以最后一个解决方案显然是要走的路。

    【讨论】:

      【解决方案2】:

      您能否只与另一张表建立“一对多”关系?您将拥有一张产品表(product_id、product_name 等)。然后是另一个表,比如 product_inventory (product_inventory_id, product_id(product.product_id 的外键), purchase_price (您购买它们的价格), quantity (该商品的购买价格的数量))。

      【讨论】:

      • 如何从销售的产品中删除数量?
      • 如果您正在跟踪您正在销售的定价产品,我想您可以从适当的子表中减去它。 --- 更新product_inventory 设置quantity = quantity -1 其中product_id =(您的产品ID)和purchase_price =(您支付的产品价格)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2012-10-28
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多