Minha preferência pessoal seria não manter dados duplicados em nenhuma tabela, até que se prove necessário. Se você não gosta de escrever
JOIN consultas, você pode definir uma exibição que contém a consulta e pode esquecê-la. Descobri no passado que índices adequados geralmente significam que não há muito problema de desempenho com isso.
Se você achar necessário manter um resumo da contagem de suas
categories tabela (por desempenho ou outros motivos), considere criar INSERT , UPDATE e DELETE acionadores em suas posts tabela para que as atualizações possam ser feitas pelo banco de dados em vez de depender dos programadores de aplicativos para lembrar o que deve ser feito.