Очень интересная статья на эту тему http://leopard.in.ua/2009/02/07/postroenie-derevev/
Или добавить поле тега? Так устроена таксономия в друпале. Много ли будет категорий? Если категории будут в виде дерева, то надо делать mptt. Если простой список категорий, тогда проще использовать обычные теги.
P.S. Про деревья, примеры использования http://proft.me/2010/09/7/drevovidnye-struktury-dannyh-v-django/