MySQL Datenbankdesign für Atribute von über 100000 Anzeigen

  • Themenstarter Themenstarter rene9
  • Beginndatum Beginndatum
R

rene9

Hallo,
bräuchte mal bei meiner grundlegenden Denkweise zur Datenbankoptimierung eure Hilfe.

Ich entwickele gerade mit einem Arbeitskollegen einen Anzeigenmarkt mit insgesamt 20 verschiedenen Märkten (z.B. Automarkt, Immobilien, Telekommunikation etc.)

Hier wird ja jede Rubrik andere Merkmale haben: Autos z. B. Kilometerstand, Innenfarbe, Aussenfarbe, Metalliclackierung, Baujahr, Klimaanlage, etc.

Eine Immobilie hat u.a. wiederrum die Merkmale Baujahr, m², Garage, etc.

Wir rechnen später mit weit mehr als 100.000 Anzeigen pro Markt.

Momentan sind wir in der Überlegungsphase, wie wir die Datenbank designen sollen. Sie soll performant als auch einfach zu handeln sein.

Folgende Grundüberlegungen haben wir hinter uns:
- entweder zu jedem Markt 2 Tabellen, eine für die Anzeigen, eine für die Merkmale. Dann hier in jeder Tabelle für eine Anzeige einen Datensatz oder

- zu jedem Markt 2 Tabellen, eine für die Anzeigen, eine für die Merkmale aber hier die verschiedenen Merkmale mit einem Index auf die Anzeige untereinenander in jeweils einem Datensatz (Zeilenweise, also keine Eigenschaft als Spalte sondern nur Key, Merkmal und Inhalt als Spalte) oder

- zu jedem Markt 1 Tabelle und für JEDES merkmal eine eigene Tabelle, dieser Vorschlag wurde von einem Arbeitskollegen gemacht, viel halten tue ich davon nicht :)
Alternativ wäre da noch die möglichkeit die Merkmalstabelle mit je einer Spalte pro Merkmal verwircklichen.

Was habt ihr für Ideen? Wie könnte man die Datenbank am idealsten designen, dass sie auf Performance unter großer Last optimiert ist.

Danke für eure Hilfe.

rene
 
1 Table Markt
1 Table Eigenschaften
1 Table Anzeige
1 Table Joing_Eigenschaften_Markt

Und die Eigenschaften sowie die Anzeigen sind dann auf die jeweilige Tabelle gejoint.
Die Eigenschaften natürlich über eine assoziative Tabelle joinen, da sowohl ein Auto als auch ein Haus z.B. das Attribut "Preis" hat.

Alles andere (z.B. für jeden Markt eigene Attribute, die sich wiederum mit anderen decken) wäre eine Normalverletzung.

LG
Mike
 
Ich bin mir nicht ganz sicher, ob ich Mik3es Vorschlag wiederhole, aber ich glaube, leichte Differenzen bestehen.
Im Anhang habe ich mal eine Beispielstruktur. Primärschlüssel sind blau hervorgehoben.
AttributeDieInAllenMaerktenGleichSind sind zum Beispiel Titel und Beschreibung, ggf. auch eine BildUrl, wenn man nicht mehrere Bilder pro Anzeige zulässt. Dann wäre eine eigene Tabelle für die BildUrl nötig.
weitereMerkmale des Marktes könnten z.B. eine Markbeschreibung oder auch ein parentMarkt sein, wenn man Märkte hierarchisch untergliedern will.
Wenn man erlauben will/muss, dass ein Attribut mehrfach gesetzt wird, man also so etwas wie ein Array benötigt, dann muss AnzeigenAttribute eine eigene ID haben.

Gruß hpvw
 

Anhänge

  • Märkte.gif
    Märkte.gif
    3,2 KB · Aufrufe: 36
Zurück