ホームページ > データベース > mysql チュートリアル > MySQL 外部キーは一意でないインデックスを参照できますか?またその影響は何ですか?

MySQL 外部キーは一意でないインデックスを参照できますか?またその影響は何ですか?

Mary-Kate Olsen
リリース: 2025-01-08 09:01:42
オリジナル
437 人が閲覧しました

Can MySQL Foreign Keys Reference Non-Unique Indices, and What are the Implications?

MySQL 外部キーは非一意のインデックスを参照します

従来のデータベース理論とは異なり、MySQL では、参照先テーブル内の非一意キーを参照する外部キー制約が許可されています。これにより、特に「ON DELETE CASCADE」動作を処理する場合、制約の実行に曖昧さが生じる可能性があります。

外部キー制約を理解する

外部キー制約により、子テーブル (Table1) の行が親テーブル (Table2) の有効なデータの行を参照することが保証されます。通常、この制約には、参照される列 (両方のテーブルの列 2) 間の 1 対 1 の関係が必要です。

MySQL の一意でないインデックスの参照

ただし、MySQL では、外部キーは一意でない列 (Table2 の列 2) を参照できます。これにより、従来の 1 対 1 の要件が緩和され、複数の子テーブル行が親列の同じ値を参照できるようになります。非一意のインデックスは、複数の行に存在する可能性のある値を検索する際のクエリのパフォーマンスを向上させるために存在します。

実際的な考慮事項

MySQL はこの動作をサポートしていますが、実際的な理由から、一意でないカラムを参照する外部キーは避けるべきです。 「ON DELETE CASCADE」動作を使用する場合、親テーブル (Table2) の行を削除すると、子テーブル (Table1) の複数の行がカスケード削除され、意図しない結果が生じる可能性があります。

MySQL ドキュメント ガイド

MySQL のドキュメントでは、一意でないキーまたは null 許容キーを参照する外部キーを使用しないことを明示的に推奨しています。明確に定義された動作を実現するために、外部キーを一意の非 null キーのみを参照するように制限することをお勧めします。

以上がMySQL 外部キーは一意でないインデックスを参照できますか?またその影響は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート