Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que é uma convenção de nomenclatura adequada para MySQL FKs?


No MySQL, não há necessidade de dar um nome simbólico às restrições de chave estrangeira. Se um nome não for fornecido, o InnoDB cria um nome exclusivo automaticamente.

De qualquer forma, esta é a convenção que eu uso:
fk_[referencing table name]_[referenced table name]_[referencing field name]

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

Eu tento ficar com os mesmos nomes de campo nas tabelas de referência e referenciadas, como em user_id no exemplo acima. Quando isso não for prático, também acrescento o nome do campo referenciado ao nome da chave estrangeira.

Essa convenção de nomenclatura me permite "adivinhar" o nome simbólico apenas observando as definições da tabela e, além disso, também garante nomes exclusivos.