Zur Boardunity Forenstartseite
  #1  
Alt 21.03.2005, 10:48
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60

Sub-Tree Abfrage mit NestedSet Model


Hi @ll

Ich verwende zum Speichern der Menu-Struktur NestedSet

Bis jetzt hab ich keine Probleme gehabt:
  • Einfügen
  • Bewegen
  • Gesamt Auslesen
  • Brotkrumen-Navigation
  • ...

Aber nun stehe ich vor einem grossen Problem!

Sagen wir, ich hab da ne Baumstruktur wie diese:

Code:
Stammverzeichnis
- Unterverzeichnis1
- - Unterunterverzeichnis1
- - - Datei 1
- - - Datei 2
- - - Datei 3
- - Unterunterverzeichnis2
- - - Datei 1
- - - Datei 2
- - - Datei 3
- - Unterunterverzeichnis3
- Unterverzeichnis2
- - Unterunterverzeichnis1
- - Unterunterverzeichnis2
- - Unterunterverzeichnis3
- - - Datei 1
- - - Datei 2
- - - Datei 3
- Unterverzeichnis3
- - Unterunterverzeichnis1
- - - Datei 1
- - - Datei 2
- - - Datei 3
- - Unterunterverzeichnis2
- - Unterunterverzeichnis3
Ich brauche jetzt aber, wie man es z.B. auch im Windows Explorer sehen kann, nicht den kompletten Verzeichnisbaum, sondern nur einen ganz bestimmten Teil, wie diesen hier:

Zb User ist auf Datei 2

Code:
Stammverzeichnis
- Unterverzeichnis1
- - Unterunterverzeichnis1
- - Unterunterverzeichnis2
- - - Datei 1
- - - Datei 2     <--
- - - Datei 3
- - Unterunterverzeichnis3
- Unterverzeichnis2
- Unterverzeichnis3
Wäre nett, wenn mir da jemand weiterhelfen könnte.
__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #2  
Alt 21.03.2005, 17:26
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Ich sehe keinen Weg das zu bewerkstelligen :/

  #3  
Alt 21.03.2005, 17:33
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Hi Gardan

Ich habe seit Do an einer Lösung gearbeitet und nix gefunden.
Durch Zufall hat ein Freund von mir (2ton3) einen Beitrag auf einen Beitrag (php4-forum.de) gefunden, der das Thema behandelt.

Der Lösungs Weg:
Von der gewählten ID, wird zuerst der direkte Weg zum Root ermittelt
und durch dieses Resultat kann dann ein Having-Klausel erstellt werden, die dann den Rest macht.

So kann man das Menu + Tree und BrotkrummenNavigation (YouAreHere // Vor-Sql) mit 2 Sqls abbilden.

Wenn gewünscht hänge ich die Front-End-Klasse an

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #4  
Alt 22.03.2005, 02:57
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Hmm mich würde mal interessieren wie schnell das ein gutes SQL Backend hin kriegt... insbesondere würde mich da die Komplexitätsklasse interessieren

Optimalerweise müsste man wohl auf left und right nen Index bauen, macht aber das Einfügen schon sehr teuer...

  #5  
Alt 23.03.2005, 03:43
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
HI Garden

Sicher ist diese Art von Menü-Speicherung etwas aufwendiger als andere.

Aber wenn man sich das ganze genau überlegt, geht es nicht um die Speicherung, sondern um die Ausgabe.
Denn ich werde viel öfter das Menü Ausgeben müssen, als einen Menüpunkt hinzufügen oder sonst wie manipulieren.

Da nehme ich gerne die mehr Aktionen beim Bearbeiten in Kauf, als sie vorne zu haben.
Angehängte Dateien
Dateityp: txt class_nested_display.txt (5,9 KB, 518x aufgerufen)

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #6  
Alt 23.03.2005, 15:56
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Selbst die Ausgabe ist einigermaßen komplex meine ich Zumindest, für so kleine Menustrukturen lohnt es sich meiner Meinung nach nicht... schon eher vielleicht für Antworten in einem Topic, aber selbst da müssten es schon an die 100 sein damit es sich lohnt meine ich... weil zb bei 100 Stück da hab ich schnell mal id und parent id rausgeholt, in linearzeit O(n) die Struktur aufgebaut und kann dann selektiv die interessanten aus der Datenbank komplett rauspflücken...

  #7  
Alt 23.03.2005, 16:07
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Hi @gain

Ich verwende das ganze für ein CMS
Generell gebe ich dir recht, wobei man immer Unterscheiden muss, welche Art von Navigation du hast.

Wenn du immer alle Menü-Punkt sichtbar hast, zB Ausklapp-Menü,
brauchst du genau 1 SQL für die Menü-erstellung

Wenn es ein Tree-Menü ist, welches die Haupt-Menü-Ebene und je nach Position in der Seite den Tree ausgibt, brauchst 2 Sql.

Der Aufwand steht sich in meinen Augen dafür.
In einem Forum würde ich es nicht verwenden, wobei möglich, da viel öfter ein Beitrag geschrieben wird, und so der Berechnungs-Aufwand (Linke und rechte ID) zu groß wäre.

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #8  
Alt 26.03.2005, 04:08
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Ich hab mal einiges drüber gelesen im www und ich würde dir raten zu erwägen einen zusätzlichen Depth-Wert zu speichern. Ansonsten ist die Struktur eigentlich ganz ok - nur eine Sache die mir fehlt: Wie lösch ich effizient mehrere Einträge auf einmal? :/

  #9  
Alt 26.03.2005, 10:02
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
HI Gardan

In meiner Stuktur wird das Level mitgespeichert, und muss nicht mehr berechnet werden.

Wie ich schon oben gesagt habe, ist das die Frontend-Klasse, da brauch ich nix manipulieren.

Wenn dich das Thema interessiert, lies dir den Artikel auf Develnet.org durch.
Auf Seite 4 (Manipulation der Baumstruktur) findest du die Möglichkeit, wie du löscht.

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #10  
Alt 26.03.2005, 16:01
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Ja, leider nur ein Blatt oder einen Teilbaum. Wenn ich aber eine beliebige Anzahl beliebiger Knoten löschen will wirds schwierig...

  #11  
Alt 26.03.2005, 16:08
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Hi @gain

wird durch die verschiedenen Updates (Nachberechnung) schwer, würde sogar sagen, das das nur mit einer Schleife geht.

Darf ich wissen wofür du sowas brauchen würdest??

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #12  
Alt 26.03.2005, 23:54
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Wahrscheinlich wärs am einfachsten das ganze neu zu berechnen... muss ich mal suchen ob sich das einigermaßen schnell machen lässt...

Wofür? Nja ich bin immer noch sehr angetan von der Idee Topics auch Threaded darzustellen... trotz der großen visuellen und datenbanktechnischen Probleme Vielleicht is es auch gerade diese Herausforderung

  #13  
Alt 02.04.2005, 13:56
Benutzerbild von Jens*
:-)
 
