6

お酒を売っています。だから私はボトルの在庫を持っています。これまでのところ、製品と line_item を参照する「InventoryUnit」モデルがあります。

  1. すべてのボトルを個々の InventoryUnit オブジェクトとしてデータベースに保存する必要がありますか?

  2. 在庫を減らすためのベスト プラクティスは何ですか? ボトルを販売する場合、InventoryUnit を破棄する必要がありますか? または、「販売済み」または「在庫あり」のステータス列を追加する必要がありますか?

  3. パフォーマンスが心配です。Postgres は数十万の InventoryUnit オブジェクトを処理できますか?

これについて何か助けていただければ幸いです。申し訳ありませんが、私はフロントエンド担当なので、データベース モデリングは本当に苦手です…</p>

4

3 に答える 3

7

1。すべてのボトルを個々の InventoryUnit オブジェクトとしてデータベースに保存する必要がありますか?

個別に販売できる場合は、そうです。それ以外の場合は、ケース/ボックスで追跡してください。

二。在庫を減らすためのベスト プラクティスは何ですか? ボトルを販売する場合、InventoryUnit を破棄する必要がありますか? または、「販売済み」または「在庫あり」のステータス列を追加する必要がありますか?

場所と移動の概念を使用します (移動はそれ自体のエンティティである必要があります)。たとえば、OpenERP はこれに似た「仮想ロケーション」を使用します。

ボトルスマッシュ?在庫の場所から「破損した」場所に移動します
ボトルが行方不明になりましたか? 在庫から「エーテル」の場所に移動し
ます ランダムなボトルを見つけましたか? 「イーサ」からインベントリ
に移す ボトルを売った?在庫から「販売済み」に移動
する ボトルを購入しましたか? 購入済みから在庫に移動する

三。パフォーマンスが心配です。Postgres は数十万の InventoryUnit オブジェクトを処理できますか?

Postgres は何千億ものオブジェクトを処理できます。きちんとノーマライズ。小さなデータ型を使用します。インデックスを使用します。

その他の注意事項:

  • 何かを販売して返品され、在庫に戻すことができます
  • 何かを購入することはできますが、正しくないため、売り手に送り返します。
  • 所有していないものを販売することができます (委託販売、またはまだ在庫にない)
  • 現在販売されていない商品が在庫にある場合があります。

会計在庫の場合、船積み FOB ステータスに基づいて、担当するインバウンドおよびアウトバウンド出荷の商品もカウントする必要があります。

何かを作ったり組み立てたりする場合は、未加工品 (DIY のワイン製造用のもの?) と仕掛品、発注コストなどを数える必要があります。

預託品は、会計在庫にはカウントされません。

于 2013-09-25T18:36:53.423 に答える
3

最低の代替可能レベルで在庫を追跡する必要があります。言い換えれば、棚から 1 つのユニットを選ぶ場合、正しいものを入手するために知っておく必要がある最も具体的な情報は何かということです。

あなたの例では、「ボトルを取りに行く」と言うだけでなく、ウォッカの代わりにワインを持ち帰ることもできません. また、「ウォッカのボトルを取りに行ってください」とは言えません。最後に、1.5Lサイズが欲しかったのに1Lサイズを持ち帰ってしまうかもしれないので、「シロックのボトルを取りに行く」とは言えません。

「1.5Lシロックの下ケースの前列左から3本目を取りに行け」と言う事も出来ますが、シロックの1.5Lボトルはどれも同じなので馬鹿げています。(味はさておき;))。

スイート スポットは、在庫管理単位 (SKU) になります。ありがたいことに、世界中のほぼすべての企業がすでにこの問題を解決しています。バーコードの下にある UPC 番号を SKU として使用するだけです。

これに基づいて、モデルは次のようになります...

InventoryOnHand
- id:int
- product_id:int
- quantity:int

Product
- id:int
- sku:string
- name:string

次に、在庫の入出に応じて InventoryOnHand の数量を増減します。

于 2013-09-25T17:25:53.030 に答える