Хотя имена внешних ключей могут быть любыми, на самом деле хорошей практикой является соблюдение соглашения о том, чтобы ставить имя таблицы первым.
Наиболее важной причиной этого является то, что имена внешних ключей должны быть уникальными в базе данных (в отличие от имен индексов, которые должны быть уникальными только в каждой таблице). Таким образом, следуя этому соглашению, имена внешних ключей должны быть уникальными только в каждой таблице.
Лично я использую соглашение [table_name]_fk_[field_name]
.
Чтобы присвоить имена своим внешним ключам, вам придется явно прописать в таблице ограничение, а не только внешний ключ.
Простой метод (автоматическое именование, приведет к [table_name]_ibfk_[index]
):
ALTER TABLE `[table_name]`
ADD FOREIGN KEY (`[field_name]`)
REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
Явный метод (приведет к [table_name]_fk_[field_name]
):
ALTER TABLE `[table_name]`
ADD CONSTRAINT `[table_name]_fk_[field_name]`
FOREIGN KEY (`[field_name]`)
REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);