Вы уверены, что у вас будет только 3 уровня дерева категорий?
Что я сделал в таких случаях, так это то, что я использую одну таблицу с дополнительным родительским идентификатором, поэтому, если родительский идентификатор равен 0, что означает, что это корень дерева, дочерний элемент в дереве, такой как ваша подкатегория, будет содержать 1 для родительского идентификатора и так далее. Вот как то так:
1. Category (parent 0)
3. Subcategory (parent 1)
4. Subsubcategory (parent 3)
2. Category (parent 0)
тогда вы можете рекурсивно отобразить их или использовать их.
Это только одна модель (таблица) с именем Category, и в приведенном выше примере используются их имена.