多対多テーブルの主キーの設計
多対多テーブルでの複合主キーとサロゲート自動インクリメント主キーの使用 -対多テーブルは議論の対象となっています。複合主キーは外部キーを組み合わせることで一意性を保証しますが、サロゲート キーは追加の自動生成 ID フィールドを導入します。
サロゲート キーは、新しいレコードを最後に追加することなく追加できるため、挿入のパフォーマンスが向上すると主張する人もいます。テーブルの順序を乱します。ただし、この議論はデータベースのストレージとインデックス作成に関する時代遅れの理解に基づいています。
実際には、データベース テーブルは配列ではなく、バランスのとれたマルチウェイ ツリー構造を使用して格納され、インデックスが付けられます。これは、主キーの設計に関係なく、挿入を効率的に実行できることを意味します。さらに、インデックスはクエリを最適化するために使用され、テーブルの行の順序は無関係になります。
その結果、複合主キーを使用する利点は代理キーの利点を上回ります。複合主キー:
したがって、単純な 2 列の多対多の場合マッピングでは、外部キー列に複合主キーを使用することをお勧めします。これにより、読み取りおよび書き込み操作の一意性と最適なパフォーマンスの両方が提供されます。
以上が多対多のテーブルにおける複合キーと代理キー: どちらの主キー設計が最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。