库存管理:如何处理数据库中已售出的库存单位?

Phi*_*etz 6 postgresql database-design ruby-on-rails inventory inventory-management

我卖酒.所以我有一个瓶子的清单.到目前为止,我有一个"InventoryUnit"模型,它引用了product和line_item.

  1. 应该将每个瓶子作为单个InventoryUnit对象存储在我的数据库中吗?

  2. 什么是减少库存的最佳做法?如果我卖瓶子,我会销毁一个InventoryUnit吗?或者我应该添加一个可以"出售"或"有库存"的状态列?

  3. 我担心性能,Postgres可以处理数十万个InventoryUnit对象吗?

我真的很感激这方面的一些帮助.对不起,我是一个前端人员,所以我真的很厌倦数据库建模......

Nei*_*gan 7

一.应该将每个瓶子作为单个InventoryUnit对象存储在我的数据库中吗?

如果您可以单独出售,那么是,否则通过案例/框跟踪它们.

二.什么是减少库存的最佳做法?如果我卖瓶子,我会销毁一个InventoryUnit吗?或者我应该添加一个可以"出售"或"有库存"的状态列?

使用位置和移动的概念(移动应该是它自己的实体).例如,OpenERP使用与此类似的"虚拟位置".

瓶子坏了?将它从库存位置移到"损坏"位置
瓶子丢失了吗?将它从库存移到"以太"位置
找到一个随机的瓶子?把它从"以太"移到库存
卖了一瓶?把它从库存移到"卖"
买一瓶?将其从购买转移到库存

三.我担心性能,Postgres可以处理数十万个InventoryUnit对象吗?

Postgres可以处理数千亿个对象.正常化.使用小数据类型.使用索引.

要记住的其他一些事情:

  • 你可以卖东西,它会被退回,你把它放回库存中
  • 你可以买东西,但是不对,所以你把它寄回给卖家
  • 你可以出售你不拥有的东西(寄售,或者还没有库存)
  • 您可能在库存中有一些目前尚未出售的商品.

对于会计库存,您还需要根据免费的FOB状态计算您负责的入库和出库货物的货物.

你需要计算原料(DIY酿酒的东西吗?),如果你制作/组装任何东西,以及订购费用等,还在进行中.

寄售商品不计入会计库存.


Edd*_*ddy 0

啊,这是一个很难回答的问题。尽管不同的模型会根据使用情况产生不同的后果,但没有正确的方法。

如果您正在跟踪少量但信息高度密集的库存(例如飞机和零件),您可能需要为每个项目定义一个条目;如果您正在对大量几乎没有身份的相同产品进行建模(正如您的情况所示),我会关注库存状态。这完全取决于您想要跟踪项目生命周期的深度。

问问自己“是否值得跟踪一盒饼干的实例,或者我可以跟踪一个托盘对我当前库存的影响有多大吗?” 加油站会为每升燃料创建一个入口吗?