ホームページ >データベース >mysql チュートリアル >外部キーは異なるテーブル内の複数の主キーを参照できますか? 最良の代替キーは何ですか?

外部キーは異なるテーブル内の複数の主キーを参照できますか? 最良の代替キーは何ですか?

DDD
DDDオリジナル
2025-01-11 08:16:41307ブラウズ

Can a Foreign Key Reference Multiple Primary Keys in Different Tables, and What's the Best Alternative?

テーブル間の外部キー参照

この記事では、1 つのテーブルに外部キーを作成して、他の複数のテーブルの主キーを参照する可能性を検討します。具体的には、質問者が提示したシナリオを中心に展開します。

シーン解釈

質問者には employees_ceemployees_sn という 2 つのテーブルがあり、それぞれに独自の主キー列があります。また、deductions と呼ばれる 3 番目のテーブルもあり、employees_ceemployees_sn の主キーを参照するために外部キーが必要です。提供されている例は、この状況をさらに説明しています:

<code>employees_ce
--------------
empid   name
khce1   prince

employees_sn
----------------
empid   name
khsn1   princess</code>
<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

解決策

質問者の目標は技術的には達成可能ですが、データベース設計におけるベストプラクティスではありません。推奨される方法は、2 つのテーブルをリンクする中間テーブルを定義することです。例:

<code>employees
----------------
empid   name

employees_types
---------------
empid   type
khce1   ce
khsn1   sn</code>

この設定では、deductions テーブルに employees テーブルの empid 列を参照する外部キーを含めることができるため、3 つのテーブル間に単純な関係が作成されます。

<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

中間テーブル方式のメリット

中間テーブル方式には次の利点があります:

  • 従業員を参照するための単一の参照ポイントを提供することで、データ管理を簡素化します。
  • これにより、不整合やデータ整合性の問題を引き起こす可能性がある、複数の主キーを参照する外部キーの問題が回避されます。
  • deductions テーブルを変更せずに他の従業員タイプを追加できるため、柔軟性と拡張性が実現します。

以上が外部キーは異なるテーブル内の複数の主キーを参照できますか? 最良の代替キーは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。