ナチュラルキーとサロゲートキーについて

ナチュラルキー

企業コードや社員コードなどの意味のある(?)コードを主キーにする方法。

例えば、企業マスタ、社員マスタ、日報テーブルがあった場合。



メリット
  • リレーションやレコードができる単位がわかりやすい
デメリット
  • コード体系に変更があったとき影響が大きい
  • 複合キーが冗長(と感じる)

サロゲートキー

システムでレコードを一意にするID(自動採番)を主キーにする方法。

例えば、企業マスタ、社員マスタ、日報テーブルがあった場合。



メリット
  • コード体系の変更影響が少ない
  • ORマッピングとの相性が良いらしい
デメリット
  • レコードができる単位がわかりにくい

どちらが良い?

個人的にはサロゲートキーが良いんじゃないかなと思います。


ちょっと複合キーが冗長に感じてて…


seasar勉強会のときひがさんも、新規に開発するならサロゲートキーが良いって言ってたしなぁ。


あと、サロゲートキー使う場合は企業番号とかはインデックス張る必要がありますね。


ナチュラルキーにするかサロゲートキーにするかは、どこまでDBに任せるかによるんのかなぁ。DBエンジニアの人は、そこはDBに任せろって感じで、コーディングする人からするといやプログラムに任せろって感じ。


上に書いたメリット・デメリットはあくまで個人的な意見です><