Ankündigung

Einklappen
Keine Ankündigung bisher.

Liste (hierarchisch & mehrfachverknüpft)

Einklappen

Neue Werbung 2019

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

  • Liste (hierarchisch & mehrfachverknüpft)

    Hallo zusammen,

    kann mir jemanden sagen, wie ich am besten eine hierarchische, dabei aber mehrfachverknüpfbare DB-Tabelle in SQL realisiere?

    Beispiel:
    Essen
    --Tiere
    ----Fische
    -------Lachs
    -------Karpfen
    Wasser
    --Fische
    -----Lachs
    -----Karpfen

    Dabei muss es möglich sein, dass sich eine Veränderung in den Kindknoten von Fische und an Fische selber auf beide (alle entsprechenden) Teilbäume auswirkt.

    Vielen Dank.

  • #2
    Stichwort: Nested Sets

    Kommentar


    • #3
      Zitat von tomtaz Beitrag anzeigen
      Stichwort: Nested Sets
      Hab ich mir schon angeschaut und auch umgesetzt. Wie ich damit jetzt eine Mehrfachverknüpfung hinbekomme ist mir allerdings nicht klar, weil der "Wurm" die Hierarchie bestimmt und ich in der Form keine Möglichkeit habe, Teilbäume mit ihren Elternelementen zu verknüpfen.

      Wäre es möglich eine Tabelle mit allen Stichworten (Fische, Essen..) anzulegen und diese dann per ID in einer Beziehungstabelle inkl. lft & rgt hierarchisch anzuordnen und dann, bei z.B. löschen eines Kindknotens (Karpfen) das löschen auf beide Teilbäume anzuwenden?

      Ist meiner Meinung nach aber auch nicht optimal, weil ich dadurch quasi Anomalien erzeuge. Es muss doch irgendein schlüssiges Modell dafür geben. Stehe gerade ziemlich auf dem Schlauch.

      Danke schonmal für deine Hilfe.

      Kommentar


      • #4
        Naja, mit ID | ParentID, wobei Du diese Zuordnung in eine zweite Tabelle auslagerst sollte es doch gehen, oder? Einzig besteht dabei die Gefahr von Kreisen. Wie man das dann ausliest steht erstmal auf einem anderen Blatt. Da muß dann wohl PHP ran (rückwärst sortiert nach ParentID rekursive Arraystruktur aufbauen):
        Code:
        items
        1 | Essen   
        2 | Tiere
        3 | Fische
        4 | Lachs
        5 | Karpfen
        6 | Wasser
        
        relations (ID | ParentID | Order)
        1 | # | 1
        6 | # | 2
        2 | 1 | 1
        3 | 2 | 1
        4 | 3 | 1
        5 | 3 | 2
        3 | 6 | 1
        weil der "Wurm" die Hierarchie bestimmt
        y.m.m.d.!

        Kommentar


        • #5
          Zur Info:
          Habs jetzt mit Nested Sets gelöst.

          Gruppentabelle:
          id | name
          1 | Essen
          2 | Tiere
          3 | Fische
          4 | Lachs
          5 | Karpfen
          6 | Wasser

          Nested Sets:
          id | group_id | lft | rgt
          1 | 1 | 1 | 10
          2 | 2 | 2 | 9
          3 | 3 | 3 | 8
          4 | 4 | 4 | 5
          5 | 5 | 6 | 7
          6 | 6 | 11 | 18
          7 | 3 | 12 | 17
          8 | 4 | 13 | 14
          9 | 5 | 15 | 16

          Kommentar


          • #6
            Naja, damit hast Du die Daten aber nur kopiert. Wenn Du den Lachs jetzt unter Tiere schiebst oder eine weitere Art unter Fische einfügst, wird der zweite "identische" Zweig ja nicht geupdatet. In meiner Lösung wäre das der Fall, weil jedes Blatt nur einmal in der Relationstabelle definiert ist.

            Kommentar

            Lädt...
            X