Bir alt kategori, birden fazla ana kategorinin altı olabilir.
Mesela Kulaklık hem bilgisayar hemde cep telefonu ana kategorisinin alt kategorisidir.

kategori tablosunda kategori_id - ust_kategori_id şeklinde bir yapı olmalı. (mahalle- ilçe- il gibi)

müşteri siteye girdiğinde daha önce satın alınan ürünlerin kategorisine bakarak alt kategorideki ürünleri listeleyebilir siniz.

Select * from kategori where ust_kategori_id in(x,y,z)

müşteri kategorileri farklı birden fazla ürün aldı ise buna göre alt kategori ürünlerini listeler.
bu arada ürün satış adetlerine göre sıralama yapman müşteri ve satış için olumlu olur.