「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 外部キーは SQL で複数のテーブルを参照できますか?

外部キーは SQL で複数のテーブルを参照できますか?

2024 年 11 月 20 日に公開
ブラウズ:212

Can a Foreign Key Reference Multiple Tables in SQL?

多態性外部キー制約: 多彩なアプローチ

従来の外部キー制約は、指定された 2 つのテーブル間に直接リンクを確立します。ただし、列が複数の考えられる親テーブルの 1 つを参照する多態性リレーションシップが必要な場合はどうすればよいですか?

複数のテーブルへの外部キーは可能ですか?

残念ながら、答えは否定的です。外部キー制約は、単一の親テーブルのみを参照できます。この制限は、データベース システムにおけるデータの整合性と一貫性の必要性から生じます。

実際的な考慮事項

固有の制限にもかかわらず、データベース システムの動作をエミュレートする実用的なアプローチがあります。複数のテーブルへの外部キー:

  1. ユニオン テーブル: 可能なすべての列を組み込んだ単一のユニオン テーブルを作成します親テーブル。子テーブルの外部キー列は共用体テーブルを参照します。データを挿入または更新する場合、ユニオン テーブルによって、どの実際の親テーブルに挿入または更新するかが決定されます。
  2. タイプ列: 可能な親テーブルのタイプを区別するために、子テーブルにタイプ列を導入します。 。外部キー列は、type 列で指定された型に対応する親テーブルを参照します。

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 データベース システムにおけるキー関係。これらの戦略は、データの整合性を維持しながら、複数の親テーブルに対応する柔軟性を提供します。

リリースステートメント この記事は次の場所に転載されています: 1729692611 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3