Det finns ingen anledning att ha mer än en tabell för "kategorier", oavsett om det är en kategori på toppnivå eller en underkategori. De är alla bara "kategorier".
Så, ha en enda tabell som heter "kategorier", med ett parent_id
fält:
// categories table
id
name
user_id
parent_id
När du vill dra alla kategorier på toppnivå kör du bara din fråga mot categories
tabell med ett villkor som parent_id
är null.
Sedan, när du vill dra underkategorier, kör bara frågan mot categories
tabell med villkoret parent_id = 123
(eller vad som helst).
Detta håller inte bara allting mycket renare, utan det möjliggör även expansion om du vill fortsätta lägga till sub-sub-sub-sub-subkategorier...etc.
Ett annat alternativ är att använda CakePHP's TreeBehavior .
Jag personligen använder hellre sättet jag föreslog ovan, men det kan bero på att jag inte har tagit mig tid att verkligen förstå detta beteende tillräckligt.