我正在使用 PHP、Mysql 开发库存系统。该系统有购买模块来添加/更新/增加产品的数量和到期日期,以及销售模块来减少/减少产品的数量。
现在让我感到困惑的是什么,我真正的问题是
- 假设我们的库存中有产品 A1,数量为 20,价格为 我们购买产品 A1 时的价格是 15 美元。
- 现在我们想要增加此产品的库存,例如,我们想再购买 100 件产品 A1,但现在产品 A1 的新价格是 18 美元。
将这些项目分开的最佳方法/逻辑是什么,以了解在销售页面上以 15 美元的价格和 18 美元的新价格购买了多少产品。
我是否必须在数据库中存储 2 个或更多数量列?
我是否应该在我的数据库中多次存储相同的产品?
Currently I'm generating average of $15 and $18 then adding this value as purchase price of product.
最佳答案
哦,亲爱的,你的问题表明你真的处于数据库设计的开始阶段。您应该在这么早的阶段解决如此复杂的问题吗?嗯,是的,为什么不...
您问题的答案是:1. 不!!! 2. 也许吧。
第一个想法很愚蠢。想想看。如果您获得一种产品的三种不同价格,那么您将需要三列,依此类推……这不是一个好主意。
第二个选项似乎是一个不错的解决方案。您有一排 20 件商品,价格为 15 美元,另一排 100 件商品,价格为 18 美元。你可以用这个做大部分事情。平均价格?那么:(20*15 + 100*18)/(20 + 100)。简单的。但它很快变得更加复杂。如果您向客户出售 110 件商品怎么办?您将需要更改两行,但是如何更改?第一行 20 项,第二行 90 项?或者从第二个开始全部 100 个,从第一个开始全部 10 个。你不能忽视这个问题,你必须就如何做到这一点制定严格的规则。而且您会发现,随着您添加到系统中的选项越来越多,复杂性会不断增加。它会起作用,但它会不屈不挠。
然而,您还没有提到第三个选项:在您的表中为每件库存商品单独占一行。这似乎是对数据库空间的浪费,但坚持下去,它确实简化了事情。平均价格?很简单,只需计算包含价格的列的平均价格。即使每件商品都有不同的价格,它也会同样复杂。从库存中提取元素的规则也很简单:只需使用 FIFO 或 FILO 系统。
所以最后一个解决方案显然是可行的方法。
关于php - 购买具有不同购买价格和到期日期的产品的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373292/