sql >> Database >  >> RDS >> Mysql

Wat is een goede naamgevingsconventie voor MySQL FK's?

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.



  1. Converteer uitvoer van MySQL-query naar utf8

  2. Hoe kom ik achter mijn MySQL-URL, host, poort en gebruikersnaam?

  3. Het beste uit PostgreSQL-logboeken halen

  4. Slaapstand:automatisch de db-tabellen maken/bijwerken op basis van entiteitsklassen