「コード体系」という言葉を拡大解釈すれば、コード体系のない業務をT字形風に書き下すことができる


T字形ER手法では、現場のコード体系に従って、解析の基点となる entity を生成する。
商品コードがあるから、商品というresourceを作るとか。
受注番号があるから、受注というeventを作るとか。
これが、基点となるentityを見出す唯一のルールだったら

現場にコード体系なんてものが無いとき、entityを認知できなくなってしまう

ということが問題になる。
この問題に対する正美氏の回答は、いろいろな記述を総合すると

  • 現状分析なら、みなしentityを使って現実をそのまま記述する
  • あるべき姿の実装であれば、コード設計のプロがコード体系を設計しつつER図を作成する

ということだと思う。


前者については、みなしentityの導出すらできないほどにコードがまったくない、という場合にやっぱり作図に困るのだが、コード体系を文字通りの意味ととらえず、「現場で認知されている個体識別の手段の体系」なのだと拡大解釈すれば、コードらしきものが見当たらない業務をT字形*風*に書き下すことができる。

resource的なものにコードがない時、名前がコードの役割を果たしている

コード体系がなくても業務が回っているということは、コードがなくても各種resourceの個体識別に支障がないことを示している。
例えば、倉庫が「小樽倉庫」「札幌倉庫」の2個しかない会社で、倉庫コードなんてものを制定せずに、名前で倉庫を識別しているとか。
コードとは「現場で認知されている個体識別の手段」と考えれば、ここでは倉庫名がコードの役割を果たしているといえる。

event的なものにコードがない時、compositeがコードの役割を果たしている

注文番号というものがないECサイトでは、顧客名+メールアドレス+注文日付などで注文を特定して、個別の注文への問い合わせに対応しているはずだ。
コードとは「現場で認知されている個体識別の手段」と考えれば、顧客名・メールアドレス・注文日付のcompositeが注文のコードである、といえる。

個体識別されていない情報には、コードを想定できない

identifierに対して多値従属する情報は、業務上レコードを特定する必要がない場合がある。
例えばここで書いた社員メールアドレステーブルなど。
このような情報には拡大解釈したコードを想定することができない。なぜなら、現場で認知されている「個体の識別の仕方」が存在しないから。

だからどうした

T字形ER手法で作図したデータ構造にIDを導入して実装する場合、どの器(=テーブル)に対してIDを振るかを決めなくてはならない。
選択肢は

  1. 全ての器にIDを振る
  2. 拡大解釈した「コード体系」のコードに対してIDを振る

があり、私は2.の立場を取っている。理由はIDの取り扱い方に不明点がないから。
1.のやり方にするのであれば、delete&insertしたい情報につけたIDの取り扱い方を考えなくてはならない。それについては別エントリで。