ナチュラルキーがある時はサロゲートキーは不要
「確実にナチュラルキーとして採用できる」値があるならナチュラルキーを使えば良い ただし、この判断はかなり注意深く行うべきmrsekut.icon*4
サロゲートキーを採用した場合のデメリット
サロゲートキーを作成した場合も、ナチュラルキーとなる値にはUNIQUE制約を付けるはず そのtableを更新すると、ユニークキーを更新するためのオーバーヘッドがかかる
indexに関わるオーバーヘッドなのでコストが高い
不要にサロゲートキーを作ると無駄にDBが複雑になる
『達人に学ぶDB設計』.icon 8.2の主張
サロゲートキーを採用した場合のデメリット
一般的な原則としては、極力代理キーの使用は避けて、自然キーによる解決を図るべきです。その主な理由は、代理キーがそもそも論理的には不要なキーのため、論理モデルをわかりにくくしてしまうからです。(...) 実際、まともな理論家ならば、サロゲートキーを推奨することはしません。ジョー·セルコは「オートナンバーを主キーに使うことは、データモデルを欠いている証拠だ」と、自然キー以外を主キーに使うことを厳しく批判しています。
「論理的に不要だから」って理由になっているのか?mrsekut.icon
以下2つを比較すれば、使うべきじゃない気がするがmrsekut.icon
(サロゲートキーに比べて)変更の可能性が高い
変更があった場合の修正の手間
参考
1章割いて説明しているが根拠がしょぼい