web-dev-qa-db-ja.com

MySQLで外部キー制約を使用する理由

私は考えていた、

追加される型をルール化できると確信しているので、MySQLで制約を外部キーとして使用する動機は何ですか?

パフォーマンスは向上しますか?

43
Dejell

外部キー 強制 参照整合性 。これらの制約により、テーブルの行order_detailsとフィールドorder_idordersテーブルを参照すると、order_idordersテーブルに存在しない値。

外部キーはリレーショナルデータベースが機能している必要はありません(実際 MySQLのデフォルトのストレージ エンジンはFKをサポートしていません)が、関係の破壊や孤立した行(つまり、参照整合性)を回避するために不可欠です。 )。 [〜#〜] acid [〜の[〜#〜] c [〜#〜]には、データベースレベルで参照整合性を適用する機能が必要です#〜] 立ちます。

パフォーマンスに関する懸念については、一般にパフォーマンスコストがありますが、おそらく無視できます。すべての外部キー制約を設定することをお勧めします。他の方法では解決できない実際のパフォーマンス問題がある場合にのみ、それらを使用しないで実験してください。

66
Daniel Vassallo