Stack Overflowや他のWebサイトで、コンポジットキーとサロゲートキーに関する白熱した議論を読んでいます。与えられた議論のいくつかに戸惑いましたが、それぞれの長所と短所を認識していると感じています。
代理キーを探したくなりますが、別の質問があります。私の状況を説明させてください。一意の組み合わせを構成する5つの整数で構成されるテーブルがあり、このエンティティを参照するテーブルがいくつかあります。現在、すべてのテーブルには5つのフィールドすべてが含まれており、すべてのJOIN操作では5つのフィールドすべてを結合基準として指定する必要があります。これで、代理キーを追加しました。しかし、「メイン」テーブルを参照する代理外部キーを優先して、すべてのテーブルから5つのフィールドすべてを削除する必要がありますか?
他の表では、5つのフィールドのそれぞれが選択基準として頻繁に使用されるため、これを行うことに不安を感じています。選択操作が高速に実行されるように、特定の自然な順序でインデックスが定義されています。5つのフィールドすべてを別のテーブルに移行する場合、最初の3つを選択する場合は、JOINを定義してそこから選択する必要がありますが、インデックスは定義されていません。そのJOINは生成されたばかりなので、パフォーマンスが低下します。
または、5つのキーを含む各テーブルのVIEWを何らかの方法で定義し、そのインデックスを作成する必要がありますか?
私は混乱していると感じ、これらすべてを入力した後、再び自然キーを使い続ける傾向がありました。ヘルプ?