Aus der MySQL-Dokumentation :
InnoDB ermöglicht es einer Fremdschlüsseleinschränkung, auf einen nicht eindeutigen Schlüssel zu verweisen. Dies ist eine InnoDB-Erweiterung für Standard-SQL.
Es gibt jedoch einen praktischen Grund, Fremdschlüssel für nicht eindeutige Spalten der referenzierten Tabelle zu vermeiden. Das heißt, was sollte in diesem Fall die Semantik von "ON DELETE CASCADE" sein?
Die Dokumentation gibt weitere Hinweise :
Die Handhabung von Fremdschlüsselreferenzen auf nicht eindeutige Schlüssel oder Schlüssel, die NULL-Werte enthalten, ist nicht gut definiert (...) Es wird empfohlen, Fremdschlüssel zu verwenden, die nur EINZIGARTIGE (einschließlich PRIMARY) und NOT NULL-Schlüssel referenzieren.