Mysql
 sql >> Base de données >  >> RDS >> Mysql

Y a-t-il un avantage à avoir une clé primaire auto-incrémentée dans un tableau croisé dynamique MySQL ?

Les messages et les catégories sont probablement plusieurs à plusieurs, et non un à plusieurs.

Une table de relations plusieurs-à-plusieurs est mieux faite quelque chose comme

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;

Avec cela, vous obtenez automatiquement des recherches "groupées" dans les deux sens, et vous évitez l'identifiant artificiel inutile pour la table.

(Au fait, N.B., un PK implicite est de 6 octets, pas de 8. Il y a un long article de Jeremy Cole sur le sujet.)

Une relation un-à-plusieurs n'a pas besoin de cette table supplémentaire. Au lieu de cela, ayez un identifiant dans l'autre table. Par exemple, une table City contiendra l'identifiant du pays.