IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @543
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Dokonalosť v jednoduchosti

Wyse T10 – dokonalosť, na ktorú ste čakali. www.ts.avnet.com

Lepšie vzťahy so zákazníkmi

väčšiu kontrolu nad firemnými procesmi získate so softvérom Sunsoft.CRM crm.sunsoft.sk

Zbavte sa viazanosti

Za Samsung Galaxy Ace so zlatým O2 Paušálom zaplatíte teraz 12 €! pausal.o2.sk

Magio Internet

Najobľúbenejší internet dostupný pre viac ako 80% obyvateľov SR. Od Telekomu telekom.sk

Smartfón + navigácia

Ponuka smartfónov za najlepšie ceny a k tomu navigácia zadarmo - Telekom. Telekom.sk

Nested Set Model - riesenie dotazov na databazu

Zaslať odpoveď
AutorSpráva
quark
Užívateľ
Užívateľ

Založený: 30.06.2007
Príspevky: 54

PríspevokZaslal: Po 26.09.11 11:42Odpovedať s citátomNávrat hore

Riesim Nested set model a neviem si rady s dvoma databazovymi dotazmi.
Prvy sa tyka presuvania uzla aj s jeho vsetkymi poduzlami z lubovolnej casti stromu do druhej.
Druhy sa tyka vybratia vsetkych poduzlov konkretneho uzla do urcitej zvolenej hlbky.
Struktura tabulky v databaze ktora riesi nested set model MUSI obsahovat len 4 polozky potrebne pre tuto pracu a to:
    ID - primarny kluc
    PARENT ID - referencia na primarny kluc tej istej tabulky
    LEFT
    RIGHT

Ziadne dalsie polozky ako napr. LEVEL a pod. obsahovat nemoze. Ak poznate nieco co riesi nested set model aj s tymito dalsimi doplnujucimi polozkami ani neodpisujte.

Na nete som nenasiel nic co by riesilo tento problem komplexne, poriadne a optimalizovane pre danu strukturu tabulky.
Viete mi priamo napisat ako by mali vyzerat tieto dotazy na databazu alebo poznate stranky kde su tieto veci dobre popisane?
Riesenie by malo byt optimalizovane a dotazov na databazu by malo byt co najmenej ako to ide. Samozrejme transakcie ak su uvadzajte.
V druhom dotaze predpokladam ze sa mozu vyskytovat recursive queries alebo sub queries alebo nieco co ani nepoznam a zjednodusi to dopytovanie - ak taketo moznosti su pre tento problem riesenim tak ich uvedte.

Co sa tyka typu databazy tak to nezalezi - staci ze uvidim dotazy alebo daku teoriu ktora vysvetli ako tieto dotazy spravim. Ale robim v MySQL kedy nahodou.

Dakujem
Zobraziť informácie o autoroviOdoslať súkromnú správu
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1176
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Po 26.09.11 13:38Odpovedať s citátomNávrat hore

Tu(a v súvisiacich článkoch) je myslím popísané to čo chceš:
http://php.vrana.cz/traverzovani-kolem-stromu-prakticky.php
Síce tam používa level, ale ak som to dobre pochopil, tak neni nevyhnutný.
A tu sú ešte nejaké ďalšie:
http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/
http://emer.grafika4u.sk/clanky/php-mysql/stromova-struktura-pomocou-jedineho-dotazu

PS:Prečo NESMIE tabuľka obsahovať level?
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
quark
Užívateľ
Užívateľ

Založený: 30.06.2007
Príspevky: 54

PríspevokZaslal: Po 26.09.11 13:47Odpovedať s citátomNávrat hore

V clankoch som nenasiel odpoved na dva mnou spominane dotazy.
LEVEL nesmie byt pretoze je to nadbytocna vec. Jednoducho tam nema co hladat. Cez PARENT ID sa da level urcit tiez.

// pridané po 4 minútach od posledného príspevku

Aby som to trochu lepsie upresnil. Ja potrebujem riesenie na urovni databazy a nie skriptovacie jazyka ako napr. PHP a pod. Teda hladam dotazy na databazu kde sa mozno vyuzivaju aj rekurzie a pod.
Zobraziť informácie o autoroviOdoslať súkromnú správu
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1176
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Po 26.09.11 13:55Odpovedať s citátomNávrat hore

Však ti píšem, že ten level je tam ako doplnok a môžeš ho vyhodiť ak sa ti nepáči.
Samozrejme, že pre svoju potrebu to budeš musieť domyslieť sám....

To je všetko odo mňa...

PS:level je číslo v rozsahu tinyint a jeho prínos je určite väčší...
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
quark
Užívateľ
Užívateľ

Založený: 30.06.2007
Príspevky: 54

PríspevokZaslal: Po 26.09.11 13:59Odpovedať s citátomNávrat hore

A chces povedat ze tabulka obsahujuca aj pole LEVEL je normalizovana?
Zobraziť informácie o autoroviOdoslať súkromnú správu
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1176
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Po 26.09.11 14:01Odpovedať s citátomNávrat hore

Áno!
Bolo by myslím šialené, keby si kôli tinyint stĺpcu musel použiť join...
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
shaggy
Moderátor
Moderátor

