Ankündigung

Einklappen
Keine Ankündigung bisher.

Richtiger Ansatz für Tree View + DB + Berechnungen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Richtiger Ansatz für Tree View + DB + Berechnungen

    Sorry für den dämlichen Titel.
    Ich hab eine Webanwendung programmiert die eine Baumstruktur darstellen soll.
    Zum Zeichnen des Baumes verwende ich das Infovis Toolkit.
    Es sollen maximal zwei Ebenen gleichzeitig angezeigt werden, der Rest soll dynamisch nachgeladen werden. Jeder Knoten soll "wissen", wie viele Kinder er hat, und vorallem wieviele Kinder er hat,die z.B. 3 weitere Kinder haben.

    Außerdem soll es, und das stellt sich mir als das größte problem dar, eine Art Komplettansicht geben.
    Wie kann ich effizient die komplette Datenbank abrufen und Darstellen?


    Bin mittlerweile so weit:

    Gespeichert wird alles in einer Adjazenzmatrix wobei jeder Knoten ein extra Feld in der DB hat mit der Anzahl der Kinder etc., eben so dass alles was errechnet werden soll direkt abrufbereit ist.

    Ich bin mir absolut unsicher beim Datenbank Design und vorallem wann und wo ich die Berechnungen durchführen soll. Sind dafür SQL Trigger der richtige Ansatz?

    MfG


  • #2
    Vielleicht habe ich den Ansatz jetzt nicht richtig verstanden. Brauchst du dafür nicht eigentlich nur eine "parent_id" pro Datensatz? Das ist zumindest der Standardansatz für Baumstrukturen - jeder Datensatz weiss, wer der Elterndatensatz ist. Man kann dann auch via Foreign-Keys sicherstellen, dass es keine Waisen im Baum gibt (dafür muss die parent_id des Root-Datensatzes NULL sein können, um dir diese Hürde jetzt schon zu nehmen).

    Dann hast du nachher nur noch SELECT-Statements like
    Code:
    SELECT field, field... FROM table WHERE parent_id=<id from current node>
    Das "Wieviele Kinder haben die Kinder meiner Kinder" kann man via Nested-Sets machen. Da gibt es einige Ansätze. Und klar, sowas geht auch mit Triggern.
    Standards - Best Practices - AwesomePHP - Guideline für WebApps

    Kommentar


    • #3
      Stichwort: Closure Table

      Kommentar


      • #4
        Dankeschön, hat mir weiter gehofen. Das Problem mit den Berechnungen hab ich noch nicht gelöst, aber speichern und laden on demand klappt einwandfrei

        Kommentar


        • #5
          Zitat von Robokopp Beitrag anzeigen
          Dankeschön, hat mir weiter gehofen. Das Problem mit den Berechnungen hab ich noch nicht gelöst, aber speichern und laden on demand klappt einwandfrei
          Weiß nicht, was Du berechnen willst/mußt, aber vermutlich würden Dir rekursive Abfragen dabei helfen.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Zitat von Robokopp Beitrag anzeigen
            Ich hab eine Webanwendung programmiert die eine Baumstruktur darstellen soll.
            Eine Frage mal vorab, kannst du dein Benutzer Klientel abschätzen?
            Also muss das ganze auch ohne Javascript funktionieren können oder ist die Anwendung so ausgelegt das es wie eine Desktop Anwendung gesteuert werden soll?
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar

            Lädt...
            X