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.