Je zou alles in één tabel kunnen hebben, categorie. Maak dan een kolom voor parentID. Als parentID =0, is het een hoofdcategorie, als het een andere ID is, dan is het een subcategorie? Deze structuur zou sub-subcategorieën ondersteunen... ik weet niet zeker of dat nuttig voor je is.
Voorbeeldvelden:
Table: category
categoryID
parentID
name
Voorbeeldgegevens:
categoryID : 1
parentID : 0
name : hot
categoryID : 2
parentID : 0
name: cold
categoryID : 3
parentID : 2
name : a soup that's cold
categoryID : 4
parentID: 1
name: a soup that's hot