» »

Tree data v flat database -non standard-

Tree data v flat database -non standard-

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. :)

mHook ::

Narediš enostavno Master slave tabelo z dodatnim stolpcem, ki opisuje pot.
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

BigWhale ::

mhook, tukaj moras popravljati celo vejo tudi ce en element insertas.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Predstavitev dvojiškega drevesa z seznamom

Oddelek: Programiranje
141988 (1588) ktka
»

Za programerske teoretike

Oddelek: Programiranje
478867 (5669) Jerry000
»

Python iskanje podvojenih vrednosti

Oddelek: Programiranje
181510 (1223) BlueRunner
»

python problem

Oddelek: Programiranje
131484 (1224) Isotropic
»

Naloga v C-ju pomoč

Oddelek: Programiranje
112482 (2082) keworkian

Več podobnih tem