Mikä on sisäkkäin asetettu malli?

Sisäkkäiset joukkomallit tunnetaan myös nimellä muokattu ennakkotilauspuun läpikulkualgoritmi ja se on tapa tallentaa hierarkkista tietoa relaatiotietokantoihin. Tämän mallin etuna on erittäin nopea pääsy, ja se on parhaiten toteutettavissa hierarkioissa, joita luetaan useammin kuin kirjoitetaan. Jokaiselle tietomallin solmulle on määritetty kaksi numeroa, jotka tallennetaan määritteinä. Sisäkkäisjoukon mallin kysely on melko helppoa, koska molempia arvoja voidaan käyttää tarvittavan datan poistamiseen. Lisäysten, poistojen, siirtojen ja päivitysten tekeminen on kuitenkin paljon hankalampaa, koska niihin voi liittyä solmujen uudelleennumerointi.

Joe Celko esitteli sisäkkäisten joukkojen mallin, jota käytetään tyypillisesti edustamaan sisäkkäisiä joukkoja tai hierarkkista tietoa puiden muodossa. Puu on tässä tapauksessa tietorakenne, joka sisältää useita linkitettyjä solmuja. Esimerkiksi vanhempi solmu voi muodostaa yhteyden useisiin alisolmuihin, ja tämä rakenne toistuu puun läpi useilla tasoilla.

Puut ovat loistava tapa tallentaa tietoja tietyssä järjestyksessä relaatiotietokannassa, joka on tietojoukko, joka tallentaa tietoja yhteisten ominaisuuksien mukaan. Esimerkiksi myymälän ruokaosaston tuotetiedot voivat alkaa ruoasta, joka haarautuu hedelmiin, vihanneksiin ja lihaan. Hedelmät voidaan edelleen jakaa marjoiksi, meloneiksi ja omenat ja vihannekset mukuloiksi, vihreiksi ja muiksi sekä liha sianlihaksi, lampaanlihaksi ja vasikanlihaksi.

Relaatiotietokanta tallentaa kaikki nämä tiedot helposti ymmärrettävään muotoon, ja sisäkkäin asetettu malli mahdollistaa puurakenteen hallinnan tehokkaasti. Yllä olevan esimerkin avulla juurisolmu olisi ruoka, jota edustaa kaksi arvoa. Koska ruoan vasen arvo on 1, muille puun kohteille annetaan numero vasemmalla järjestyksessä. Hedelmät saisivat arvon 2 vasemmalle, marjat 3 ja niin edelleen. Arvot määritetään sitten oikealle puolelle ja ne toimivat puun läpi alhaalta ylöspäin kunkin haaran läpi, kunnes viimeinen arvo on määritetty ruoalle oikealla puolella.

Jokaisessa puun alkiossa on kaksi arvoa, esimerkiksi lft vasemmalle ja rgt oikealle, joita voidaan käyttää tunnistamaan ne ja osoittamaan niiden suhde muihin kohteisiin. Jos esimerkiksi hedelmien arvo on 2 ja 15, kaikki solmut, joiden vasemmanpuoleiset arvot ovat suurempia kuin 2 ja oikeat arvot alle 15, ovat hedelmäpuun 2–15 jälkeläisiä. Tietojen kerääminen kaikista hedelmistä on helppoa kerralla, koska nämä arvot voidaan määrittää yhdellä kyselyllä tietokantaan.

Tämä malli sopii erinomaisesti usein käytettävien tietojen tallentamiseen, mutta lisäykset, poistot ja tietojen uudelleenjärjestäminen sisäkkäisessä joukkomallissa muuttuvat erittäin työlääiksi. Indeksien uudelleenkirjoittaminen ja tietojen uudelleen numerointi voivat aiheuttaa tietokannan kaatumisen, varsinkin jos puu kasvaa sisältämään satoja tuhansia solmuja. Sisäkkäin asetettu malli sopii parhaiten kevyen sisällön hallintajärjestelmiin, joissa on vain vähän lisäyksiä ja muutoksia. Lisäykset voidaan tehdä paljon nopeammin sisäkkäisessä intervallimallissa, koska se tallentaa kunkin solmun sijainnin puussa liukuluku -desimaalien avulla ja koodaa samalla myös polkutiedot.