sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es una convención de nomenclatura adecuada para MySQL FK?

En MySQL, no hay necesidad de dar un nombre simbólico a las restricciones de clave externa. Si no se proporciona un nombre, InnoDB crea un nombre único automáticamente.

En cualquier caso, esta es la convención que uso:

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

Ejemplo:

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

Trato de mantener los mismos nombres de campo en las tablas referenciadas y referenciadas, como en user_id en el ejemplo anterior. Cuando esto no es práctico, también agrego el nombre del campo al que se hace referencia al nombre de la clave externa.

Esta convención de nomenclatura me permite "adivinar" el nombre simbólico con solo mirar las definiciones de la tabla y, además, también garantiza nombres únicos.