Моето лично предпочитание би било да не съхранявам дублирани данни в нито една таблица, докато не се докаже, че е необходимо. Ако не сте склонни да пишете JOIN заявки, можете да дефинирате изглед, който съдържа заявката, и след това можете да забравите за нея.
В миналото съм открил, че правилните индекси обикновено означават, че няма твърде голям проблем с производителността.
Ако сметнете за необходимо да поддържате обобщена информация за вашите categories таблица (за производителност или други причини), обмислете създаването на INSERT , UPDATE и DELETE задейства върху вашите posts таблица, така че актуализациите да могат да се извършват от базата данни, вместо да се разчита на приложните програмисти да запомнят какво трябва да се направи.