IDと候補キーの使い分け
わたなべさんの言う「サロゲートキーにこだわったモデル」というのは
というもののようです。それでは
- すべてのテーブルにidentifierをつける
- 参照キーにはidentifierしか使えない
という方針であれば、許容されるのかもしれません。
- すべてのテーブルにはidentifierをつける
- 参照キーにはidentifierのほかの候補キーを使っても良い
http://d.hatena.ne.jp/bottleneck/20060906/1157545775
そういえば、ID否定の見解として「色とサイズで単価が決まるような場合に対照表を用意しなければならない」というのがあった気がするけど、その場合は色とサイズで検索してその単価表のIDをイベントに埋め込むのが正しいのだと思う(もちろん、元の単価表までたどれる必要がないのであれば、IDを埋め込む必要はない)。
色とサイズで単価が決まるのだとしても、イベントとして記録すべきは「あの日あの時あの場所である色とあるサイズである単価に決まったということ」で「その色とサイズである単価に決まるというルール」ではない。だから、(事実を記録する)参照キーは必ずIDになるはずで、後者になることはあり得ない(もちろん、集計結果を現時点の単価で表示したいなどの事実ではない結果を得たい時は候補キーを使って結合すべきである)。
#古い話題を蒸し返してスマソ