W MySQL nie ma potrzeby nadawania nazwy symbolicznej ograniczeniom klucza obcego. Jeśli nazwa nie zostanie podana, InnoDB automatycznie utworzy unikalną nazwę.
W każdym razie jest to konwencja, której używam:
fk_[referencing table name]_[referenced table name]_[referencing field name]
Przykład:
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);
Staram się trzymać tych samych nazw pól w tabelach odwołujących się i przywoływanych, jak w user_id
w powyższym przykładzie. Gdy nie jest to praktyczne, dołączam również nazwę pola, do którego się odwołuje, do nazwy klucza obcego.
Ta konwencja nazewnictwa pozwala mi „odgadnąć” nazwę symboliczną po prostu patrząc na definicje tabeli, a ponadto gwarantuje również unikalne nazwy.