V MySQL není potřeba dávat symbolický název omezením cizího klíče. Pokud není zadán název, InnoDB automaticky vytvoří jedinečný název.
V každém případě toto je konvence, kterou používám:
fk_[referencing table name]_[referenced table name]_[referencing field name]
Příklad:
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);
Snažím se držet stejných názvů polí v odkazujících a odkazovaných tabulkách jako v user_id
ve výše uvedeném příkladu. Když to není praktické, připojím k názvu cizího klíče také název odkazovaného pole.
Tato konvence pojmenování mi umožňuje „uhádnout“ symbolické jméno pouhým pohledem na definice tabulek a navíc také zaručuje jedinečná jména.