Lude: Warengruppenstruktur - in XML oder RDBMS speichern?

Beitrag lesen

Hi,

danke fuer Eure Geduld! Ich hab's jetzt wohl so halbwegs kapiert. - Bin ja kein "SQL-Experte".   ;-)
(Allerdings verstaerkt sich bei mir der Eindruck, dass Du "nur" Datensaetze speichern willst, in diesem Fall 'Artikel', die kategorisiert werden sollen. - Das habe ich auch schon gemacht - bei mir haben bisher aber immer insgesamt drei "starre" Kategorien und Unterkategorien gereicht. - Kategoriesierung mithilfe von vier Kategorien und dann noch "dynamisch"? Das war fuer mich einfach zuviel.)

Der Schaden, der entsteht wenn mithilfe der "umgebenden Programmlogik" Abfrageergebnisse erzeugt werden, weil SQL nicht mehr reicht, ist u.a. ein langsamer Datenzugriff.
Das versteh ich wiederum nicht ;-)

[Beispiele]

dann mach mal eine Zeitmessung und Du wirst staunen. Insbesonders das "rekursive Element", realisiert mithilfe von "umgebender Programmlogik", "haut rein".

Gut, also hier noch ein Index über ID. Beim Bearbeiten der Struktur habe ich in etwa die selben Abfragen, dazu kommen ggfs. INSERT und UPDATE Abfragen, aber die sind auch sehr einfach, es wird immer nur ein neuer DS hinzugefügt oder aktuelisiert, ich muss keine Beziehungs-Tabellen pflegen...

Indizes sind immer gut.   ;-)
Fuer Deine Loesung spricht in der Tat die geringere Anzahl Tabellen.
btw - Was machst Du, wenn eine Liste aller 'Artikel' angefordert ist, z.B. fuer Exportzwecke. - Welche Laufzeiten erwartest Du dann?

btw.: Würdet Ihr eine andere Indizierung er Tabellen vornehmen? Ich würde also sowas machen:

In beiden Tabellen ein primary-key auf ID und jeweils ein einfacher Index auf die parent_id bzw. kategorie_id spalte. Oder sollte ich noch einen über titel legen, oder vielleicht einen über mehrere Spalten (titel und ID)?

"It depends"

Aber mal ein ganz anderes Problem, wie speicher ich am besten den Zustand des Baums, der auf der Internetseite angezeigt wird, halt welche Bereiche auf- und zugeklappt sind? Ich würde es glaueb ich als Array in der Session speichern, d.h. ich schreibe Änderungen am Baum immer in die Session, d.h. wenn z.B. Lebensmittel aufgeklappt wird, dann weise ich dem Schlüssel "Lebensmittel" im Struktur-Array einen Array mit den Unterkategorien hier wiederum alle als Schlüssel der Elemente zu, aber wo speichern ich dann die IDs(die ich ja brauche um der DB mitzuteilen welche Kategorie ausgelesen werden soll)?

No comment.   ;-)

[Beispiele]

Danke.

Bei Deiner Lösung hast Du das problem, nicht zu wissen, in welcher Tabelle sich die Kategorie befindet, dafür brauchst Du dann eien Zuordnungs-Tabelle.

Ich haette eine Zuordnung ins Auge gefasst, wo z.B. die Kategorie immer in Ebene 3 landet, mithilfe von "Dummies".

Mag sein dass Deine Datenstruktur zu Ausgabe des Baums ein wenig prformanter ist, aber beim Auslesen der entsprechenden produkte ine ienr Kategorie sicherlich nicht, außerdem ist mein version auf keine Ebenen-Zahl beschränkt. Außerdem ist bei einer Solch kleinen Tabele(im Schnitt sicher nur 1000-10.000 Datensätze in der Struktur-Tabelle) die  Performance sicher nicht mehr das Problem.

Hatte mal was von hunderttausenden Datensaetzen und von einer sehr variablen Kategoriesierung in Erinnerung.

Du kannst Dich ja mal melden und zur Umsetzung berichten. - Dein Loesungsansatz ist ja _vielleicht_ wirklich gut.   ;-)

Gruss,
Lude