Embora os nomes das chaves estrangeiras possam ser qualquer coisa, é realmente uma boa prática seguir a convenção de colocar o nome da tabela em primeiro lugar.
A razão mais importante para isso é que os nomes de chaves estrangeiras devem ser exclusivos em um banco de dados (ao contrário dos nomes de índice, que devem ser únicos em cada tabela). Portanto, seguindo esta convenção, os nomes de chaves estrangeiras precisam ser exclusivos em cada tabela.
Pessoalmente, uso a convenção [table_name]_fk_[field_name]
.
Para nomear suas chaves estrangeiras, você precisará explicitamente explicitar a restrição na tabela, em vez de apenas a chave estrangeira.
Método simples (nomeação automática, resultará em [table_name]_ibfk_[index]
):
ALTER TABLE `[table_name]`
ADD FOREIGN KEY (`[field_name]`)
REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
Método explícito (resultará em [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]`);