Registriert seit: 07.2003
Ort: Ljubljana
Beiträge: 515
http://www.karlnelson.net/nestedlists/

keine Ahnung ob dir das hilft aber die Seite ist mir gerade beim surfen aufgefallen..

mfg
jens

  #14  
Alt 03.04.2005, 02:29
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Naja, wenn dann schon per XMLHttpRequest Aber das Problem mit dem löschen vieler Einträge is immer noch da, genauso wie das Splitten in 2 getrennte Topics...

  #15  
Alt 03.04.2005, 11:01
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
@Gardan

Ich würde Nested Set nicht für ein Forum verwenden, dieses Model ist für Darstellungen gedacht die sich nicht sehr häufig ändern.

Bei einem Forum ist der Berechnungs-Aufwand zu groß

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #16  
Alt 03.04.2005, 14:11
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Andre Idee für Foren? Hab noch nix gefunden dazu leider... Preorder & Postorder zu speichern hätte den gleichen Effekt und die gleichen Nebenwirkungen Vielleicht reicht einfah Depth mit zu speichern... das würde immerhin schonmal vieles vereinfachen...

  #17  
Alt 04.04.2005, 00:38
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Hi @gain

Ich überleg mir was, vielleicht fällt mir was nettes ein.

Bei Nested Set wirst um die neu berechnung ned hinweg kommen, egal ob du die Levels = Deeps mitspeicherst.
Dadurch wird nur die Ausgabe schneller, da sie ned mehr berechnet werden muss.

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #18  
Alt 04.04.2005, 01:44
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Jap, das is aber immerhin schonmal was weil dermaßen oft löscht man ja keine Postings...

  #19  
Alt 04.04.2005, 08:29
Benutzerbild von Nev
Nev Nev ist offline
Sven M. Maderbacher
 
Registriert seit: 10.2003
Ort: Österreich / Wien
Beiträge: 60
Hast du dir das Einfügen angeschaut??

Du rechnest alle Rechten Nachbarn nach.

Das kann ned gesund sein auf dauer *fg*

__________________
Sven-Marcus Maderbacher
Cu l8er
Nev the XxX

Projekte:
www.Nev-Hilft.de die Seite für Coder
Master of www.Burnworld.de
  #20  
Alt 04.04.2005, 20:17
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Nja... das ließe ich aber grade noch durchgehen Bloß das mit dem Löschen is der Killer... nur was gibts bessres? Google findet nix

  #21  
Alt 04.04.2005, 21:03
Benutzerbild von Gardan
7th BBS
 
Registriert seit: 03.2005
Ort: München
Beiträge: 42
Irgendwie scheints echt nix andres zu geben...
http://www.openwin.org/mike/presenta...erarchical.pdf

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu






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