用語
この記事が一番整理されている?
AUTO_INCREMENTなサロゲートキーで困ること
主キーに外部キーを貼ることが多いので、DBに入るまで値が何になるかわからない
たとえば、複数のテーブルにデータを入れていくとき、親テーブルにデータを入れてからでないと子テーブルの値が確定できない。
とはいえ、じゃあこれが人工キーを使えば保証されるかというと、難しさがある。 けっきょく、
- システムで自動でつける
- ユニーク制約
の二つの条件が揃うと、DBに入れる値を事前に100%確定することはできない。
考えられる許容策としては以下。
- AUTO_INCREMENTなサロゲートキーを採用した上で、テーブルに値を入れて一つずつデータを確認して入れる
- AUTO_INCREMNTなサロゲートキーを採用した上で、手動でデータを入れるときは連番を無視して入れる
- 人工キーを採用して、十分な桁数の文字列をキーにする
AUTO_INCREMENTなサロゲートキーを採用した上で、テーブルに値を入れて一つずつデータを確認して入れる
検証する
AUTO_INCREMNTなサロゲートキーを採用した上で、手動でデータを入れるときは連番を無視して入れる
検証する
人工キーを採用して、十分な桁数の文字列をキーにする
検証する