8

MySQLデータベースを使用しています。私のリレーショナルデータモデルには、互いに1:1で関連する2つのエンティティがあります。私のスキーマでは、2つのテーブルの1つにFKフィールドを配置することで、1:1の関係を設定します。これは、他のテーブルのPKに関連しています。両方のテーブルにPKがあり、両方とも自動インクリメントBIGINTです。

ON DELETE CASCADE両方の方法で機能する動作をそれらに適用できるかどうか疑問に思っています。

つまり、A 1:1 Bは、[Aを削除するとBも削除される]だけでなく、[Bを削除するとAも削除される]ことを意味します。

これは、適切なアプリケーション設計の観点からは絶対に必要というわけではないかもしれませんが、実際に可能かどうか疑問に思っています。私が覚えている限り、PKにFK制約を課すことはできません。

4

1 に答える 1

12

双方向の関係が強制されている場合、そのようなレコードを挿入することは不可能です。鶏が先か卵が先か。テーブル#2に一致するレコードがないため、テーブル#1のレコードを挿入できません。また、テーブル#1にフックするものがないため、テーブル#2を挿入できません。

FK制約を一時的に無効にすることができますが(set foreign_key_checks = 0)、これは「実際の」システムでは絶対に行わないでください。これは、テーブルのロード順序が保証されないダンプのロードを目的としています。

于 2013-02-12T17:15:52.760 に答える