Jak wskazuje dokumentacja MySQL dotycząca kluczy obcych :
Tak więc, jeśli używasz innodb, MySQL nie pozwala na tworzenie klucza obcego w polu, które nie jest skrajnym lewym polem w indeksie.
Powodem jest to, że w indeksie wielokolumnowym nie można wyszukać wartości na podstawie pola, które nie znajduje się najbardziej po lewej stronie, dlatego indeks nie może być użyty do szybkiego wyszukania wartości do sprawdzenia klucza obcego.
To zachowanie indeksów MySQL jest opisane w dokumentacji MySQL na indeksy wielokolumnowe :