私は携帯電話小売業者向けの在庫管理ソフトウェアを構築しています。いくつか混乱している点があります。
わかりました。
入出庫・振込の取引表を作成する予定です。だから私の製品と属性とバーコードテーブルは数量フィールドを持っていてはいけませんよね?
以下は私のビジネスルールです
1 product, 0 or many attributes;
1 attributes, 1 to many product
1 product, 0 to many barcode;
1 barcode, 1 product
1 attributes, 0 to many barcode;
1 barcode, 1 attributes
1 barcode, 0 to many quantity
これにはいくつのテーブルを作成する必要がありますか?
私のテーブルデザインは次のようなものです。
- warehouse (warehouse id[pk])
- product (product id[pk])
- attributes (attribute id[pk])
- product attributes (product id[pfk], attribute id[pfk])
- barcode (barcode id[pk])
- stock in batch (sib_id[pk], warehouse id[fk])
- stock in batch item (item_id[pk], sib_id[fk], product id[fk], qty, unit cost)
- stock in batch item attributes (item_id[pfk], attribute id[pfk])
- stock in batch item barcode (item_id[pfk], barcode id[pfk])
- stock out batch (sob_id[pk], warehouse id[fk])
- stock out batch item (item_id[pk], sob_id[fk], product id[fk], qty, unit cost)
- stock out batch item attributes (item_id[pfk], attribute id[pfk])
- stock out batch item barcode (item_id[pfk], barcode id[pfk])
- stock transfer batch (stb_id[pk], from warehouse id[fk], to warehouse id[fk])
- stock transfer batch item (item_id[pk], stb_id[fk], product id[fk], qty, unit cost)
- stock transfer batch item attributes (item_id[pfk], attribute id[pfk])
- stock transfer batch item barcode (item_id[pfk], barcode id[pfk])
数量フィールドは必要ですか? qtyはどこに置くべきですか?
在庫のsum()とマイナス()のout outトランザクションを使用して製品の数量を取得することを考えていますが、考えすぎて、複雑すぎてここで止まってしまいます。
Qtyフィールドを使用することも考えています。すべてのトランザクションでqtyフィールドが自動的に調整されますが、最終的な数量である可能性があるため、トランザクションの計算とは一致しません。
お知らせ下さい。
合計のアイデアはある程度機能しており、スケーラビリティの問題のために在庫にアイテムを追加または削除すると、トランザクションが遅くなります。
私が同様の問題に対してそれをした方法は、あなたのケースで機能する実行中の合計テーブルを維持することでした。
私は会計目的のために監査テーブルも持っていました。会計士が動揺した場合の元の値がありましたが、現在の合計オプションはよりスケーラブルです。