Chrisi: Verzeichnisstruktur mit MySQL ? (DMOZ)

Hallo zusammen,

ich überlege gerade vorwärts und rückwärts wie ich eine Struktur, so wie sie bei der DMOZ Datenbank angewendet wird, in MySQL umsetzen.

Ich möchte erreichen das die danze Datenbank Flexibel im Umgang der Kategorien und der tiefe der Struktur ist, was mich hier allerdings zum verzweifeln bringt.

Beispiel:

/Hauptkategorie/Unterkat-1/Unterkat-2/...

In MySQL würde das jetzt bei meiner krummen "Denkung" ein Datenbankdesign mit 3 Tabellen ergeben die alle über die Primaray Keys miteinander verbunden sind :)

Das ganze setzt jetzt aber vorraus das ich mir vorher im klaren über die tiefe der Datanbnkstruktur bin und macht die ganze Datenbank unflexibel im Bezug auf spätere Erweiterungen, z.B. eine "Unterkat-3" ...

Mit XML wiederum würde das ganze bei mir so ausschauen:

<Hauptkategorie>
  <Unterkat-1></Unterkat-1>
  <Unterkat-2></Unterkat-2>
</Hauptkateorie>

Hier könnte ich jetzt ohne weiteres zusätzliche "Unter-Unterkats" einfügen z.B.:

<Hauptkategorie>
  <Unterkat-1>
    <Unterkat-1-1></Unterkat-1-1>
  </Unterkat-1>
  <Unterkat-2></Unterkat-2>
</Hauptkateorie>

Hier habe ich jetzt einfach eine Unterkat-1-1 die der Unterkat-1 untergeordnet ist hinzugefügt.

Nun Frage ich mich ob ich sowas mit einer MySQL Datenbank überhaupt realiesieren kann, ohne dabei jede Unterkat immer wieder neue Tabellen anzulegen ?

Ich schätze mal die Lösung ist einfach, aber ich komme einfach  nicht drauf ...

Danke für eure Hilfe, Chrisi ...

  1. hi!

    ich überlege gerade vorwärts und rückwärts wie ich eine Struktur, so wie sie bei der
    DMOZ Datenbank angewendet wird, in MySQL umsetzen.

    Generische Baumstrukturen implementiert man gewöhnlich, indem jeder Knoten im
    Baum einen Link auf seinen Elternknoten enthält. In SQL kann man das am einfachsten
    mit einer numerischen ID lösen: jeder Knoten erhält eine ID >0 und ein Feld zur
    Speicherung der ID des Elternknotens (der Elternknoten des Wurzelelements ist 0). Alle
    anderen Felder sind von der jeweiligen Anwendung abhängig.

    bye, Frank!

    --
    Never argue with an idiot. He will lower you to his level and then beat you with experience.
    1. Hi Frank,

      ich glaube ich komme da nicht mit :)

      Beispiel:

      ID  | EID | name
      0  | 0   | Elternknoten-0
      1  | 0   | Unterpunkt von Elternknoten-0
      2  | 1   | Elternknoten-1
      3  | 1   | Unterpunkt von Elternknoten-1

      Nur verstehe ich jetzt nicht wie ich für z.B. "Unterpunkt von Elternkonoten-0" eine weitere Unterkategorie festlegen kann ohne eine weitere Spalte in der DB anzulgenen ?

      Hast du vieleicht ein kurzes Beispiel der Struktur für mich ?

      Viele Grüße und danke, Chrisi ...

      1. Hi Frank,

        ich war gerade duschen und habe die Technik nun verstanden :)

        Ich erfrage quasi mittels der ElternID immer eine Stufe zurück, so komme ich dann ja auch bis zum Ursprung der Struktur ... Ist mal wieder einfacher als ich dachte :)

        Danke, Chrisi ...

      2. Hast du vieleicht ein kurzes Beispiel der Struktur für mich ?

        Da http://ffm.junetz.de/members/reeg/DSP/node10.html#SECTION04340000000000000000 gibt es ein Beispiel für die Vater-Zeiger-Methode.

        Darunter wird noch das Nested Set Modell beschrieben. Etwas aufwändiger zu pflegen, jedoch auch mit mehr Abfragemöglichkeiten ausgestattet.

        1. Hi,

          Darunter wird noch das Nested Set Modell beschrieben. ...

          Danke für den Tipp, das Model schaut wirklich etwas komplizierter aus, wirkt aber recht spannend auf mich :)

          Viele Grüße, Chrisi ...

    2. Moin,

      Meine Güte...
      Wissenschaft ist die Fähigkeit einfache Dinge kompliziert auszudrücken.
      Für alle die es nicht verstanden haben und vielleicht ein wenig öfter duschen müßen um überhaupt ztu verstehen was der Frank da geschrieben hat:
      Die Tabelle hat folgende Struktur:
      ID
      TOP_ID
      Name

      Erster Datensatz ist zum beispiel fogender:
      ID:1
      TOP_ID:0
      Name: KAT1

      Die UnterKAtegorie sieht dann so aus:
      ID:23 (z.BSp.)
      Top_ID:1
      Name: Doof

      Eine Unterkategorie von 23 sieht dann so aus:
      ID: 43 (z.Bsp.)
      TOP_ID:23
      Name: Dumm

      Noch Fragen?

      TomIRL

  2. Moin,
    P.S. Eine E-Mail Adresse anzugeben ist hier nicht Pflicht, und wenn Du schon eine angibst, dann gebe DDeine eigene an.

    ToMIRL