Založený: 21.02.2006
Príspevky: 4627
Bydlisko: Bratislava

PríspevokZaslal: Po 26.09.11 19:46Odpovedať s citátomNávrat hore

quark napísal:
...ani neodpisujte

Rozmýšľam, či to hodím do koša dnes, alebo až zajtra.

Keby si si prečítal prvý z camo-vých článkov, zistil by si, že je tam aj odkaz na presun uzlov. Používa v tabuľkách level, ale určite to zvládneš prerobiť aj bez neho (a prepísať si to čisto do SQL).

A že tabuľka nie je normalizovaná? Ty to máš ako zadanie nejakej úlohy do školy?
Ak áno, tak ďakujem nášmu školstvu, že nám pripravuje nepoužiteľných ľudí.
Že tam "level" nemá čo hľadať? Blbosť. Prečo by som mal komplikovať prácu, keď s tým level-om sú moje skripty efektívnejšie?
Ty sa máš snažiť urobiť efektívnu aplikáciu, nie takú, čo sa slepo drží nejakých odporúčaní. Normalizované tabuľky nie sú vždy ideálne (pre web, resp. pre konkrétne aplikácie).

camo - ten emerov článok je o niečom inom, ten používa iný spôsob ukladania dát.

_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailZobraziť autorove WWW stránky
quark
Užívateľ
Užívateľ

Založený: 30.06.2007
Príspevky: 54

PríspevokZaslal: Po 26.09.11 20:20Odpovedať s citátomNávrat hore

Dakujem za rady shaggy. Precital som si clanok poriadne a musim priznat ze bolo tam pisane o mojom probleme. Co sa tyka toho levelu tak tiez musim priznat ze asi bude lepsie to tam zahrnut ako nie. A nie je to ziadna uloha zo skoly alebo z roboty len si robim jednu app a chcem ju mat poriadne.
Tak isto dakujem aj tebe camo.

Este raz vdaka.
Zobraziť informácie o autoroviOdoslať súkromnú správu
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1176
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Po 26.09.11 22:05Odpovedať s citátomNávrat hore

Shaggy:
Je to iný prístup, ale rozdiel je iba v tom, že je stavaný na jeden dotaz. Jeden dotaz by bol rizikom pri veľkom množstve dát. To tam emer aj spomína. Ale dá sa na ňom robiť aj presun uzlov(aspoň dúfam...) . Ja som ho použil na dynamické menu a dúfam, že tie presuny budú fungovať pre administráciu...
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
shaggy
Moderátor
Moderátor

Založený: 21.02.2006
Príspevky: 4627
Bydlisko: Bratislava

PríspevokZaslal: Po 26.09.11 22:39Odpovedať s citátomNávrat hore

camo - aj pri traverzovaní okolo stromu používaš minimum dotazov (na to je stavaný). Tento spôsob ukladania dát je náročný práve na to ukladanie, ale pri čítaní je rýchly.

quark - myslím, že Jakub Vrána vie o čom píše a ak to tam použil on, nie je dôvod myslieť si, že "level" je zbytočný/nevhodný.

_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailZobraziť autorove WWW stránky
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1176
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Po 26.09.11 22:59Odpovedať s citátomNávrat hore

Ja do toho až tak nevidím, ale zaujímalo by ma v čom je vlastne rozdiel medzi tým emerovým prístupom a tým traverzovaním.
Ja som to pochopil tak, že traverzovanie je vždy viac dotazov a hodí sa napr. na fóra, kde je veľký objem dát v DB, čo je riziko prenášať jedným dotazom. A zase na také menu by to boli zbytočné dotazy navyšše.
Mne je zle už keď mám v scripte dva dotazy a mám pocit, že som to prehnal...
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
shaggy
Moderátor
Moderátor

Založený: 21.02.2006
Príspevky: 4627
Bydlisko: Bratislava

PríspevokZaslal: Ut 27.09.11 20:41Odpovedať s citátomNávrat hore

Aký je rozdiel medzi menu a napr. stromovou štruktúrou fóra? Žiadny, ani netuším, aký by mal byť problém pri "prenášaní jedným dotazom". Ten objem dát je uplne minimálny (to nie sú megabajty).

Ja napr. používam traverzovanie v mojom CMS na uloženie štruktúry stránok/kategórií a menu zostavujem pomocou jedného selectu. Aj keď si pozrieš tie články od Jakuba Vrány, tak napr. omrvinková navigácia ti "zožerie" max. 2 selecty, čo nie je vôbec veľa.

_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailZobraziť autorove WWW stránky
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1176
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Ut 27.09.11 22:48Odpovedať s citátomNávrat hore

No dobre díky ja sa tej paranoje z prenášania musím nejako zbaviť...
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 936

PríspevokZaslal: Ne 02.10.11 21:00Odpovedať s citátomNávrat hore

quark pise ze na databaze nezalezi, tak nech pouzije miesto databazy DATABAZU Oracle a tam ma priamo na urovni sql v selecte clasulu "connect by" ktora to riesi za neho .
Zobraziť informácie o autoroviOdoslať súkromnú správu
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd