私はいくつかのルールに従います:
- 主キーは必要なだけ小さくする必要があります。数値型は文字形式よりもはるかにコンパクトな形式で格納されるため、数値型をお勧めします。これは、ほとんどの主キーが別のテーブルの外部キーであり、複数のインデックスで使用されるためです。キーが小さいほど、インデックスが小さくなり、使用するキャッシュ内のページが少なくなります。
- 主キーは決して変更しないでください。主キーの更新は常に問題外である必要があります。これは、複数のインデックスで使用され、外部キーとして使用される可能性が最も高いためです。単一の主キーを更新すると、変更の波及効果が発生する可能性があります。
- ロジックモデルの主キーとして「問題のある主キー」を使用しないでください。たとえば、パスポート番号、社会保障番号、または従業員契約番号は、これらの「自然キー」が実際の状況で変更される可能性があるためです。一貫性を確保するために、必要に応じてこれらにUNIQUE制約を追加してください。
サロゲートと自然キーについては、上記のルールを参照してください。自然キーが小さく、変更されない場合は、主キーとして使用できます。自然キーが大きいか、変更される可能性がある場合は、代理キーを使用します。主キーがない場合でも、経験上、常にテーブルをスキーマに追加し、主キーを配置したいので、代理キーを作成します。