単一の外部キーが複数のテーブルを指すことができるポリモーフィックな関連付けは、外部キー制約の厳格な性質により MySQL に課題をもたらします。 標準の外部キーには固定ターゲット テーブルが必要なため、条件付き参照が不可能になります。
解決策は「スーパーテーブル」戦略にあります。中央のテーブル (Commentable
と呼びます) が仲介者として機能します。 このテーブルには一意の識別子 (疑似キー) が含まれており、ポリモーフィックな関連付けが必要な他のすべてのテーブルの共通参照ポイントとして機能します。
このアプローチはオブジェクト指向の設計原則を反映しています。 BlogPosts
や UserPictures
などのテーブルは、事実上、この共有識別子を介して Commentable
スーパーテーブルから継承します。この共有 id
により、さまざまなコンテンツ タイプ間でデータの整合性が維持されます。
重要なことは、レコードをサブタイプ テーブル (BlogPosts
など) に追加する前に、まず対応するエントリを Commentable
テーブルに作成して擬似キーを生成する必要があります。 これにより、関係が適切に管理され、ポリモーフィックな関連付けの複雑さに対応しながら、従来の外部キー システムの動作を模倣することが保証されます。
以上が条件付き外部キー制約なしで MySQL にポリモーフィックな関連付けを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。