generated at
ナチュラルキーがある時はサロゲートキーは不要

「確実にナチュラルキーとして採用できる」値があるならナチュラルキーを使えば良い
ただし、この判断はかなり注意深く行うべきmrsekutmrsekutmrsekutmrsekut
確実かどうかが怪しい場合は、大人しくサロゲートキーを導入すれば良い





サロゲートキーを採用した場合のデメリット
サロゲートキーを作成した場合も、ナチュラルキーとなる値にはUNIQUE制約を付けるはず
そのtableを更新すると、ユニークキーを更新するためのオーバーヘッドがかかる
indexに関わるオーバーヘッドなのでコストが高い
不要にサロゲートキーを作ると無駄にDBが複雑になる




『達人に学ぶDB設計』 8.2の主張
サロゲートキーを採用した場合のデメリット
>一般的な原則としては、極力代理キーの使用は避けて、自然キーによる解決を図るべきです。その主な理由は、代理キーがそもそも論理的には不要なキーのため、論理モデルをわかりにくくしてしまうからです。(...) 実際、まともな理論家ならば、サロゲートキーを推奨することはしません。ジョー·セルコは「オートナンバーを主キーに使うことは、データモデルを欠いている証拠だ」と、自然キー以外を主キーに使うことを厳しく批判しています。
「論理的に不要だから」って理由になっているのか?mrsekut
以下2つを比較すれば、使うべきじゃない気がするがmrsekut
(サロゲートキーに比べて)変更の可能性が高い
変更があった場合の修正の手間




参考
1章割いて説明しているが根拠がしょぼい