多態性外部キー制約: 多彩なアプローチ
従来の外部キー制約は、指定された 2 つのテーブル間に直接リンクを確立します。ただし、列が複数の考えられる親テーブルの 1 つを参照する多態性リレーションシップが必要な場合はどうすればよいですか?
複数のテーブルへの外部キーは可能ですか?
残念ながら、答えは否定的です。外部キー制約は、単一の親テーブルのみを参照できます。この制限は、データベース システムにおけるデータの整合性と一貫性の必要性から生じます。
実際的な考慮事項
固有の制限にもかかわらず、データベース システムの動作をエミュレートする実用的なアプローチがあります。複数のテーブルへの外部キー:
MySQL および PostgreSQL の例
MySQL では、次のようになります。ステートメントはユニオンテーブルを作成します:
CREATE TABLE union_table AS
SELECT * FROM subordinates
UNION ALL
SELECT * FROM products;
子テーブルの外部キー制約は次のようになります:
ALTER TABLE images
ADD FOREIGN KEY (person_id) REFERENCES union_table(id);
PostgreSQL では、同様のアプローチが使用されます:
CREATE TABLE union_table AS
SELECT * FROM subordinates
UNION ALL
SELECT * FROM products;
外部キー制約は次のようになります:
ALTER TABLE images
ADD FOREIGN KEY (person_id) REFERENCES union_table(id);
結論
複数のテーブルへの直接外部キーは実現できませんが、代替戦略により多態性外部キーが可能になります。 SQL データベース システムにおけるキー関係。これらの戦略は、データの整合性を維持しながら、複数の親テーブルに対応する柔軟性を提供します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3