sql >> Base de Datos >  >> RDS >> Mysql

¿Hay algún beneficio en tener una clave principal de incremento automático en una tabla dinámica de MySQL?

Las publicaciones y categorías probablemente sean de muchos a muchos, no de uno a muchos.

Una tabla de relaciones de muchos a muchos se hace mejor algo como

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 eso, obtiene automáticamente búsquedas "agrupadas" en ambas direcciones y evita la identificación artificial innecesaria para la tabla.

(Por cierto, N.B., un PK implícito es de 6 bytes, no de 8. Hay una publicación larga de Jeremy Cole sobre el tema).

Una relación de uno a muchos no necesita esta tabla adicional. En su lugar, tenga una identificación dentro de la otra tabla. Por ejemplo, una tabla de ciudad tendrá la identificación del país.