Co do kategorii i podkategorii to ja już robiłem coś takiego... proponuję taką strukturę tabeli KATEGORIE:
Kod
kategorie
******************
categoryid SERIAL PRIMARY KEY auto_increment
category_name
category_parentid int(5) DEFAULT 0
category_description
category_parentid oznacza kategorię do której należy dana (czyli jeżeli kategoria Ogórki będzie miała categoryid=10 a kategori Kiszone category_parentid=10 to Kiszone będzie podkategorią Ogórki)...