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

外部キーは複数のプライマリキーを同時に参照できますか?

2025-03-22に投稿されました
ブラウズ:522

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

データベースデザインの複雑な外部キー関係を処理

シナリオ

この例では、共通のデータベース設計チャレンジを調査します。単一のテーブルが他の複数のテーブルから一次キーを参照する必要がある外部キー関係を作成する。 具体的なシナリオには、 demutions tableが必要なテーブルが含まれます。 問題とその解決策 問題は、控除の外部鍵は、

employes_ce

employes_sn

の両方のプライマリキーを直接参照できるかどうかです。 答えは、標準のリレーショナルデータベースで直接ではありません。 単一の外部キーは、単一の主キーのみを参照できます。 提案されたソリューションは、これを解決するために十分に構造化された継承モデルを活用します。 継承ベースのアプローチ テーブル

従業員

employes_ce

、および

employes_sn

は相続階層を表します。 従業員はベーステーブルであり、 employees_ce および employees_sn がそれから継承する専門のテーブルとして。 データベース構造: 従業員(id intプライマリキー、名前Varchar(255)) employes_ce(id int primary key、c​​e_spicific_attribute varchar(255)、employee_id int、foreign key(employee_id)参照従業員(ID)) employes_sn(id intプライマリキー、SN_SPIFIC_ATTRIBUTE VARCHAR(255)、Employee_Id int、外部キー(従業員_ID)参照従業員(ID))

解決:

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))
employes_sn

の両方への直接リンクの代わりに、控除テーブルは共通の親のテーブルを参照する必要があります。

控除(id int primary key、employee_id int、decuction_amount decimal(10,2)、...、foreign key(employee_id)参照従業員(id)) このアプローチは、参照の完全性を保証し、冗長性を回避します。 employee_id in decutions in speellose _ce または emplosines_sn の追加情報があるかどうかに関係なく、

従業員の従業員記録にリンクします。 この設計は、関係を効率的に管理し、データの一貫性を維持します。
            
最新のチュートリアル もっと>

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

Copyright© 2022 湘ICP备2022001581号-3