ホームページ >データベース >mysql チュートリアル >MySQL で複数列の主キーを参照する外部キーを定義する方法は?

MySQL で複数列の主キーを参照する外部キーを定義する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 01:32:131053ブラウズ

How to Define Foreign Keys Referencing Multi-Column Primary Keys in MySQL?

MySQL の複数列の主キーの外部キーを理解する

リレーショナル データベースでテーブル間のリレーションシップを作成する場合、その方法を理解することが不可欠です。外部キーを確立します。 MySQL では、一般的なシナリオに、複数列の主キーを持つテーブルを別のテーブルにリンクすることが含まれます。

2 つの主キー列、product_id とattribute_id を持つ ProductAttribute という名前のテーブルを考えてみましょう。 ProductAttribute テーブルを参照する別のテーブル ProductDetails を作成したいと考えています。

ProductAttribute テーブルにリンクする外部キーを ProductDetails に確立するには、次の構文を使用できます:

CREATE TABLE ProductDetails (
  [COLUMN DEFINITIONS]
  product_id INT NOT NULL,
  attribute_id INT NOT NULL,
  CONSTRAINT fk_product_details_product_attribute
    FOREIGN KEY (product_id, attribute_id)
    REFERENCES ProductAttribute(product_id, attribute_id)
) ENGINE=InnoDB;

重要考慮事項:

  • インデックス作成: MySQL では、外部キー参照のインデックス作成が必要です。上記の例では、fk_product_details_product_attribute 制約により、ProductDetails テーブルの product_id 列とattribute_id 列にインデックスが作成されます。
  • 制約構文: CONSTRAINT 句を使用すると、外部キー制約に名前を付けることができます。これにより、後で必要に応じて参照または変更することが簡単になります。
  • InnoDB 強制: InnoDB は、外部キー制約を強制する MySQL のストレージ エンジンです。別のストレージ エンジンである MyISAM は、外部キー制約を無視します。したがって、データの整合性を確保するには、テーブルが InnoDB を使用していることを確認することが重要です。

以上がMySQL で複数列の主キーを参照する外部キーを定義する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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