Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 0 Dołączył: 1.11.2003 Skąd: Poland, Płock Ostrzeżenie: (0%)
|
Pisząc CMS'a, właśnie zacząłem się zastanawiać nad kwestią rekurencyjnych funkcji wysyłających zapytania SQL. Jeżeli CMS ma strukturę drzewkową, to oczywiście nie można pobrać całości jednym "prostym" zapytaniem tak jak w konstrukcjach płaskich.
I tutaj zaczynam się zastanawiać nad możliwą optymalizacją. Czy lepszym rozwiązaniem jest pozostawienie w rekurencyjnej fukncji (bądź też pętli) zapytania SQL, czy wywołania bardziej "ogólnego" zapytania, a potem za pomocą tejże funkcji przetwarzanie wyniku aby zbudować drzewko? Za rekurencyjnym SQL'em przemawia łatwość implementacji... ale chyba nic poza tym. Nie podoba mi się po prostu zmienna ilość zapytań w zależności od poziomu zagnieżdzenia elementu. A co Wy na ten temat sądzicie? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 0 Dołączył: 1.11.2003 Skąd: Poland, Płock Ostrzeżenie: (0%)
|
Zacznę w ten sposób: nie satysfakcjonuje mnie rozwiązanie narzucające maksymalny limit zagnieżdzeń kategorii (CMS ma być możliwie elastyczny).
Doszedłem do pomysłu aby schemat kategorii wyglądał w sposob następujący. Piewsza, bazowa tabela to cats Kod int(11) ID, int(11) PARENT, varchar(32) NAME Przypuśćmy takie drzewko: Kod ROOT / \ kolory kształty / \ niebieski biały Zawartość tabeli cats Kod ID |PAR|NAME 1 |0 |kolory 2 |0 |kształty 3 |1 |niebieski 4 |1 |biały Druga tabelka to catrel. Przechowuje ona relacje między kategoriami na zasadzie wiele-do-wielu. Kod int(11) CAT_A, int(11) CAT_B, int(6) LEVEL Gdzie CAT_A i CAT_B to ID'ki wiązanych kategorii a LEVEL to różnica poziomów między nimi - dodatnia oznacza dziecko a ujemna rodzica. Zawartość catrel dla tego przykładu: Kod C_A|C_B|LEV 1 |3 |1 1 |4 |1 3 |1 |-1 4 |1 |-1 (root'a pomijamy, jako że jest ojcem wszystkiego) Wtedy wyciągnięcie np wszystkich dzieci kategorii %ID% można zrobić za pomocą
Jak Wam się to podoba? |
|
|
|
Dabroz Rekurencyjne zapytania kontra przetwarzanie tablic 6.08.2004, 22:35:56
itsme wszystko zalezy od sposobu trzymania drzewka ....
... 6.08.2004, 23:26:55
enceladus Drzewka można trzymać w taki sposób że jednym zapy... 7.08.2004, 09:14:53
DeyV Przy tak sformułowanym pytaniu duże znaczenie ma t... 7.08.2004, 14:16:35
Dabroz A jednak... dzięki takiemu schematowi bazy można p... 7.08.2004, 15:01:55
halfik serafin: a ja Ci mowie, ze depesz tego nie wymysli... 10.09.2004, 16:31:12
Dabroz Cytat(serafin @ 2004-08-31 14:04:09)Dabroz, t... 10.09.2004, 22:05:50
.dragonfly Panowie! Dajcie sobie na wstrzymanie! Odcz... 10.09.2004, 22:13:40
jaco Moje drzewka sa bardzo podobne do tych od itsme (k... 10.09.2004, 22:26:35
Dabroz Cytat(kAzu^ @ 2004-09-10 23:13:40)Panowie... 10.09.2004, 22:29:06
jaco CytatUżywasz szablonów?
Akurat tam gdzie stosuje ... 10.09.2004, 22:40:50 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 09:47 |