Możesz mieć wszystko w jednej tabeli, kategorii. Następnie masz kolumnę dla parentID. Jeśli parentID =0, to jest kategoria nadrzędna, jeśli to inny identyfikator, to podkategoria? Ta struktura obsługiwałaby podkategorie... nie jestem pewien, czy to jest dla Ciebie pomocne.
Przykładowe pola:
Table: category
categoryID
parentID
name
Przykładowe dane:
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