3値以上あるならテーブルにしろ

habuakihiro 『フラグや区分:boolならカラムでOK。3値以上ならテーブル化。それが状態を示すならBuriの出番(w

http://d.hatena.ne.jp/arn/20070430#p2

ということにその当時納得感がなかったので、いまだに方針が決断できないのだけど「3値以上ならテーブル化」という原則にかなり傾いてきた。その理由としては、

  • 最初は名称くらいしか項目が必要ないけど、開発が進むにつれて実は他にも情報が必要なことが判明することがある
  • カラムにするかテーブルにするか悩まなくてよい

ということが挙げられる。とはいえ、テーブル数が爆発的に増えるという欠点があるのでそれ相応の管理ツールが整備されないと導入は難しい気もしている。

で、それはそれとして、問題は状態ならばBuriで良いけれど、処理の分岐が必要な場合にどうすればよいかなのだよな。通常であれば区分値を見て判断だが、テーブル化するということはidを持っているということになる。単にidを辿ってコードを取得すればそれでよいということなのだろうか。

いまだ悩み中。

[追記] そうか、処理が分岐するような区分はサブセットにすればよいのか……、ってさらにテーブルが増加するなぁ。