Jag skall spara ner en trädstruktur i databastabell. Eftersom djup är okänt och noder av olika typ har jag tänkt mig att spara ner dem på något som liknar följande sätt Hmm... lösningen kanske finns här :) Ser ut som jag har valt fel databas. I Oracle finns "CONNECT BY" men SQLServer verkar inte ha något snyggt sätt att lösa det på :( Ojj vad roligt man kan ha med att svara på sina egna trådar..... Det bästa jag kommit på ännu är att lägga till ett extrafält för vilket träd noden tillhör och sortera efter idParent och sköta resten i C# applikationen. Om nya noder inte stoppas in så ofta, kanske Modified Preorder Tree Traversal kan vara något? En nakdel här är visserligen att man inte kan försäkra sig om att man får ut nodens förälder innnan själva child-noden :( Min nuvara lösning är att jag läser in datan i C# och sorterar upp noderna med hjälp av en hashtabell. Spara ner en trädstruktur i tabeller.
<code>
tblTreeRoot(id,nvcTreeName)
tblTree(id,idParent,nvcName,intTyp,intPrio)
</code>
I tabellen tblTree kan jag ju spara ner flera träd. Problem blir att med en rekursiv SQL-fråga (antagligen inte så effektivt :( ) hämta ut ett specifikt träd (sorterat på ett fördelaktigt sätt för att skapa trädet)
Exempel på hur ett träd kan se ut i tblTree
<code>
1, 1, root,1,1
2, 1, subNode1_1, 2,1
3, 1, subNode1_2, 2,2
4, 1, subNode1_3, 2,3
5, 3, subNode1_2_1,4,1
</code>
Jag har funderat en del på att skapa en trigger som lägger till i en tredje tabell (vid insättning av noder) vilket träd varje nod tillhör så att jag vid select kan göra en "WHERE tblTree.id IN (SELECT ID from tblNodeInTree Where ...)
Jag undrar fall någon har erfarenhet av något liknande och kan ge lite tipps.Sv: Spara ner en trädstruktur i tabeller.
http://www.sqlteam.com/item.asp?ItemID=8866
eller här
http://www.dbazine.com/oracle/or-articles/tropashko4Sv:Spara ner en trädstruktur i tabeller.
Sv: Spara ner en trädstruktur i tabeller.
men här ser det ut att finnas ett sätt att lösa mitt problem :)
http://vyaskn.tripod.com/hierarchies_in_sql_server_databases.htmSv: Spara ner en trädstruktur i tabeller.
<code>
tblTreeRoot(id,nvcTreeName)
tblTree(id,idParent,idTree, nvcName,intTyp,intPrio)
</code>
och då kommer tblTree datan att se ut
<code>
1, 1, 1, root,1,1
2, 1, 1, subNode1_1, 2,1
3, 1, 1, subNode1_2, 2,2
4, 1, 1, subNode1_3, 2,3
5, 3, 1, subNode1_2_1,4,1
</code>Sv: Spara ner en trädstruktur i tabeller.
http://www.sitepoint.com/article/hierarchical-data-database/2Sv:Spara ner en trädstruktur i tabeller.
Sv: Spara ner en trädstruktur i tabeller.