MySQL: Kanten / Knoten
Moldawian
- datenbank
Hallo,
um "1.3.14" als "14, Unterpunkt von 3, Unterpunkt von 1" zu verwenden, riet mir Cheatah einst, Kanten / Knoten zu benutzen. Kann mir jemand erklären was man darunter versteht?
Viele Grüße
Moldawian
Hi,
um "1.3.14" als "14, Unterpunkt von 3, Unterpunkt von 1" zu verwenden, riet mir Cheatah einst, Kanten / Knoten zu benutzen. Kann mir jemand erklären was man darunter versteht?
Kanten-Knoten-Beziehungen gehören zum Grundhandwerk beim Umgang mit Datenbanken (und sind übrigens auch nicht MySQL-spezifisch). Die Theorie ist eigentlich ganz einfach:
Du hast zwei Tabellen. In einer stehen die Knoten, nämlich die eigentlichen Elemente, die es anzuzeigen gilt. Die Elemente stehen "frei im Raum", ohne eine Beziehung zueinander - wie bei einem Mikadospiel, das aus großer Höhe begonnen wurde.
Die andere Tabelle enthält die Kanten, nämlich die Beziehungen der Knoten zueinander. Bindfäden, mit denen Du die Mikadostäbchen zusammenbindest. Meist reichen zwei Spalten: 1.) ID des Vaterknotens, und 2.) ID des Sohnknotens.
Auf Dein Problem gemünzt kannst Du einen Knoten namens "1" anlegen, einen namens "1.3" und einen namens "1.3.14"; und in der Kantentabelle sagst Du dann "1.3 ist Sohn von 1" und "1.3.14 ist Sohn von 1.3". Schon kannst Du beliebige Darstellungen wählen - als Liste, als Baum...
Es lohnt sich übrigens, sich mit den Grundlagen von Datenbanken zu beschäftigen!
Cheatah
Hi,
Kanten-Knoten-Beziehungen gehören zum Grundhandwerk beim Umgang mit Datenbanken (und sind übrigens auch nicht MySQL-spezifisch). Die Theorie ist eigentlich ganz einfach:
Diese Theorie kannte ich schon, nur wusste ich nicht, dass man dabei von Kanten und Knoten spricht, außerdem wäre ich nicht auf diese Idee gekommen, das in diesem Fall zu verwenden.
Du hast zwei Tabellen. In einer stehen die Knoten, nämlich die eigentlichen Elemente, die es anzuzeigen gilt. Die Elemente stehen "frei im Raum", ohne eine Beziehung zueinander - wie bei einem Mikadospiel, das aus großer Höhe begonnen wurde.
Die andere Tabelle enthält die Kanten, nämlich die Beziehungen der Knoten zueinander. Bindfäden, mit denen Du die Mikadostäbchen zusammenbindest. Meist reichen zwei Spalten: 1.) ID des Vaterknotens, und 2.) ID des Sohnknotens.
Auf Dein Problem gemünzt kannst Du einen Knoten namens "1" anlegen, einen namens "1.3" und einen namens "1.3.14"; und in der Kantentabelle sagst Du dann "1.3 ist Sohn von 1" und "1.3.14 ist Sohn von 1.3". Schon kannst Du beliebige Darstellungen wählen - als Liste, als Baum...
Ich habe mir jetzt das ganze mal so erstellt, nur habe ich keine Ahnung wie die Select-Anweisung dazu aussehen müsste. Zuerst habe ich gedacht einfach die Kantentabelle nach der Vater-ID zu sortieren, das bringt aber nicht die gewünschte Reihenfolge. Weißt du (auch da ;-)) eine Lösung?
Es lohnt sich übrigens, sich mit den Grundlagen von Datenbanken zu beschäftigen!
Hab ich ja schon gemacht und mache es immer noch :-)
Viele Grüße und vielen Dank
Moldawian