Berichten en categorieën zijn waarschijnlijk veel-op-veel, niet één-op-veel.
Een veel-op-veel-relatietabel kun je het beste doen als
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;
Daarmee krijg je automatisch "geclusterde" zoekopdrachten in beide richtingen en vermijd je de onnodige kunstmatige id voor de tabel.
(Trouwens, N.B., een impliciete PK is 6 bytes, niet 8. Er is een lange post van Jeremy Cole over dit onderwerp.)
Een een-op-veel-relatie heeft deze extra tabel niet nodig. Plaats in plaats daarvan één id in de andere tabel. Een stad-tabel zal bijvoorbeeld de id voor het land bevatten.