プライマリキーの設計

普通にモデル設計から導き出されるキーをプライマリキーにするのを
ナチュラルキーって言うらしいんだけど、
ナチュラルキーだとキー定義が変わると使えなくなるので仕様変更に弱い。
昨今の短納期、高速な仕様変更に対応するために、
最近増えてきたのが、単なるシーケンスで採番する、
サロゲートキーって手法。
ナチュラルキーとは別に保持するから、
仕様上の意味とかが変わっても対応できる。
そのかわり管理がちょっち面倒。
ちなみに最近流行りのRuby On RailsなんかでO/Rマッピング
使う前提で考えると、サロゲートキーの方が圧倒的に簡単。
まぁ古典的なDOAモデルから入った人には拒否感あるかもね。
丁度今進めてるプロジェクトの一つがまさに高速仕様変更が
予測されてるんで、ちょっと検討してみよう。