Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist eine richtige Namenskonvention für MySQL-FKs?

In MySQL ist es nicht erforderlich, Fremdschlüsselbeschränkungen einen symbolischen Namen zu geben. Wenn kein Name angegeben wird, erstellt InnoDB automatisch einen eindeutigen Namen.

In jedem Fall ist dies die Konvention, die ich verwende:

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

Beispiel:

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

Ich versuche, in referenzierenden und referenzierten Tabellen bei denselben Feldnamen zu bleiben, wie in user_id im obigen Beispiel. Wenn dies nicht praktikabel ist, hänge ich auch den referenzierten Feldnamen an den Fremdschlüsselnamen an.

Diese Namenskonvention erlaubt es mir, den symbolischen Namen zu "erraten", indem ich mir die Tabellendefinitionen ansehe, und garantiert außerdem eindeutige Namen.