Forum » Programiranje » Tree data v flat database -non standard-
Tree data v flat database -non standard-
![](https://static.slo-tech.com/stili/avatar.gif)
BigWhale ::
Precej zanimiv problem, ki je sicer resljiv, ampak moj je seveda se toliko bolj kompliciran.
Rad bi shranil drevo v neko bazo, pri tem pa NE BI rad popravljal vseh elementov v tistem delu drevesa kamor insertam nov element.
Torej standardna resitev 'Modified Preorder Tree Traversal' metoda odpade.
Idealna resitev bi mi omogocala, da bi imel vsak node 'stevilcni' naslov, kjer bi lahko rekel:
'Vrni mi celoten subtree, kjer je naslov node-a manjsi/vecji od X' pri tem pa ne sme vrnit ostalih nodov v drevesu, ki ne spadajo pod doloceno vejo. :)
Rad bi shranil drevo v neko bazo, pri tem pa NE BI rad popravljal vseh elementov v tistem delu drevesa kamor insertam nov element.
Torej standardna resitev 'Modified Preorder Tree Traversal' metoda odpade.
Idealna resitev bi mi omogocala, da bi imel vsak node 'stevilcni' naslov, kjer bi lahko rekel:
'Vrni mi celoten subtree, kjer je naslov node-a manjsi/vecji od X' pri tem pa ne sme vrnit ostalih nodov v drevesu, ki ne spadajo pod doloceno vejo. :)
![](https://static.slo-tech.com/stili/avatar_gray.gif)
mHook ::
Narediš enostavno Master slave tabelo z dodatnim stolpcem, ki opisuje pot.
S tem pristopom zelo enostavno dobiš celo vejo ( LIKE '1,3%'), globino in vse roditelje (split by . - št elementov v arrayu je globina, sami elementi pa so IDju roditeljev), lahko jih enostavno dobiš (WHERE id IN (path)).
Slabost teha pristopa je morebitno premikanje vej, kjer moraš popraviti path.
Lahko pa si pogledaš še Tree Utilities
parent_id | id | path | naziv... (null) | 1 | 1 | ata 1 | 2 | 1,2 | sine1 1 | 3 | 1,3 | sine2 1 | 4 | 1,4 | hčerka 3 | 5 | 1,3,5 | otook od sine3 5 | 6 | 1,3,6 | se en od sine3 4 | 7 | 1,4,7 | od hčerka
S tem pristopom zelo enostavno dobiš celo vejo ( LIKE '1,3%'), globino in vse roditelje (split by . - št elementov v arrayu je globina, sami elementi pa so IDju roditeljev), lahko jih enostavno dobiš (WHERE id IN (path)).
Slabost teha pristopa je morebitno premikanje vej, kjer moraš popraviti path.
Lahko pa si pogledaš še Tree Utilities
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Predstavitev dvojiškega drevesa z seznamomOddelek: Programiranje | 1988 (1588) | ktka |
» | Za programerske teoretikeOddelek: Programiranje | 8867 (5669) | Jerry000 |
» | Python iskanje podvojenih vrednostiOddelek: Programiranje | 1510 (1223) | BlueRunner |
» | python problemOddelek: Programiranje | 1484 (1224) | Isotropic |
» | Naloga v C-ju pomočOddelek: Programiranje | 2482 (2082) | keworkian |