per le categorie protresti creare una tabella unica, e mettere un campo chiamato "genitore", se vale 0 è una categoria, se invece è una sottocategoria metterai nel campo genitore l'id della categoria principale a cui deve sottostare.

Nella tabella prodotti metti un solo campo categoria, e poi ti scrivi una funzione che dato l'id della categoria ti dice se è nella categoria principale o se è figlia.

ciao