Mysql
 sql >> Base de données >  >> RDS >> Mysql

Une clé étrangère peut-elle référencer un index non unique ?

À partir de la documentation MySQL :

InnoDB permet à une contrainte de clé étrangère de référencer une clé non unique. Il s'agit d'une extension InnoDB du SQL standard.

Cependant, il existe une raison pratique d'éviter les clés étrangères sur les colonnes non uniques de la table référencée. Autrement dit, quelle devrait être la sémantique de "ON DELETE CASCADE" dans ce cas ?

La documentation conseille en outre :

La gestion des références de clés étrangères à des clés non uniques ou contenant des valeurs NULL n'est pas bien définie (...) Il est conseillé d'utiliser des clés étrangères qui référencent uniquement des clés UNIQUE (y compris PRIMARY) et NOT NULL.