コード体系
コードの各桁に意味を持たせるもの
例えば、「品番の1桁目が9なら食品」みたいな
複数の無意コードの組み合わせたもの
文字数やフォーマットが決まっていればプログラム処理時にデコードできる
<1桁:カテゴリ><3桁:メーカー><3桁:製品番号>のように決まっていたら、それごとに分割して処理を分けられる
逆に言えば、ある意味変更に弱いし、スケールもしない
「品番の1桁目が9なら食品」としていても、足りなくなって、「Zも食品にする」というルールが追加されうる
テーブルのカラム設計時に、その区切りごとにカラムを作る方針もあるらしい
上の例だと、カテゴリ, メーカー, 製品番号ごとにカラムを分ける
プログラムを書きやすい、インデックスを貼りやすい
ただこれも、安定感がなさそう
コードの各桁に意味を持たせないもの
例えば、「品番の1桁目が9なら銀行振込」みたいな、そういうルールがないもの
各桁が順に、大分類・中分類・小分類...を意味するようになっているコード
親子関係のある複数のコードを組み合わせて、ひとつの概念を表すもの
e.g.
"1000" が「現金預金」で、"1000-02"が「現金預金(当座預金)」といったふうにコードを設計する
ロールアップコードでは、コードの各桁に(集計単位という)意味がある。プログラムでもそれを前提に集計処理をおこなう。この点では無意コードではないようにみえるが、各桁の値を条件判定に用いることはしない。 つまりプログラムは商品分類コードの頭1桁が「大分類」であり、頭2桁をあわせると「中分類」となる、というような知識は持つが、頭1桁が'9'の場合は何を意味しているのか、といった知識は持たない。
無意コード化の原則の狙いは後者の知識がプログラムに入り込むのを避けることにあるので、ロールアップコードは許容してよいと思う。階層化コードも同様である。 システムが知識として持たないコード
ユーザに主導権があり、自由に運用できる
システムが知識として持つコード
修正するにはシステムを変更する必要がある
複数の意味を内包するコード
便利だが、不安定
意味を持てば持つほど変更の可能性が上がるので
単一の意味を持つコード
単一責任
技術的制約
記号を含まない
スペースやカンマを含むと解析のじゃまになる
主キーにすべきでない
後の変更に弱い
業務上のコードと、実装は疎結合にしておく
片方の変更にもう片方が影響しないようにする
手書きした時、バーコードで読み取った時のミス防止