我正在使用PHP,Mysql开发库存盘点系统。该系统具有购买模块,用于添加/更新/增加产品的数量和到期日期。销售模块减少/减少产品数量。
现在是什么给我造成了困惑,我真正的问题是
将这些商品分开以了解购买多少产品的最佳方法/逻辑是什么,价格为15美元,新价格为18美元。
我是否必须在数据库中存储2个或更多数量的列?
我是否必须在数据库中存储多次相同的产品?
目前,我平均需要15美元和18美元才能添加此值 作为产品的购买价格。
答案 0 :(得分:1)
你能不能做一对多的'与另一张桌子的关系?您有一个产品表(product_id,product_name等)。然后是另一个表,例如product_inventory(product_inventory_id,product_id(product.product_id的外键),purchase_price(您为其购买的价格),数量(购买价格中该项目的数量))。
答案 1 :(得分:1)
哦,亲爱的,您的问题表明您确实处于数据库设计的开始阶段。你应该在这么早的阶段解决这种复杂性的问题吗?嗯,是的,为什么不......
您的问题的答案是:1。不!也许吧。
第一个想法只是愚蠢。想一想。如果您为产品获得三种不同的价格,那么您需要三列,等等......这不是一个好主意。
第二种选择似乎是一个很好的解决方案。你有一排20件物品,15美元,另一排100件,18美元。你可以用这个做大部分事情。平均价格?好吧:(20 * 15 + 100 * 18)/(20 + 100)。简单。但它很快变得更加复杂。如果您向客户出售了110件商品怎么办?你需要改变两行,但是如何?第一排20件,第二排90件?或者从第二个100个,从第一个10个。您不能忽略此问题,您必须对如何执行此操作设置严格的规则。您会发现复杂性将继续增加您添加到系统的更多选项。它会起作用,但它会不屈不挠。
然而,您还没有提到第三种选择:在库存中为库存中的每个项目提供自己的行。这似乎浪费了数据库空间,但坚持下去,它确实简化了事情。平均价格?很简单,只需计算包含价格的列的平均价格。即使每件商品都有其他价格,也会同样复杂。从库存中获取物品的规则也很简单:只需使用FIFO或FILO系统即可。
所以这最后的解决方案显然是要走的路。