Jeżeli chcesz mieć dowolny poziom zagłębienia w podkategorie, to możesz zrobić taką tabelkę
CREATE TABLE kategorie (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
kategoria varchar(50) NOT NULL,
id_rodzica INT(10) NOT NULL DEFAULT = 0);
Wtedy, główne kategorie wpisujesz z id_rodzica jako 0 i w ten sposób je wyszukujesz. A podkategorie wpisujesz do bazy ustawiając id_rodzica na wybraną kategorię główną. Przykładowa zawartość:
ID kategoria id_rodzica
1 kategoriagł1 0
2 kategoriagł2 0
3 podkategoria1 1
4 podkategoria2 2
5 podpodkat1 3
itd, itd.
Czyli że podkategoria "podpodkat1" należy do podkategorii "podkategoria1" która zkolei należy do kategorii "kategoriagł1". A kategoria "kategoriagł1" ma id_rodzica = 0 więc już nie należy do żadnej.
A do konkretnych produktów, usług, osób należących do różnych kategorii tworzysz drugą tabelę:
CREATE TABLE produkty (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
nazwa VARCHAR(100) NOT NULL,
id_kategorii INT(10) NOT NULL);
tylko musisz pamiętać żeby produktom nadawać id_kategorii z najniższej podkategorii.
Teraz łatwo możesz znaleźć całe drzewko kategorii do której należy dany produkt i w drugą stronę zależnie od kategorii i wszystkich podkategorii możesz wyświetlać sobie produkty.