AnDeriensのブログ

個人的なブログです

DBの主キーに関するノート

用語

この記事が一番整理されている?

  • 自然キー・ナチュラルキー
  • 人工キー・アーティフィシャルキー
  • 代替キー・サロゲートキー
  • 代理キー・オルタネートキー
  • 複合キー

blog.zelkova.cc

AUTO_INCREMENTなサロゲートキーで困ること

主キーに外部キーを貼ることが多いので、DBに入るまで値が何になるかわからない

たとえば、複数のテーブルにデータを入れていくとき、親テーブルにデータを入れてからでないと子テーブルの値が確定できない。

とはいえ、じゃあこれが人工キーを使えば保証されるかというと、難しさがある。 けっきょく、

  • システムで自動でつける
  • ユニーク制約

の二つの条件が揃うと、DBに入れる値を事前に100%確定することはできない。

考えられる許容策としては以下。

  1. AUTO_INCREMENTなサロゲートキーを採用した上で、テーブルに値を入れて一つずつデータを確認して入れる
  2. AUTO_INCREMNTなサロゲートキーを採用した上で、手動でデータを入れるときは連番を無視して入れる
  3. 人工キーを採用して、十分な桁数の文字列をキーにする
AUTO_INCREMENTなサロゲートキーを採用した上で、テーブルに値を入れて一つずつデータを確認して入れる

検証する

AUTO_INCREMNTなサロゲートキーを採用した上で、手動でデータを入れるときは連番を無視して入れる

検証する

人工キーを採用して、十分な桁数の文字列をキーにする

検証する