In MySQL is het niet nodig om een symbolische naam te geven aan externe sleutelbeperkingen. Als er geen naam wordt gegeven, maakt InnoDB automatisch een unieke naam aan.
Dit is in ieder geval de conventie die ik gebruik:
fk_[referencing table name]_[referenced table name]_[referencing field name]
Voorbeeld:
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);
Ik probeer dezelfde veldnamen te gebruiken in referentietabellen en tabellen waarnaar wordt verwezen, zoals in user_id
in het bovenstaande voorbeeld. Als dit niet praktisch is, voeg ik ook de veldnaam waarnaar wordt verwezen toe aan de naam van de refererende sleutel.
Deze naamgevingsconventie stelt me in staat om de symbolische naam te "raden" door alleen maar naar de tabeldefinities te kijken, en bovendien garandeert het ook unieke namen.