Maison >base de données >tutoriel mysql >Comment référencer une clé primaire à deux colonnes avec des clés étrangères dans MySQL ?

Comment référencer une clé primaire à deux colonnes avec des clés étrangères dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 07:17:10871parcourir

How to Reference a Two-Column Primary Key with Foreign Keys in MySQL?

Référencement d'une clé primaire à deux colonnes dans MySQL avec des clés étrangères

Lors de la conception de tables de bases de données relationnelles, il est courant de rencontrer des situations où plusieurs colonnes forment la clé primaire d’une table et une autre table doit la référencer. Dans MySQL, la création d'une clé étrangère pour établir un lien avec une telle clé primaire composée nécessite certaines considérations spécifiques.

Pour établir une clé étrangère dans une autre table qui fait référence à la clé primaire à deux colonnes (product_id,attribut_id) :

CREATE TABLE MyReferencingTable (
    [COLUMN DEFINITIONS]
    refcol1 INT NOT NULL,
    refcol2 INT NOT NULL,
    CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
    REFERENCES OtherTable(product_id, attribute_id)
) ENGINE=InnoDB;

Cette syntaxe dicte plusieurs points clés :

  • Indexation du référencement Colonnes : MySQL nécessite que les colonnes de clé étrangère soient indexées, donc les colonnes de référence (refcol1, refcol2) doivent avoir des index.
  • Utilisation de la syntaxe de contrainte : La syntaxe CONSTRAINT vous permet de nommer la contrainte, ce qui la rend plus facile à gérer et à manipuler plus tard si nécessaire.
  • Utiliser Moteur InnoDB : InnoDB applique strictement les clés étrangères, garantissant l'intégrité des données. MyISAM, quant à lui, analyse les contraintes de clé étrangère mais les ignore finalement.

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