まずは、データベースの設計から入ります。
テーブル設計書を作成して、システム全体に必要なテーブルを作成します。
テーブル設定都度にテストデータを作成して、意図している動作ができるか
確認していきます。
それからレコードの排他制御に関しては、悲観的ロックを利用します。
小売業の在庫管理の入出力は
商品の入荷
・仕入
・商品移動(入荷)
商品の出荷
・商品移動(出荷)
商品の売上
・販売データ
商品の在庫調査
・在庫管理調査
店内へ品出し(棚管理)
・商品の配置場所を明確に指示する
上記に必要なマスタ情報
・店舗マスタ
・大分類マスタ
・中分類マスタ
・小分類マスタ
・商品マスタ
・棚管理マスタ
データベース設計書 (pdfリンク)
今回はレンタルサーバーを利用しますが、プランによっては通信量やデータ
ベースサイズ等の制限があります。
集計処理についてはSQLを利用して行いますので、発生件数によっては
制限によるトラブルが発生します。
今回はLIMIT句を利用して制限を超える場合の対策を考えています。
ちなみにデータ件数は、1000件以上を想定していますので1000件
単位のLIMITで繰り返しの処理を行います。
件数が多くなった場合は、集計テーブルに都度集計することもありますが
今回はSQL主体のシステム作りを行います。
私の中にはデータベースシステムが存在しないオフコン時代の古い考えが
残っていますが、SQLの利用したシステムを考えていますので処理時間
が課題として残るかもしれません。
テーブル定義の補足
店舗マスタ
店舗コードは2桁ですが、1~9までの数値にはゼロを付加する様にして
います。(01~09とし文字列としています)
ゼロを付加する重要性をかんがえています。
店舗名は名称の後に空白が入らない様にvarchar型としています。
大分類マスタ
中分類マスタ
小分類マスタ
各分類マスタについても「店舗マスタ」同様の事を考えています。
分類コードは単品から大分類までリンクできる様にして、必要な分類を
使用できる様に考えています。
商品マスタ
個人的な好みかもしれませんが、数量や金額にはdecimal型を利用します。
仕入データ
本来は当月だけのデータしか入りませんが、棚卸時に翌期の商品が入っ
てくる場合がありますので、計上を繰越として除外することを考えてい
ます。
移動データ
出荷と入荷の両方の意味を含んでいて、入荷で計上の対象になります。
数量の取扱いはtenpo_cdでマイナス計上、idousaki_cdでプラス計上を
行います。
売上データ
数量にはプラスの数値が計上され、在庫集計時はマイナスとして計上
をします。
棚管理マスタ
商品棚、棚の段数、横並びの列をJANコードを読込んで設定します。
棚№と段№は物理的な番号を設定し、列は読込んだ順を連番として設
定します。
残高コンバート
棚卸調書用のコンバートしたデータを残します。
棚卸調書
残高コンバートを店舗、商品毎に集計したもので、これに期末の在庫
と調査コードを更新します。
翌期への繰越は棚卸終了後に期末在庫を新しい年度、期の期首在庫に更新し
ます。
管理データ
年度、期、当月を登録し月次処理が完了したら翌月に更新し年度、期
も時期に合わせて更新します。