0

倉庫への在庫の出し入れには、以下の3種類の取引があります。

1-リストを選択2-リストを返す3-DAリスト

DAリストには、在庫管理者がディーラーから購入する在庫(在庫あり)の情報が含まれています。
ピックリストは、販売のために別の販売員に提供する在庫です(在庫切れ)返品リストは、販売員が販売していない在庫であり、返品します。ストックキーパーにそれ(ストックイン)

ストックキーパーは、これらのクエリを有効にする必要があることを望んでいます

1-すべての種類の以前のリスト(PL RL DAリスト)を日付ごとに、営業担当者ごとに表示できます2-倉庫で利用可能な在庫の量

表はその下にあります

sku(id, name, type, category)
batch(sku_id, batch, price , date)
salesman(id, name)
transaction_type(type_id, transaction_name)
transaction_header(list_id , salesman_id, route )
transaction_detail(list_id, sku_id , Qty)

リストIDの主キーには、リストのタイプを識別することに基づいて、da-34244pl-453rs-3432のようなプレフィックスが含まれています。

したがって、問題はこのウェアハウステーブルを更新する方法です

warehouse(sku_id, qty , typeofsku)

私が思う可能性は

ユーザーがリストを入力すると、フォームにボタンが表示されます。これはリストです。ユーザーがこのボタンを押すと、最初にtransaction_detailに詳細を入力し、このテーブルから数量を選択し、リストタイプの加算または減算に基づいて倉庫から数量を取得します。次に、ウェアハウスを更新します。

他にも効率的で優れたアプローチがありますので、詳細を提案してください。

4

1 に答える 1

1

まず、すべてのテーブルにブラインドプライマリキーまたはクラスタリングキーが必要です。ブラインドキーは、基になるデータとは何の関係もないキーです。ブラインドキーは通常、自動インクリメントの整数または長整数、あるいはその他の一意のIDです。

リストIDは、リストのタイプを識別するda-34244pl-453rs-3432のようなプレフィックスを含む主キーです。

データベース列にこのような組み合わせフィールドを含めることはできません。フィールドをリストコード(da、pl、rs)と数値に分割する必要があります。出力を生成するときにフィールドを組み合わせて、ユーザーが使い慣れたリストIDを確認できるようにします。これらの数値は整数をインクリメントしているだけだと思います。データベース内のリスト番号からリストタイプを分離すると、使用された番号を追跡しやすくなります。

すべての種類の以前のリスト(PL RS DAリスト)を日付別、営業担当者別のクエリ

どのテーブルにもタイムスタンプを保存しないため、日付でクエリする方法はありません。さらに、リストの種類をデータベースに大文字と小文字のどちらで保存するかを決定する必要があります。小文字と大文字の両方でリストタイプを使用しました。

倉庫で利用可能な在庫の量を照会します

最後に、必要な数量値を持つ倉庫テーブルについて言及します。

トランザクション

追加のために編集:トランザクションを完了するために、複数のSQLステートメントを実行する必要がある場合があります。

トランザクションヘッダーテーブル、トランザクション詳細テーブル、およびウェアハウステーブルがあります。

トランザクション詳細テーブルが返品リストからのものであると想定します。これは、在庫数量を倉庫テーブルに追加していることを意味します。

プログラムは次のSQLステップを実行する必要があります

  • 情報をトランザクションヘッダー行に挿入します。
  • 返品リストの各SKUについて:
    • 情報をトランザクション詳細行に挿入します。
    • 同じsku_idを持つウェアハウス行を選択します。
    • トランザクション詳細行の数量を倉庫行の数量に追加します。これが選択リストの場合、倉庫行の数量からトランザクション詳細行の数量を差し引きます。
    • 倉庫行の数量を更新します。
  • データベースの変更をコミットします。

上記のすべての手順が正常に実行されるか、上記の手順のいずれも正常に実行されません。これは、トランザクションと呼ばれるものです。これが、データベースへの変更をコミット(またはロールバック)する理由です。

トランザクションの同期は、在庫量を正確に保つものです。トランザクションの詳細行がデータベースに書き込まれたが、倉庫の数量が更新されなかった場合に、実際の倉庫で何が起こるかを想像してみてください。

はい、上記のすべての手順を実行する必要があります。近道はありません。

于 2013-03-07T14:46:37.113 に答える