Simon Peters: MySQL: Kategorieverwaltung soll erstellt werden

Hi.

Ich entwickle eine Seite die ca. 10.000 Kategorien  haben wird.
Die Kategorien können beliebigweit verschachtelt sein.
Z.B.
Sport->Sportarten->Hockey->Trainingsmethoden

oder

Musik->Musikgenre->Pop->Artists->Britney Spears->Alben

Jede Kategorie wird eine ID haben das ist klar.

Ich möchte mit _einem_ Query die Möglichkeit haben alle Kategorien über einer Kategorie und alle weiteren Kategorien unterhalb dieser Kategorie abrufen können. Ich habe mich schon soviele Gedanken gemacht das ich garnicht mehr weiter weiß.

Das einzige was mit einfiel war folgendes System:

ID subid name
1  0     Musik
2  1     Musikgenre
3  2     Pop
4  1     Theorie

Wenn icih nun die ID von Pop habe, könnte ich solange die SubId unter den IDs suchen bis die subid 0 ist und hätte den kompletten Pfad, das wäre aber dann eine Schleife von Queries! Nein Danke!

Habt ihr ein paar Ansätze, Lösungen, Ideen?

Beste Grüße,

Simon P.

  1. Hi!

    Ich entwickle eine Seite die ca. 10.000 Kategorien  haben wird.
    Habt ihr ein paar Ansätze, Lösungen, Ideen?

    Suchstichwort: Nested Sets. Die sind sehr vielseitig beim Lesen nach diversen Kriterien, aber etwas aufwendig beim Pflegen.

    Dass ich (vorläufig) nicht mehr dazu schreibe, liegt daran, dass das Thema umfangreich ist. Informationen (Tutorials) dazu lassen sich aber einfach finden.

    Lo!

    1. Hi!

      Ich entwickle eine Seite die ca. 10.000 Kategorien  haben wird.
      Habt ihr ein paar Ansätze, Lösungen, Ideen?

      Suchstichwort: Nested Sets. Die sind sehr vielseitig beim Lesen nach diversen Kriterien, aber etwas aufwendig beim Pflegen.

      Dass ich (vorläufig) nicht mehr dazu schreibe, liegt daran, dass das Thema umfangreich ist. Informationen (Tutorials) dazu lassen sich aber einfach finden.

      Lo!

      Also das ist ja echt fantastisch. Das System ist ja genial - mensch wer sowas erfunden hat.. :P

      Grüße.

      1. Hi!

        Bitte nicht einfach alles zitieren sondern nur den Teil, auf den du dich beziehst. Danke.

        Suchstichwort: Nested Sets.
        Also das ist ja echt fantastisch. Das System ist ja genial - mensch wer sowas erfunden hat.. :P

        Heutzutage aktuell ist jedoch eher Tagging. Dabei wird nicht mehr in eine mehr oder weniger starre Struktur einsortiert, sondern es werden Schlagwörter in beliebiger Anzahl zu einem Thema/Beitrag/Wasauchimmer hinzugefügt. Für die Suche gibt es neben einer herkömmlichen Inhalts- und Stichwort-/Tag-Suche solche Hilfsmittel wie Tag Cloud oder Mind Map.

        Lo!

  2. Hi Simon,

    Du solltest den Kategorien als erstes eine Baumstruktur verpassen. Die hast Du bisher nicht. Oder willst Du etwa fuer jeden Kuenstler eine separate Unterkategorie namens "Alben" mit einer eigenen ID fuehren? Folgender Vorschlag:

    Musik->Musikgenre->Pop->Artists->Britney Spears->Alben

    Das hier sind Aepfel mit Birnen. Pop ist keine Unterkategorie von Musikgenre, sondern ein Attribut, das *in* der Kategorie Musikgenre liegt. Ebenso ist Britney Spears keine Unterkategorie von Artists, sondern liegt in der Kategorie Artists. Und Alben ist eine direkte Unterkategorie der Kategorie Artists.

    Ueberlege erstmal gut, welche Kategorien Du ueberhaupt haben willst und unterscheide zwischen Attributen und ihren Kategorien. Dann bekommst Du einen Kategorienbaum, und dann:
    Zwei Tabellen; eine beschreibt den Kategorienbaum - ich schliesse mich dedlfix' Empfehlung von Nested Sets an - und eine ordet jeder Kategorie alle ihre moeglichen Attribute zu (Artists enthaelt Britney Spears und Ronan Keating, Sport enthaelt Fussball und Hockey u.s.w.).

    Viele Gruesse,
    der Bademeister