You could just have one categories table, and in it have a column for "parent" category, which would contain the ID of the category for which this row is a sub-category. If the value of "parent" is set to null, or zero, or whatever other special value you want to use, then it would be considered a top-level category.