Datenbankstrucktur,tipps.........

resoucer

Gesperrt
ID: 77379
L
20 April 2006
2.846
109
Hi, ich sitze gerade vor einem Problem.

Ich mache gerade die Datenbankstrucktur für ein großes Projekt.

Aktuell ist die DB in etwa so aufgebaut

Titel
Hauptkategorie
kategorie
kategorie2
kategorie3
kategorie4


okay......alles schön und gut, aber sehr performancelastig.
Ich habe ca. 1 mio Artikel und wenn man da ein Menü per Group by hauptkategorie macht bzw. Group by kategorie........ sind das sehr viel abfragen

Jetzt wollte ich euch mal fragen wie man am besten die kategorien in die datenbank eintragen kann - ersteinmal nur für das menü wichtig - es ist ein aufklappbares menü, d.h. wenn haupkategorie = "Tiere" nageklickt ist, erscheinen dann alle "kategorie" inhalte die die Hauptkategorie "Tiere" haben.
Also müss man die Strucktur beibehalten
 
Na ja am besten kann ich dir nicht garantieren, aber sicherlich besser:

Deine Tabelle mit Artikel.. dort fliegt die Kategorie ganz raus (die sollten eine ID haben).

Dann machst du eine Tabelle mit den Kategorien (die bekommen eine ID).

Dannn noch eine Verknüpfungstabelle wo du jeweils Artikel-ID und Kategorien-ID reinschreibst. Eventuell kannst du ja dann noch die Priorität/Reihenfolge der Kategorien festlegen... oder du könntest sogar rekursive Kategorien erstellen.

Auslesen geht dann mit GROUP BY, JOINs, etc.!
 
happymaster schrieb:
Na ja am besten kann ich dir nicht garantieren, aber sicherlich besser:

Deine Tabelle mit Artikel.. dort fliegt die Kategorie ganz raus (die sollten eine ID haben).

Dann machst du eine Tabelle mit den Kategorien (die bekommen eine ID).

Dannn noch eine Verknüpfungstabelle wo du jeweils Artikel-ID und Kategorien-ID reinschreibst. Eventuell kannst du ja dann noch die Priorität/Reihenfolge der Kategorien festlegen... oder du könntest sogar rekursive Kategorien erstellen.

Auslesen geht dann mit GROUP BY, JOINs, etc.!
aber da ist ja eigentlich nur anders, dass die Kategorien in einer anderen Tabelle stehen, dafür aber Artikelübersicht werden die Kats raus genommen + 1 Katsid hinzugefügt

wenn ich das richtig verstehe.

Hätte dann aber ca. 1 mio Einträge in der Kats Tabelle
 
resoucer schrieb:
aber da ist ja eigentlich nur anders, dass die Kategorien in einer anderen Tabelle stehen, dafür aber Artikelübersicht werden die Kats raus genommen + 1 Katsid hinzugefügt

wenn ich das richtig verstehe.

Hätte dann aber ca. 1 mio Einträge in der Kats Tabelle

Verstehe ich nicht. :mrgreen:
Na ja... ich sehe evtl. auch dein Problem nicht. 8O
 
happymaster schrieb:
Verstehe ich nicht. :mrgreen:
Na ja... ich sehe evtl. auch dein Problem nicht. 8O

okay dann sage ich mal
das der seitenaufbau ca. 10 sekunden dauert (jede) wegen den vielen Abfragen
Das wollte ich beschleunigen indem ich das Menü umbau, da im Menü alle Kategorien aus der Artikeldatenbank kommen
Und wenn man da bei ca. 1mio einträgen Group by macht dauert das halt irgendwie nen paar sek.

Ach und wenn man dann 3 unterkategorien hat dann sind es schon 4mio abfragen
 
resoucer schrieb:
okay dann sage ich mal
das der seitenaufbau ca. 10 sekunden dauert (jede) wegen den vielen Abfragen
Das wollte ich beschleunigen indem ich das Menü umbau, da im Menü alle Kategorien aus der Artikeldatenbank kommen
Und wenn man da bei ca. 1mio einträgen Group by macht dauert das halt irgendwie nen paar sek.

Ach und wenn man dann 3 unterkategorien hat dann sind es schon 4mio abfragen

Was zur Hölle hast du für Abfragen? Ansonsten solltest du dir mal anschauen, ob du Indizes verwendet hast. Was lässt du denn alles ausgeben? 10 Sekunden sind echt heftig!
 
happymaster schrieb:
Was zur Hölle hast du für Abfragen? Ansonsten solltest du dir mal anschauen, ob du Indizes verwendet hast. Was lässt du denn alles ausgeben? 10 Sekunden sind echt heftig!

also meine abfragen sind:

PHP:
SELECT kategorie,hauptkategorie FROM artikel_kats WHERE kategorie !="Gewinnspiele" '.$zusatz1.' GROUP by hauptkategorie

diese sind 3 mal drin
 
du hast doch keine 1mio kategorien?! wenn du die kategorien in der form speichern willst dann legst du ne tabelle für die kategorien an und gibst jedem eintrag eine eindeutige id... diese id hinterlegst du dann bei den artikeln.
 
ZeroCCC schrieb:
du hast doch keine 1mio kategorien?! wenn du die kategorien in der form speichern willst dann legst du ne tabelle für die kategorien an und gibst jedem eintrag eine eindeutige id... diese id hinterlegst du dann bei den artikeln.

ja genau, so kann man das auch machen
 
zeitlcih schaffe ich es grad leider nicht, mir alle Vorgängerbeiträge durchzulesen... möchte dennoch helfen.

Einfach wäre es wirklcih, eine Tabelle anzulegen, welche die Kategorien beinhaltet.

Da kriegt jede Kategorie ne eigene ID...

Dann noch ne Tabelle mit allen Artikeln. Da kriegt auch jeder Artikel ne eigene ID (mit auto_increment) und ne Spalte für die Kat-ID... Da steht dann immer die ID der Kategorie drin...

ich denke aber mal, dass meine Vorgänger hier das schon geschrieben haben. Ich hoffe dennoch, ich konnte helfen!