IDと候補キーの使い分け

わたなべさんの言う「サロゲートキーにこだわったモデル」というのは

  • すべてのテーブルにidentifierをつける
  • 参照キーにはidentifierしか使えない
というもののようです。それでは

  • すべてのテーブルにはidentifierをつける
  • 参照キーにはidentifierのほかの候補キーを使っても良い
という方針であれば、許容されるのかもしれません。

http://d.hatena.ne.jp/bottleneck/20060906/1157545775

そういえば、ID否定の見解として「色とサイズで単価が決まるような場合に対照表を用意しなければならない」というのがあった気がするけど、その場合は色とサイズで検索してその単価表のIDをイベントに埋め込むのが正しいのだと思う(もちろん、元の単価表までたどれる必要がないのであれば、IDを埋め込む必要はない)。

色とサイズで単価が決まるのだとしても、イベントとして記録すべきは「あの日あの時あの場所である色とあるサイズである単価に決まったということ」で「その色とサイズである単価に決まるというルール」ではない。だから、(事実を記録する)参照キーは必ずIDになるはずで、後者になることはあり得ない(もちろん、集計結果を現時点の単価で表示したいなどの事実ではない結果を得たい時は候補キーを使って結合すべきである)。

#古い話題を蒸し返してスマソ