多態性外部キー制約: 多用途なアプローチ
従来の外部キー制約は、指定された 2 つのテーブル間に直接リンクを確立します。ただし、列が複数の考えられる親テーブルの 1 つを参照する多態性の関係が必要な場合はどうすればよいでしょうか?
複数のテーブルへの外部キーは可能ですか?
残念ながら、答えは否定的です。外部キー制約は、単一の親テーブルのみを参照できます。この制限は、データベース システムにおけるデータの整合性と一貫性の必要性から生じます。
実際的な考慮事項
固有の制限にもかかわらず、データベース システムの動作をエミュレートする実用的なアプローチがあります。複数のテーブルへの外部キー:
MySQL および PostgreSQL の例
MySQL では、次のようになります。ステートメントは共用体テーブルを作成します:
<code class="sql">CREATE TABLE union_table AS SELECT * FROM subordinates UNION ALL SELECT * FROM products;</code>
子テーブルの外部キー制約は次のようになります:
<code class="sql">ALTER TABLE images ADD FOREIGN KEY (person_id) REFERENCES union_table(id);</code>
PostgreSQL では、同様のアプローチが使用されます:
<code class="sql">CREATE TABLE union_table AS SELECT * FROM subordinates UNION ALL SELECT * FROM products;</code>
外部キー制約は次のようになります。
<code class="sql">ALTER TABLE images ADD FOREIGN KEY (person_id) REFERENCES union_table(id);</code>
結論
複数のテーブルへの直接外部キーは実現できませんが、代替戦略により多態性が可能になります。 SQL データベース システムにおける外部キー関係。これらの戦略は、データの整合性を維持しながら、複数の親テーブルに対応する柔軟性を提供します。
以上が外部キーは SQL で複数のテーブルを参照できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。