sql >> Database teknologi >  >> RDS >> Mysql

Hvad er en korrekt navnekonvention for MySQL FK'er?

I MySQL er der ingen grund til at give et symbolsk navn til fremmednøglebegrænsninger. Hvis et navn ikke er givet, opretter InnoDB automatisk et unikt navn.

Under alle omstændigheder er dette den konvention, jeg bruger:

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

Eksempel:

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

Jeg prøver at holde mig til de samme feltnavne i referencetabeller og refererede tabeller, som i user_id i ovenstående eksempel. Når dette ikke er praktisk, tilføjer jeg også det refererede feltnavn til det fremmede nøglenavn.

Denne navnekonvention giver mig mulighed for at "gætte" det symbolske navn blot ved at se på tabeldefinitionerne, og derudover garanterer det også unikke navne.



  1. Brug af store bogstaver i dag- og månedsnavne ved formatering af datoer i Oracle

  2. Træk en måned fra en dato i MariaDB

  3. Automatiseret test af PostgreSQL-sikkerhedskopier

  4. MySQL LEFT JOIN, GROUP BY og ORDER BY fungerer ikke som påkrævet