For category->subcategory->item structure.
1) We can use three tables: category, subcateogry, item.
Or
2) We can use two tables: category, item. cateogry will have parent_id field, the "category" category's parent_id is 0, "subcategory" category's parent_id is its parent category's category_id.
Approach 1) is simple. And you have the flexiblity to design category and subcateogry table and view pages totallly different, with a lot of diffierent fields etc.
Approach 2) is a little tricky, sometimes you would have to use the left join etc. in sql to handle the level 1 category and level 2 category (subcategory) etc. Have to consider is this category a "level 1 category " or "level 2 category" etc. Plus, if your "level 1 category " or "level 2 category" are with very different fields, then one category table covers both "level 1 category " or "level 2 category" will not make too much sense.
But approach 2) has the flexibility to become category->subcategory->subsubcategory ..., the levels of the category in theory is unlimited etc. and also the item (such as the product) could be attached to any level of categories, not only to the bottom level category (subcategory)
I was using approach 2) like zen cart, oscommerce did too. But I found out, almost all my small business online sites to make it easier for the shoppers and merchants we will use strict category->subcategory->item structure. So no need for the flexibility for category->subcategory->subsubcategory ... and also no need for the flexiblity that sometimes products belong to level 1 category, sometimes products belong to leve 2 category (subcategory).
I am thinking approach 1) should be used instead of approach 2 if most of my systems are strict category->subcategory->item structure. Due to approach 2's advantages we never used. But if we use approach 2, we give up simplicity approach 1) has.
I have been switching from approach 1) and approach 2) in the projects of past 10 years, based on the team or the clients requests. But I found out, all projects ended up almost only using strict category->subcategory->item structure. And if that is the case, approach 1) should be used.
What is your experience?