Я всегда думаю, что таким образом:
- сколько элементов есть? Если более 3 я бы пошел с db
- это приложение для меня или клиента? Если это для клиента, я бы пошел с db (немного crud interace в admin, чтобы он мог добавлять/удалять/изменять категории самостоятельно даже после окончания разработки).
Такие вещи, как категории, являются данные, которые приходят от клиентов - если они приходят от клиентов предоставить клиентам контроль, что находится внутри (и сэкономить время на изменения исходного кода). Таким образом, они могут предоставить файл excel/cvs, который вы можете использовать для загрузки db с исходными записями (и без изменения исходного кода). Кроме того, проще сделать , чтобы сделать разные трюки в SQL (присоединяется), если категории находятся в db.
IMHO Единственное место, где я бы использовал хард-код хеш-массива, - это некоторые (2-3) атрибуты нескольких значений, такие как роли пользователей (конечно, если они статичны).