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

C'è qualche vantaggio nell'avere una chiave primaria a incremento automatico in una tabella pivot MySQL?

I post e le categorie sono probabilmente molti a molti, non uno a molti.

Una tabella di relazione molti-a-molti è meglio fare qualcosa come

CREATE TABLE a_b (
a_id ... NOT NULL,
b_id ... NOT NULL,
PRIMARY KEY (a_id, b_id),
INDEX(b_id, a_id) -- include this if you need to go both directions
) ENGINE = InnoDB;

Con ciò, ottieni automaticamente ricerche "raggruppate" in entrambe le direzioni ed eviti l'id artificiale non necessario per la tabella.

(A proposito, NB, un PK implicito è 6 byte, non 8. C'è un lungo post di Jeremy Cole sull'argomento.)

Una relazione uno-a-molti non ha bisogno di questa tabella aggiuntiva. Invece, avere un ID all'interno dell'altra tabella. Ad esempio, una tabella Città conterrà l'ID del Paese.