Для внешнего ключа обязательно наличие индекса, иначе его не создать. Если индекса нет, при создании внешнего ключа он создаётся автоматически, поэтому может казаться, что связи между ними нет.
MySQL requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan. In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order. Such an index is created on the referencing table automatically if it does not exist. This index might be silently dropped later, if you create another index that can be used to enforce the foreign key constraint. index_name, if given, is used as described previously.
https://dev.mysql.com/doc/refman/5.7/en/create-tab...