Rolf b: Tabellenstruktur "einfaches" Logikproblem

Beitrag lesen

Vorsicht. Wenn Du den Kategorienbaum komplett im Speicher hältst, dann kannst Du eine Abstrakte Klasse "Knoten" mit den Subklassen "Kategorie" und "Link" erzeugen, und an den Kategorien führst Du eine Liste von Kindknoten (was sich im SQL als Fremdschlüssel kat_id bzw. elternelement_id darstellt).

Diese Struktur 1:1 auf SQL abzubilden führt zu Performance-Tiefschlägen, weil Du im RAM sehr schnell von einem Knoten zum nächsten springen kannst, in der SQL DB aber nicht. Folgende Operationen werden durch dieses Datenmodell sehr langsam, bzw. erfordern einen SQL Server, der rekursive Queries beherrscht (ein Feature von SQL-99, das aber selbst MySQL 5.7 noch nicht kennt; es soll mit MySQL 8 kommen)

  • Ermitteln des Pfades von einem Knoten zur Wurzel
  • Aufspannen eines Kategoriebaumes
  • Finden eines Eintrags innerhalb eines bestimmten Teilbaumes

Deswegen hatte Chorn ja auch die Alternativen Nested Set und Path angesprochen - alle mit ihren eigenen Vor- und Nachteilen.

Rolf