データベース設計の領域では、多対多のリレーションシップによって次のような疑問が生じます。マッピング テーブルの主キーは、関連テーブルの外部キーの複合、または自動インクリメント サロゲートです。 key?
代理キーに対する議論によれば、複合主キー (PartID、DeviceID) を作成すると、物理ディスクをその順序でソートする必要があります。既存のエントリ (Part1/Device1) と (Part2/Device3) の間に新しいレコード (Part1/Device3) を挿入するには、大規模なデータ シャッフルが必要になり、テーブル サイズが大きい場合には問題が発生します。
複合主キーの支持者は、これらの懸念を却下し、次のように主張しています。
複合キーと代理キーの選択によるパフォーマンスへの影響は、2 列の多対多マッピングでは最小限です。ただし、より複雑なマッピングや大量の挿入ワークロードの場合、サロゲート キーには次のような利点があります。
ほとんどの場合、複合と多対多テーブルの代理キーは好みの問題です。単純な 2 列のマッピングの場合、複合主キーはシンプルさと一意性を提供します。ただし、複雑なマッピングや高い挿入ワークロードの場合は、代理キーを使用するとパフォーマンスとデータの整合性が向上する可能性があります。
以上が多対多テーブルの複合主キーと代理主キー: どちらのパフォーマンスが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。