書ききれる範囲で

メモ書き集

サロゲートキーは使わない方がいい

サロゲートキー(代理キー・人工キー)を振っとけば楽だけどあんまよくない。サロゲートキーは1レコード1キーでわかりやすい。取り出すときも一つのキーだけ合わせればいい。

 

場合(チューニング)によってはそれがいいときもあるのかもしれないけど、基本的に(特に概念レベルでは確実に)ナチュラルキーを主キーにした方がいい。

 

理由は「ナチュラルキーでないと、本来のデータモデルがわからなくなるから」。本来(業務上・仕様上)、どの属性にどのテーブルのレコードが依存していて、どの属性に従属性があって、というのが、サロゲートキーでは見えない。本来重複してはいけないデータの重複の危険性もある。キーが違うから属性一緒でも登録できちゃう。

 

データモデルを現すときには、必ずナチュラルキーを使うこと。そのあと、物理的に問題がある場合のみサロゲートキーを用いること。

 

DBエンジニアの世界では常識のようです…。 

 

 

追記

データウェアハウス(大量のデータを長期で保管したい場合など)では、ナチュラルキーが変わる可能性がある場合に、サロゲートキーを追加して履歴管理を行うことは一般的らしい。