私はいつも外来キー制約を使用するように教えられてきたので、これは奇妙な質問です。しかし、私は、参照が削除されたときに、歴史的な目的のために外部キー参照値を保持しなければならない場合があります。外部キーには常に制約が必要ですか?
これは、タスクオカレンスが繰り返しルールを含む親タスクを参照するタスク管理システムです。この親タスクは削除できますが、オカレンス自体は存在しない親IDと一致する必要があります。親タスクが見つからない場合、システムは単純にエラーを返します。たとえば、「親タスクはもう存在しません」。カスケードで親IDをnullに設定できない理由は、そのIDが識別キーとしてオカレンス内の他の場所で使用されているためです。
もう1つの例:プレイリストから削除されたYouTube動画はどうですか?同様の状況の権利ですか?プレイリストで参照されていますが、ビデオが存在しないため、代わりにプレイリストにエラーが返されます。
私は単純に外部キーを定義せず、parent_id参照列を通常の列として作成するだけですか?私はちょうど1つのテーブルが別のテーブルを参照するケースに遭遇したときに、これが通常どのように処理されるかを確かめたいが、前者は後者の存在によって制約を受けない。
技術的には、 'ON DELETE SET NULL'という原因がこれを処理します。あなたの質問が理論的であれば:はい、することができます:) – Koshinae