コード体系
商品コードみたいなやつの設計
有意コード
コードの各桁に意味を持たせるもの
例えば、「品番の1桁目が9なら食品」みたいな
複数の無意コードの組み合わせたもの
文字数やフォーマットが決まっていればプログラム処理時にデコードできる
<1桁:カテゴリ><3桁:メーカー><3桁:製品番号>のように決まっていたら、それごとに分割して処理を分けられる
システムの寿命はコードで決まる!:データベースエンジニアへの道(4)(3/3 ページ) - @IT
逆に言えば、ある意味変更に弱いし、スケールもしない
「品番の1桁目が9なら食品」としていても、足りなくなって、「Zも食品にする」というルールが追加されうる
テーブルのカラム設計時に、その区切りごとにカラムを作る方針もあるらしい
上の例だと、カテゴリ, メーカー, 製品番号ごとにカラムを分ける
プログラムを書きやすい、インデックスを貼りやすい
ただこれも、安定感がなさそう
無意コード
コードの各桁に意味を持たせないもの
例えば、「品番の1桁目が9なら銀行振込」みたいな、そういうルールがないもの
ロールアップコード
各桁が順に、大分類・中分類・小分類...を意味するようになっているコード
コード設計の話 - Hot Heart, Cool Mind.
階層化コード
親子関係のある複数のコードを組み合わせて、ひとつの概念を表すもの
e.g.
"1000" が「現金預金」で、"1000-02"が「現金預金(当座預金)」といったふうにコードを設計する
コード設計の話 - Hot Heart, Cool Mind.
ロールアップコードでは、コードの各桁に(集計単位という)意味がある。プログラムでもそれを前提に集計処理をおこなう。この点では無意コードではないようにみえるが、各桁の値を条件判定に用いることはしない。
つまりプログラムは商品分類コードの頭1桁が「大分類」であり、頭2桁をあわせると「中分類」となる、というような知識は持つが、頭1桁が'9'の場合は何を意味しているのか、といった知識は持たない。
無意コード化の原則の狙いは後者の知識がプログラムに入り込むのを避けることにあるので、ロールアップコードは許容してよいと思う。階層化コードも同様である。
ユーザコード
システムが知識として持たないコード
ユーザに主導権があり、自由に運用できる
コード設計の話 - Hot Heart, Cool Mind.
システムコード
システムが知識として持つコード
修正するにはシステムを変更する必要がある
コード設計の話 - Hot Heart, Cool Mind.
複合意味コード
複数の意味を内包するコード
便利だが、不安定
意味を持てば持つほど変更の可能性が上がるので
杉本啓さんの造語だと思うが、便利なので使う
コード設計の話 - Hot Heart, Cool Mind.
単純意味コード
単一の意味を持つコード
単一責任
杉本啓さんの造語だと思うが、便利なので使う
コード設計の話 - Hot Heart, Cool Mind.
標準コード
e.g. JANコード, ISBN
技術的制約
記号を含まない
スペースやカンマを含むと解析のじゃまになる
主キーにすべきでない
後の変更に弱い
業務上のコードと、実装は疎結合にしておく
片方の変更にもう片方が影響しないようにする
check digit
手書きした時、バーコードで読み取った時のミス防止
品番コード体系が破綻!その前に知っておきたいデータモデル | 日経クロステック(xTECH)
渡辺幸三
コード設計の話 - Hot Heart, Cool Mind.
杉本啓
https://scrapbox.io/mrsekut-book-4534057776/004
https://xtech.nikkei.com/atcl/nxt/column/18/01195/072600064/?P=3
https://atmarkit.itmedia.co.jp/ait/articles/0911/11/news108.html
chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/https://cio.go.jp/sites/default/files/uploads/documents/guidebook%CE%B2-code_20170801.pdf
https://products.system-exe.co.jp/2018/01/01/column10/
https://scrapbox.io/mrsekut-book-4297129469/search/page?q=%E5%95%86%E5%93%81%E3%82%B3%E3%83%BC%E3%83%89
https://scrapbox.io/mrsekut-book-4297140101/search/page?q=%E5%95%86%E5%93%81%E3%82%B3%E3%83%BC%E3%83%89
https://scrapbox.io/mrsekut-book-4865940057/149
https://scrapbox.io/mrsekut-book-4883732169/search/page?q=%E5%95%86%E5%93%81%E3%82%B3%E3%83%BC%E3%83%89
https://shikumika.com/column/%E5%9C%A8%E5%BA%AB%E7%AE%A1%E7%90%86%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E4%BD%93%E7%B3%BB/
https://www.sei-info.co.jp/framework/column/data-modeling/