Hallo,
wollte mal fragen ob Ihr mir eine Datenbank-Struktur empfehlen könnt.
Und zwar will ich z.B. viele Produkte in einer Datenbank speichern. Diese Produkte können von insgesamt 30 Kategorien in drei Kategorien eingeteilt werden. Also jedes Produkt kann vom Benutzer in maximal drei verschiedene Kategorien eingeteilt werden, von insgesamt 30 Kategorien.
Beim Auflisten der Produkte können alle Kategorien ausgewählt werden.
Zum besseren Verständnis:
Produkt 1 -> Kategorie a,b
Produkt 2 -> Kategorie a,c
Produkt 3 -> Kategorie a,b,c
Produkt 4 -> Kategorie a,g,h
Auflistung
ausgewählte Kategorien: b,c,d,e,f,k,x,z
angezeigte Produkte
Produkt 1-2-3
Jetzt hab ich die Möglichkeit in der Datenbank (Mysql) für jedes Produkt eine einzige Kategoriespalte anzulegen und in dieser dann die ausgewählten Kategorien abzuspeichern. z.B. in diesem Format a-b oder a-c oder a-g-h
Und bei der Auflistung kann ich dann die Abfrage mit cat like "%b%" or cat like "%c%" ... machen.
Die zweite Möglichkeit wäre bei jedem Produkt zusätzlich 30 Spalten für die Kategorien anzulegen und dann z.B. die ausgewählten Kategorien auf 1 zu setzen. Und bei der Auflistung dann mit "where cat_a=1 or cat_b=1 ..."
Bis jetzt wollte ich die Abfrage mit like machen um mir die vielen Spalten in der Tabelle zu ersparen. Da ich aber gelesen habe, dass es nicht selten vorkommt, dass Tabellen aus 100 oder mehr Spalten bestehen, frag ich mich jetzt, ob ich anstatt nur einer Spalte für die Kategorien mehrere Spalten nutzen soll.
Vorallem is es so, dass ich Abfragen mit like, aus Performance-Gründen eigentlich nicht so gern mache, aber andererseits besteht die Tabelle dann aus ca. 80 Spalten, weil zu den Kategorien (30) noch andere Kriterien (4x10) hinzukommen.
Also ums auf den Punkt zu bringen:
Wenig Spalten und dafür mit "like" oder viele spalten mit "cat_x=1"
Die Tabelle würde aus ca. 10.000 Datensätzen bestehen.
mfg
Alex