Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la convention de dénomination appropriée pour les FK MySQL ?

Dans MySQL, il n'est pas nécessaire de donner un nom symbolique aux contraintes de clé étrangère. Si aucun nom n'est donné, InnoDB crée automatiquement un nom unique.

En tout cas, voici la convention que j'utilise :

fk_[referencing table name]_[referenced table name]_[referencing field name]

Exemple :

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);

J'essaie de m'en tenir aux mêmes noms de champ dans les tables de référencement et référencées, comme dans user_id dans l'exemple ci-dessus. Lorsque ce n'est pas pratique, j'ajoute également le nom du champ référencé au nom de la clé étrangère.

Cette convention de nommage me permet de "deviner" le nom symbolique simplement en regardant les définitions de table, et en plus elle garantit également des noms uniques.