Bonjour.
Il serait plus judicieux d'utiliser le comportement Tree à mon avis.
Tu pourrais avoir tes catégories et sous-catégories dans la même table et il y a des méthodes qui facilitent la récupération, et la gestion des données dans la table.
Tu pourrais te retrouver avec les champs suivants dans ta table categories :
id, name, lft, rght, parent_id
Et dans ta table produits :
id, name, ... , category_id