松田軽太のブロぐる

企業の情シスで働いています。会社の中では何をしてるのかナゾな職場の情シスあるあるなどや読んだ本のことなどを思いつくままに書いています。

【スポンサーリンク】

得意先マスタなどのコード番号を安易につけると数年後に困ることになる・・・という話

【スポンサーリンク】

f:id:matuda-kta:20220216153335j:plain

業務システムにはいろいろなマスタがありますが、これらのマスタ管理ってキチンとできていますか?

 

こんにちは! 松田軽太です。

 

マスタというのは商品マスタとか得意先マスタとか社員マスタなどです。
業務システムにとってマスタはデータ管理する上でのルールを定めているのでとても重要なものです。

 

にも関わらず意外と軽視されていたりします。


ということでマスタについてTwitterで盛り上がっていました。

 

 

例えば仕入先マスタのコード番号が5桁だったとします。

100番台が食品だとするとこんな感じで採番されることになります。

 

 11001:筒井製菓
 11002:松田製菓
 12001:しるるんベーカリー
 12002:ソリュエイ製パン

 

・・・とこんな感じで1桁目が食品、2桁目がお菓子やパンなどの食品の分類をグループ化しています。


この構成だと2桁目と3桁目の2つが分類を表すので、最大99なので、それ以上になると困ってしまうワケです。

 

コード番号にある程度のルール付けがされている方がパッと見てどんなグループの情報なのか分かりやすくはありますが想定を超えた数になると、途端にこのルールが崩れてしまい逆に混乱してしまうことになります。

 

あるいは数十年運用しても破綻したいようにコード番号の桁数を10桁くらいで設けておくという手もありますがあまり長すぎると作業者に嫌がられます。

 

それであれば、コード番号は単純に連番してしまい分類を表す項目を別に設ける方があとあと困ることがなくなります。

 

 10001:筒井製菓    |お菓子類
 10002:松田製菓    |お菓子類
 10003:しるるベーカリー|パン類
 10004:ソリュエイ製パン|パン類

 

 

取引先も事業を拡大しているので、今までとは別分野の商品を取り扱う可能性もあります。

 

例えば富士フィルムは今では化粧品や医薬品などを取り扱っています。

このような場合、どうすればいいのでしょうか?

 

上記の例だと10004:ソリュエイ製パンからプリンのような生洋菓子を仕入れることになりました。しかし仕入先マスタの分類は1種類しか登録できません。

 

この場合は仕入先マスタの上位に支払先マスタを持たせて階層構造にするという方法があります。

たとえば


  支払先マスタ 300:ソリュエイ製パン


  仕入先マスタ 10004:ソリュエイ製パン|パン類 |支払先コード:300
  仕入先マスタ 10009:ソリュエイ製パン|生洋菓子|支払先コード:300


といったように仕入先マスタに上位マスタのコードを持たせることで解決します。

 

そもそも仕入先マスタに商品分類を持たせる必要があるのか?

 

仕入先マスタはあくまでも仕入先だけを管理して、商品の種類は商品マスタで管理する方が各マスタの役割が明確になってスッキリします。


仕入先マスタ
 10001:筒井製菓    
 10002:松田製菓    
 10003:しるるベーカリー
 10004:ソリュエイ製パン

 

商品マスタ
 110:お菓子類
 120:パン類
 130:生洋菓子

 

売上分析を行うのは売上データでしょうからトランザクション側に分類を設けるのです。

 

売上データ
 伝票番号  |仕入先CD|仕入先名               | 分類CD | 分類名 
 00001234|10004   |ソリュエイ製パン | 120       | パン類 
 00005678|10004   |ソリュエイ製パン | 130       | 生洋菓子

 

こうしておけばマスタの管理がスッキリしますね。

 

マスタの頭文字をコード番号に付与しない方が良い

また分類を先頭2文字で表現するのも避けた方が良いかと思います。

 

 

 

 

これらも運用した当初は良いのですが、どんどん種類が増えていって、ある時、2文字が重複した習慣に破綻します。

 

例えば社員マスタのコードを名字と名前の先頭一文字にしたと考えると分かりやすいでしょう。


山田 太郎と山田 太助さんは同じコードになってしまいます。

 

社員マスタ
 山田 太郎:t-yamada
 山田 太助:t-yamada

 

この場合、名前もローマ字にすれば回避はできます。

 

社員マスタ
 山田 太郎:taro-yamada
 山田 太助:tasuke-yamada

 

では山田 太郎と山田 多郎だった場合はどうでしょう?


 山田 太郎:taro-yamada
 山田 多助:taro-yamada

 

となって破綻しますよね。


では得意先先マスタのコードの先頭に頭文字使って付番するやり方はどうでしょう?
社名って変わることがありますよね。


例えばFacebookはMetaに社名が変わりました。

するとこうなります。

 

得意先マスタ
 FB001  Facebook社

  数年後…

 FB001  Meta社

 

運用していた当時の状況でルールを作ることになるので「もし変わったら困らないか?」ということも考えてマスタを設計した方が良いのです。

 

マスタは業務システムでの管理の基本になる情報です。

途中で変更するとトランザクションデータとマスタデータの整合をとるのが大変なので少し先の未来までを想像してルールを考える必要があります。

 

しかし、先のことなど分からないというのであれば、新しいデータが発生するたびに連番で番号を割り付けてしまう方が楽ですよ。

ただしこの場合も桁数には余裕を持たせた方が良いでしょう。

 

 

上記のように桁が不足した段階で、今までとは全然違うコード体系になってしまいますから。

 

ちなみにマスタ管理の考え方をもっと知りたいのであれば、こちらの本が参考になりますよ。

 

 

www.matudakta.com

 

 

【スポンサーリンク】