SQL: 多対多テーブルの主キー
データベース設計では、複合主キーを使用するか自動主キーを使用するかの選択多対多テーブルの -increment サロゲート キーは議論の的です。代理キーの効率性を主張する人もいますが、複合キーの単純さを好む人もいます。
複合主キー
複合主キーは外部キーで構成されます多対多のリレーションシップに関係する両方のテーブルから。これにより一意性が保証され、追加のインデックスが不要になります。ただし、新しいレコードを挿入する場合、データベースは主キーに基づいて並べ替え順序を維持するためにテーブル データを再編成する必要がある場合があります。
自動インクリメント サロゲート キー
自動インクリメント代理キーは、新しいレコードごとに自動的に生成される一意の識別子です。これにより、インデックス作成が簡素化され、新しいレコードをテーブルの最後に追加できるようになり、データの再編成の必要性が減ります。ただし、追加の列が導入され、データ冗長性の潜在的なソースが追加されます。
パフォーマンスに関する考慮事項
質問のコメンテーターによると、パフォーマンスの懸念はテーブルの再編成から発生します。複合主キーを使用する場合。しかし、この議論には欠陥があります。最新のデータベースは、B ツリーやバランスの取れたマルチウェイ ツリーなどの効率的なデータ構造を使用して、データの保存と取得を迅速に行うため、データの再編成は無視できる要素になっています。
読み取り/書き込み頻度
データベーステーブルは通常、書き込まれるよりも読み取られる頻度が高くなります。これにより、パフォーマンスの最適化の選択がより重要になります。複合主キーは読み取りと書き込みの両方で効率的なアクセスを提供しますが、代理キーはテーブルの再編成を回避することで書き込みのみにメリットをもたらします。
結論
複合主キーと自動の両方-increment サロゲート キーは多対多のテーブルに使用できます。ただし、複合主キーのシンプルさとパフォーマンス上の利点により、ほとんどの場合、複合主キーが推奨されます。読み取りパフォーマンスが最重要である場合、またはインデックスのメンテナンスが懸念される場合、複合主キーが推奨されるオプションです。
以上が多対多テーブルの複合キーと代理キー: どちらの主キーがパフォーマンスに最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。