Mysql
 sql >> Database >  >> RDS >> Mysql

Una chiave esterna può fare riferimento a un indice non univoco?

Da documentazione MySQL :

InnoDB consente a un vincolo di chiave esterna di fare riferimento a una chiave non univoca. Questa è un'estensione di InnoDB per SQL standard.

Tuttavia, esiste un motivo pratico per evitare chiavi esterne su colonne non univoche della tabella di riferimento. Cioè, quale dovrebbe essere la semantica di "ON DELETE CASCADE" in quel caso?

La documentazione fornisce ulteriori consigli :

La gestione dei riferimenti di chiavi esterne a chiavi non univoche o chiavi che contengono valori NULL non è ben definita (...) Si consiglia di utilizzare chiavi esterne che facciano riferimento solo a chiavi UNIQUE (inclusa PRIMARY) e NOT NULL.