SSブログ

コード項目の「前ゼロ」文化 [テーブル設計]

 学校などでプログラムを勉強している場合には、まず遭遇しない事柄だと思います。
 実際の開発現場では、時としてこういった設計のシステムに出会します。

 「前ゼロ」または、「前ゼロ埋め」とは。(私の周りでは、こういう表現でした)
 「5桁の数値で、123」を表現する場合、「00123」となることを、こう言います。

 前にゼロを付けて数値を表現する事は、いろいろな場面であるのですが、ここではシステムでのコード項目(商品コードとか顧客コードとか)について書きます。

 数値の前にゼロが付くというのは、BASICやC言語あたりから(ちょっと古いか、今時は何から始めるんだろう?)プログラムを始めた人には、あまりピンとこない事だと思います。
 COBOLでの数値の表現が、こうなっていることに由来していると思われます。

 COBOLでは、数値項目を桁数指定で定義します。5桁で定義した場合、その領域には、「00123」のような表現で、必ず5桁が記録されます。記録する桁数が、定義された桁数以下だった場合、上位の桁には、「0」が入ります。

 現在のデータベースを用いたシステムでも、同じようなデータの持ち方になるように、設計されることがあるようです。
 データベースの数値項目は、「数値」としての情報しかもてませんので、前にゼロを付けた状態は記録できません。記録できる数値の範囲がどうであれ、数値の「123」は「123」です。
 では、どうするかというと、テキスト項目にします。文字なので「00123」そのままを記録することができます。
 しかし、テキスト項目は、数値項目と比べて、必要な記憶容量や処理の負荷で不利になります。
 古い資産の焼き直しとかでない限り、この設計は有用ではないと思います。

 内部がどうなっているかは、利用者からするとどうでも良いことなのですが、時々利用者への配慮が足りないシステムに出会します。
 例えば、数値5桁の「商品コード」項目があったとします。
 そこで、「00123」というコードの商品を呼び出すとします。
 私的には、「123」とだけ入力したいのですが、システムは「00123」と入力しなければ受け付けられないようになっています。
 そこの所は、プログラムで良きに計らって頂きたい所なんですが、そうなってない物もあるわけです。5桁なら、まあ許せるかも知れませんが、これが7桁とか9桁になったら、キーボードの「0」がすぐ壊れます。

 若い開発者が、古いシステムをお手本にして、何の疑問も持たずに、コード項目を文字項目で作るようになって欲しくないと、私的には思ってます。

 蛇足ですが、下記のような用語があるようです。

・ゼロパディング・・・数値が規定の桁数に満たないとき、桁を0で埋めること。
・ゼロサプレス・・・前(左側)から連続する0を取り除くこと。

 さらに蛇足です。
 文字項目のコード項目で、後ろスペースを持つような作りにはしない方が良いと思います。
 どーもSQLの条件とかでは、後ろスペースは無視されて、スペース数やありなしを判定できないような感じだったので。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。