Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Prosze o pomoc w zaprojektowniu tabel multikategorii
Forum PHP.pl > Forum > Przedszkole
htmlxp
Witam,

Bardzo prosze kogoś doświadczonego, by podpowiedział mi jak zrobić multikategorie... czyli

- kategoria glowna > do niej dodawane sa podkategorie
- - podkategoria > do niej dodawane sa wpisy
- - - miejscowosc > podkategoria podkategorii, dodawana do wiecej niz jednej podkategorii
- - - - wpis > dodawany do miejscowosci i podkategorii

Bardzo prosze o porady jak najlepiej to zaprojektowac w bazie danych.
CuteOne
kategorie (wraz z podkategoriami)
id | id_parent | depth | name | status
1 | 0 | 1 | Główna | 1
2 | 0 | 1 | Główna 2 | 1
3 | 1 | 2 | Podkategoria | 1

miejscowosc
id | miejscowosc

miejscowosc_kategorie
id_miejscowosci | id_kategorii

wpis
id | wpis

wpis_miejscowosci
id_wpis | id_miejscowosci

wpis_kategorie
id_wpis | id_kategorii
htmlxp
Witaj,
w "kategorie" nie mogly by byc jeszcze miejscowosci ? czyli

Kod
id | id_parent | depth | name | status
1 | 0 | 1 | Główna | 1
2 | 0 | 1 | Główna 2 | 1
3 | 1 | 2 | Podkategoria | 1
4 | 3 | 3 | miejscowosc | 1


i pytanie, po co parametr "depth" ? oraz kolejne wymienione tabele czyli :
Kod
miejscowosc
id | miejscowosc

miejscowosc_kategorie
id_miejscowosci | id_kategorii

wpis
id | wpis

wpis_miejscowosci
id_wpis | id_miejscowosci

wpis_kategorie
id_wpis | id_kategorii


dodajac wpis moglbym zrobic jako dodatkowa, ale tez nie koniecznie tabele w ktorej bylby przedstawiony uklad, czyli ktory wpis do jakiej kategorii, czyli samo
id | id_wpis | id_kategoria
1 | 1 | 3
2 | 1 | 4
CuteOne
1. depth czyli głębokość jest to dodatkowy parametr ułatwiający listowanie drzewa np.
  1. $rows = $pdo -> fetchAll("SELECT `name` FROM kategorie WHERE depth > 1 AND parent_id = 21");

2. jeżeli uważasz miejscowości jako podkategorie to oczywiście, że możesz je tak potraktować.
3. dodatkowe tabele służą do łączenia ze sobą poszczególnych elementów np.
  1. $rows = $pdo -> fetchAll("
  2. SELECT w.name
  3. FROM kategorie k
  4. LEFT JOIN wpis_kategorie wk ON (wk.id_kategorii = k.id)
  5. LEFT JOIN wpisy w ON (w.id_wpisu = wk.id_wpisu)
  6. WHERE
  7. k.depth = 3
  8. ");
  9. // pobierasz wszystkie wpisy dla miejscowości (depth = 3)
lobopol
Ja polecam strukturę typu nested set przykład o co chodzi http://blog.bexlab.pl/struktura-drzewiasta...nested-set/383/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.