2011-03-10 5 views
1

MySQLの外部キーは常に良いアイデアですか?私が使用しているフィールドがすべての行に必要であり、それが別のテーブルを参照している場合、100%の時間に外部キーを使用する必要がありますか?私のように思えますが、データの整合性を維持するために、常にON DELETE CASCADEを設定したいと思うようです。MySQLの外部キー - 常に良いアイデアですか?

答えて

1

関係がある場合は、外部キーを設定することをお勧めします。外部キーは、のキーリレーショナルデータベースの一種です。ただし、カスケード削除は必ずしも必要ではありません。外部キーを実装するだけで、データの整合性を維持できます。外部キー制約と競合すると、削除は失敗します。

+1

「あなたの外部キー制約と競合すると、すべての削除が失敗します。」 - これはどういう意味ですか?失敗する例を教えてもらえますか? – Webnet

+0

テーブル 'a'はテーブル' b'の 'id'カラムを参照するカラム' b_id'を持っています。 'a'で参照されているレコードを' b'から削除しようとすると、エラーが発生します。つまり、削除されず、エラーメッセージが表示されます。正直言って、この場合mysqlの動作は正確にはわかりませんが、失敗するはずです。 – canon

1

外部キーは、の関係のリレーショナルのデータベースです。 OLTPシステムで使用できるときはいつでも使用してください。