Ik heb zoals velen anderen geprobeerd om eenvoudig een tree op te slaan in een relationele database. Ik ben op de hoogste van het nested set verhaal van Celko, maar heb op dit moment geen tijd om dat toe te passen aangezien de uitwerking een stuk ingewikkelder is als het recursive model.
De 3 belangrijkste velden in de table zijn ID, ParentNode en Value (de andere velden zijn niet van belang want die hebben alleen betrekking op de Value en niet op de structuur) Ik heb in 5 minuten tijd een eerste aanzet gegeven (quite ranzig) waarvan ik verder wil gaan werken.
De snelheid van het script is op dit moment niet gek verkeerd, maar dat komt omdat er in totaal maar 60 records in de database staat dus de tree ook vrij beperkt is gebleven verder.
Grootste nadeel is dat ik elk level in de tree handmatig moet maken, er is dus geen oneindig diepe tree mogelijk, wat natuurlijk wel de bedoeling is.
De code:
Waar kan ik het beste beginnen met het verbeteren van dit script, hoe kan ik ervoor zorgen dat er meer dan 4 niveaus worden ondersteund en hoe krijg ik de performance omhoog aangezien wanneer de tree snel groeit hij waarschijnlijk ook onevenredig veel langzamer wordt.
Uiteindelijk schrijft dit script een xml bestand wat gekoppeld aan een xsl bestand de navigatie van een site gaat verzorgen.
De 3 belangrijkste velden in de table zijn ID, ParentNode en Value (de andere velden zijn niet van belang want die hebben alleen betrekking op de Value en niet op de structuur) Ik heb in 5 minuten tijd een eerste aanzet gegeven (quite ranzig) waarvan ik verder wil gaan werken.
De snelheid van het script is op dit moment niet gek verkeerd, maar dat komt omdat er in totaal maar 60 records in de database staat dus de tree ook vrij beperkt is gebleven verder.
Grootste nadeel is dat ik elk level in de tree handmatig moet maken, er is dus geen oneindig diepe tree mogelijk, wat natuurlijk wel de bedoeling is.
De code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| <%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM Structure
Where Parentnode = 0",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=pad.mdb'"
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.Open "SELECT * FROM Structure",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='pad.mdb'"
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open "SELECT * FROM Structure",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='pad.mdb'"
Set rs3 = Server.CreateObject("ADODB.Recordset")
rs3.Open "SELECT * FROM Structure",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='pad.mdb'"
Do Until rs.EOF
Response.Write("-" & Rs("Value") & "<br />")
rs1.Filter = "parentnode = "&Rs("ID")
Do Until rs1.EOF
Response.Write("--" & Rs1("Value") & "<br />")
rs2.Filter = "parentnode = "&Rs1("ID")
Do Until rs2.EOF
Response.Write("---" & Rs2("Value") & "<br />")
rs3.Filter = "parentnode = "&Rs2("ID")
Do Until rs3.EOF
Response.Write("----" & Rs3("Value") & "<br />")
rs3.movenext
Loop
rs2.movenext
Loop
rs1.movenext
Loop
rs.movenext
Loop
rs.Close
rs1.Close
rs2.Close
rs3.Close
%> |
Waar kan ik het beste beginnen met het verbeteren van dit script, hoe kan ik ervoor zorgen dat er meer dan 4 niveaus worden ondersteund en hoe krijg ik de performance omhoog aangezien wanneer de tree snel groeit hij waarschijnlijk ook onevenredig veel langzamer wordt.
Uiteindelijk schrijft dit script een xml bestand wat gekoppeld aan een xsl bestand de navigatie van een site gaat verzorgen.
[ Voor 11% gewijzigd door Verwijderd op 30-03-2004 12:16 ]