Příspěvky a kategorie jsou pravděpodobně many-to-many, ne one-to-many.
Tabulka vztahů mnoho k mnoha je nejlepší udělat něco jako
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;
Díky tomu automaticky získáte „shluková“ vyhledávání v obou směrech a vyhnete se zbytečnému umělému id pro tabulku.
(Mimochodem, N.B., implicitní PK má 6 bajtů, ne 8. Na toto téma je dlouhý příspěvek od Jeremyho Colea.)
Vztah jeden k mnoha tuto tabulku navíc nepotřebuje. Místo toho mějte jedno ID uvnitř druhé tabulky. Například tabulka Město bude obsahovat ID země.