Maison >base de données >tutoriel mysql >Comment créer une clé étrangère référençant une clé primaire multi-colonnes dans MySQL ?

Comment créer une clé étrangère référençant une clé primaire multi-colonnes dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-01 18:24:10747parcourir

How to Create a Foreign Key Referencing a Multi-Column Primary Key in MySQL?

Référencement d'une clé primaire multi-colonnes dans MySQL

Dans un scénario de base de données relationnelle où une table possède une clé primaire composite définie par plusieurs colonnes (par exemple, product_id,attribut_id), une question courante se pose : comment une autre table peut-elle établir une relation de clé étrangère avec cette clé primaire multi-colonnes ? clé ?

Solution :

Syntaxe de clé étrangère composite :

La solution consiste à définir une clé étrangère composite dans le référencement tableau. La syntaxe de ces clés étrangères est la suivante :

CREATE TABLE MyReferencingTable (
    [COLUMN DEFINITIONS]
    refcol1 INT NOT NULL,
    refcol2 INT NOT NULL,
    CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                        REFERENCES OtherTable(col1, col2)
) ENGINE=InnoDB;
  • refcol1 et refcol2 : Colonnes de la table de référencement qui forment la clé composite de clé étrangère.
  • col1 et col2 : Colonnes de la table référencée qui constituent la table principale key.
  • fk_mrt_ot : Un nom de contrainte pour cette clé étrangère (facultatif mais recommandé).

Considérations clés :

  • Indexation : MySQL nécessite que les colonnes de clé étrangère soient indexé, garantissant des opérations de jointure efficaces.
  • Syntaxe CONSTRAINT : L'utilisation de la syntaxe de contrainte fournit une référence nommée à la clé étrangère, facilitant ainsi les modifications ou la suppression ultérieures.
  • Moteur : InnoDB est un moteur transactionnel qui applique des contraintes de clé étrangère, mais MyISAM (un moteur non transactionnel) ignore la clé étrangère spécifications.

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