Maison >base de données >tutoriel mysql >Comment définir des clés étrangères référençant des clés primaires multicolonnes dans MySQL ?

Comment définir des clés étrangères référençant des clés primaires multicolonnes dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 01:32:131065parcourir

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

Comprendre les clés étrangères pour les clés primaires multicolonnes dans MySQL

Lors de la création de relations entre les tables dans une base de données relationnelle, il est essentiel de comprendre comment pour établir des clés étrangères. Dans MySQL, un scénario courant consiste à lier une table à une autre table avec une clé primaire multi-colonnes.

Considérons une table nommée ProductAttribute qui comporte deux colonnes de clé primaire : product_id etattribut_id. Vous souhaitez créer une autre table, ProductDetails, qui fait référence à la table ProductAttribute.

Pour établir une clé étrangère dans ProductDetails qui renvoie à la table ProductAttribute, vous pouvez utiliser la syntaxe suivante :

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;

Important Considérations :

  • Indexation : MySQL nécessite que les références de clés étrangères soient indexées. Dans l'exemple ci-dessus, la contrainte fk_product_details_product_attribute crée un index sur les colonnes product_id et attribue_id dans la table ProductDetails.
  • Syntaxe de la contrainte : La clause CONSTRAINT vous permet de nommer la contrainte de clé étrangère. Cela simplifie le référencement ou la modification ultérieure si nécessaire.
  • Application d'InnoDB : InnoDB est un moteur de stockage dans MySQL qui applique des contraintes de clé étrangère. MyISAM, un autre moteur de stockage, ignore les contraintes de clé étrangère. Par conséquent, il est crucial de s'assurer que vos tables utilisent InnoDB pour garantir l'intégrité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn