Быть этим, они должны быть уникальными, что я должен назвать FK в MySQL DB?
В MySQL нет необходимости задавать символическое имя ограничениям внешнего ключа. Если имя не задано, InnoDB создает уникальное имя автоматически.
В любом случае, я использую следующее соглашение:
fk_[referencing table name]_[referenced table name]_[referencing field name]
Пример:
CREATE TABLE users(
user_id int,
name varchar(100)
);
CREATE TABLE messages(
message_id int,
user_id int
);
ALTER TABLE messages ADD CONSTRAINT fk_messages_users_user_id
FOREIGN KEY (user_id) REFERENCES users(user_id);
Я стараюсь придерживаться одинаковых имен полей в ссылающейся и ссылаемой таблицах, как user_id
в приведенном выше примере. Когда это нецелесообразно, я также добавляю имя ссылающегося поля к имени внешнего ключа.
Это соглашение об именовании позволяет мне "угадать" символьное имя, просто взглянув на определения таблиц, и, кроме того, гарантирует уникальность имен.