ホームページ > データベース > mysql チュートリアル > 外部キーは複数の主キーを同時に参照できますか?

外部キーは複数の主キーを同時に参照できますか?

Barbara Streisand
リリース: 2025-01-11 10:21:43
オリジナル
124 人が閲覧しました

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

データベース設計における複雑な外部キー関係の処理

シナリオ

この例では、データベース設計の一般的な課題、つまり単一のテーブルが他の複数のテーブルの主キーを参照する必要がある外部キー関係の作成について説明します。 特定のシナリオには、deductions テーブルが employees_ce テーブルと employees_sn テーブルの両方にリンクする必要があることが含まれます。

問題とその解決策

問題は、deductions の外部キーが employees_ceemployees_sn の両方の主キーを同時に直接参照できるかどうかです。 答えは、直接ではなく、標準のリレーショナル データベース内にあるということです。 1 つの外部キーは 1 つの主キーのみを参照できます。

提案されたソリューションは、適切に構造化された継承モデルを活用してこれを解決します。

継承ベースのアプローチ

テーブル employeesemployees_ce、および employees_sn は継承階層を表します。 employees はベーステーブルであり、それを継承する特殊なテーブルとして employees_ceemployees_sn があります。

データベース構造:

<code class="language-sql">employees (id INT PRIMARY KEY, name VARCHAR(255))
employees_ce (id INT PRIMARY KEY, ce_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
employees_sn (id INT PRIMARY KEY, sn_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))</code>
ログイン後にコピー

解決策:

employees_ceemployees_sn の両方への直接リンクの代わりに、deductions テーブルは共通の親テーブル employees:

を参照する必要があります。
<code class="language-sql">deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))</code>
ログイン後にコピー

このアプローチにより、参照整合性が確保され、冗長性が回避されます。 employee_iddeductions は、従業員が employees または employees_ce に追加情報を持っているかどうかに関係なく、employees_sn の従業員レコードにリンクします。 この設計により、関係が効率的に管理され、データの一貫性が維持されます。

以上が外部キーは複数の主キーを同時に参照できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート