では試しにワクチンの在庫管理をモデリングしてみましょう。まずはどんな要件か調べます。
ワクチンには複数社があるので商品CDをワクチンマスタの主キーとしよう
管理したい属性は「名称」「メーカー名」「容量」程度としてみよう
副作用が出たときにトレース出来るよう、食品よりも厳しいロット管理が必要なはず
接種場所には箱で輸送されるということにしよう
1箱に195本入っているらしい。(https://www.mhlw.go.jp/content/10906000/000707431.pdf)
箱はバラのワクチンとは異なる商品CDがついていることにしよう
ディープフリーザーで、-75±15℃で保管すると2ヶ月保管可能なので消費期限は気にしなくて良いか
解凍すると最大5日間保管可能なのでこれは管理が必要そう
1瓶で5回の接種が出来るらしい(注射器に依っては6回)
箱からバラに取り出すと解凍したことにしよう
要件がわかってきましたので具体的にモデリングしてみます
ワクチンマスタと接種場所マスタは必要そう
箱の在庫管理は接種には直接関係ないので一旦忘れよう
箱から何個解凍するかを事前に決めてそれが入荷予定になることにしよう
接種の将来の申込みで在庫があるか分かる必要があるので日別に管理する必要がある
このモデルをよく見ると、日別の在庫予定数を持っています。つまり接種の予約が入るごとにその日の在庫数を減らすだけでなくそこから後ろの在庫予定数も更新する必要が出てきます。そんな複雑なことが出来るのかという問題があります。
在庫というのは在庫増と在庫減の結果です。その増えるイベントを整理し、減るイベントを整理してテーブルを作ると、在庫予定数は導出属性(他のテーブルから計算で求まる値)にすることが出来ます。
なお、例えば「接種申込」という在庫減のイベントでも、日付が変わると変更前の日付の在庫増と変更後の日付の在庫減に分けると完全に履歴管理が出来るようになります。
To Be Contimued・・