sql >> Databasteknik >  >> RDS >> Mysql

Vad är en korrekt namnkonvention för MySQL FKs?

I MySQL finns det inget behov av att ge ett symboliskt namn till begränsningar för främmande nyckel. Om inget namn anges skapar InnoDB ett unikt namn automatiskt.

Det här är i alla fall konventionen som jag använder:

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

Exempel:

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

Jag försöker hålla mig till samma fältnamn i refererande och refererade tabeller, som i user_id i exemplet ovan. När detta inte är praktiskt lägger jag också till det refererade fältnamnet till namnet på den främmande nyckeln.

Denna namnkonvention låter mig "gissa" det symboliska namnet bara genom att titta på tabelldefinitionerna, och dessutom garanterar den unika namn.



  1. Hur man inte kallar Hekaton inbyggt kompilerade lagrade procedurer

  2. Vad är PL/SQL-lagrade procedurer i Oracle Database

  3. SQL Server trunkerar tyst varchars i lagrade procedurer

  4. Logga alla frågor i mysql