Min personliga preferens skulle vara att inte behålla duplicerade data i någon tabell, tills det har visat sig nödvändigt. Om du är emot att skriva JOIN frågor, kan du definiera en vy som innehåller frågan och du kan sedan glömma det.
Jag har tidigare upptäckt att korrekta index vanligtvis betyder att det inte är så mycket prestandaproblem med detta.
Om du finner det nödvändigt att hålla en sammanfattning av dina categories tabell (av prestanda eller andra skäl), överväg att skapa INSERT , UPDATE och DELETE utlösare på dina posts tabell så att uppdateringar kan göras av databasen istället för att förlita sig på att applikationsprogrammerarna kommer ihåg vad som måste göras.