見出し画像

テーブルの設計 その5”マスター"

■ マスターって?

「マスターってなんですか?」
と質問されたとき何と答えますか?

マスターはマスターだよ。」なって冗談があるほど、言葉では説明が難しいのも事実です。


そこで、Copilotに聞いてみました。
こな回答が返ってきました。
「ビジネスの運営に必要な基本的なデータを指します。例えば、顧客の詳細、製品の詳細、従業員の情報などが含まれます。これらのデータは、トランザクションデータ(売上、購入など)とは異なり、頻繁に変更されることはありません。」

なんか、ピンッときませんね。


で、よっぱおじさん🍶が考えるマスターデータを自分なりに説明します。
実務上で関連するデータを転記したい場合、関連するデータを参照して活用される参照元の情報。

例えば、納品書に書かれる「顧客情報」「販売社情報」「品目情報」「消費税」などが挙げられます。

ただ、更新頻度が多い情報は、マスターとしては不向きな情報になります。その点は、Copilotさんと同じ意見ですね。

■ マスターとなる情報を整理する

前にこんな感じで情報を整理しました、的な記事を上げています。


ここで、ある程度のマスターとなりえる情報整理は完了しています。
しかし、不足はないか?をもう一度見直ししてみます。

基幹システムから情報が勝手に落ちてくるので、面倒なマスターはほぼ無いですが、運賃関係のマスターが複雑になりそうです。

これで運賃計算が可能かを、何度も何度も検証を行います。

マスター部分のER図

その為に、宅配の送料計算について、先生レベル(人に教える事が出来るくらい)になる必要があります。

■ 宅配の送料計算方法とは?

個人で宅配を依頼する時、荷物を持参していきますよね。
その時、宅配業者様は、3つの情報をもって、送料を決定しています。

1.重量(Kg)
2.縦+横+高の和(cm)※ 以下サイズと言います
3.配達先の地域

ただ、ここで判断が入ります。

例えば、佐川急便様の料金表。
縦軸は、サイズと重量になって、横軸に地域の料金表になっています。

あれ?縦軸、なんで2列なの?ってなります。

実は、このようなロジックになっています。

佐川急便さまの料金表(2024年4月時点)

例えば、北東北に荷物を送ると想定します。
そして、サイズは125、重量が25Kg とします。

サイズ的には、140以下 100より大きい為、料金は、「2,310円」になりますが、重量的には、25Kgより大きく30Kg以下になるので、「2,570円」になります。

この場合、金額が高い方が適用され、送料としては、「2,570円」が適用されるのです。

これが送料の計算方法になります。
ヤマト運輸様も同じような考えで送料が決定されます。

■ マスター情報の欠陥を洗い出す

現時点のER図でも送料の計算は可能かもしれない。

しかし、「あんな時、こんな時、そんな時、が起きた時、今のままで耐えられるか?」を本気で考えます。

また、実際にオペレーションする人のITスキルを見極めします。

で、以下の可能性について自問自答していきます。

1.将来変更がある要素
2.メンテナンス方法
3.マスターをメンテナンスする人のITスキル

1.将来変更がある要素

かなり重要なポイントになります。

マスターのテーブル設計をミスすると、プログラムを全部見直し・修正する地獄を経験する羽目に会います。

ですので、「・・・かもしれない」の思考で考えます。
今は不要と思ったら「必要」と判断することが重要になります。

「必要」って判断した結果、プログラムが複雑になることは当たり前です。
いわば、保険みたいなものです。
後々の面倒が減らすことが出来ます。

| 変更になる要素

  • 送料(値上げ、値下げ)

  • 地域と都道府県の組み合わせ(配達の多様化)

  • 箱の種類と名称(取り扱い梱包の変化)

  • 宅配業者の増減(配達業者の多様化)

  • サイズの増減(料金の細分化)

  • 重量の増減(料金の細分化)

これらを考慮すると、考えているマスターテーブルの設計が不十分なのが明らかです。

2.メンテナンス方法

どのような画面でメンテナンスできれば良いかを考えます。
一番簡単なのは、テーブルを直接開いてもらい、データの変更・追加・削除をしてもらえれば簡単な話ですが、そんな簡単な話はありません。

そこで同時に「3.マスターをメンテナンスする人のITスキル」も考慮します。

今回のシステムを利用するのは、実際に荷物を梱包する作業者で、キーボードをあまり触らない人が対象になります。

当然、PCには詳しくないことが前提条件になります。

そんな人に対して「送料を直したいなら、テーブルを直接開いて、データを追加、変更してね」って言っても、出来るわけがありません。

もし、毎日PC作業の業務が数時間ある人なら、メンテ画面は少し手抜きします。

なぜ、こんな「利用者のITスキル」を判断基準を設けるか。

それは、作成するアプリはそもそも売り物ではないからです。

さらに、業務中の合間時間でアプリを作成する必要がある為、手抜きできる所は手抜きします。
そう、メインの実務は、アプリ作成じゃないからです。

しかし、今回のアプリの利用者は、PCスキル皆無が前提。

そうすると、送料のメンテナンスも佐川急便様、ヤマト運輸様のwebの画面と同じくしないとダメになります。

なぜなら、送料改定の場合、web画面と同じ書面で通達されるからです。

webと同じUIを作り、その画面をExcelチックにメンテできるようにする必要がありそうです。

送料のメンテナンス画面のイメージ

■ マスターテーブル設計の見直し

将来性を考慮した場合、項目を追加したり、テーブルを追加する必要があると判断しました。

| 追加した項目
送料には、「有効開始日」の項目を追加して、時間軸で送料が変化するように作り込む必要があります。

| 追加したマスターテーブル
・地域変換テーブル
・宅配業者テーブル

結果、下図のようにしました。

変更したマスターテーブルのER

■ まとめ

簡単に書いてしまいましたが、実は、システム(アプリ)を作る時、一番脳みそフル回転させて決めるのは、「マスターテーブル」になります。

処理系、保存系のテーブルの変更があった時のアプリのメンテは、なんとかできるものです。

しかし、運用を開始した後で、マスターテーブルの設計をミスに気付いたり、環境の変化で、マスターテーブルの設計をしなければならない場合、
これは、本当に地獄です。

その為、「今は必要ないけれど、10年後のかもしないを想定して」を意識してマスターテーブルの設計を欲しいと思います。

テーブルの設計も残り1回(次回でひと段落)になります。
ここまで、読んでいただいてありがとうございます。
もう、感謝感激でございます。

何も落ちが無くて、ホントスマンカッタッ!

■ よっぱおじさん🍶の独り言

実は、システムを作るって、作ろうとしている業務を熟知することも意味しています。
システムを作る初めは、初心者🔰レベルの知識ですが、システムを作る過程で、実務を理解できるようになり、システムが完成する頃には、人に教えられるレベルに達します。

しかし、その代償に時間を失いますが、失った時間は、無駄になりません。

社内のシステムを作る行為は、実は、社内のコンサルを行っていると同じです。
これは、他人がマネできることではありません。
けっして、損しない経験が体験できます。

未来の市民開発者に栄光あれ。

この記事が気に入ったらサポートをしてみませんか?