Moin!
table artikel:
| art_id | art_name | type_id | value_1 | value_2 | value_3 | .... | Freitext |
table_types:
| type_id | type_name | value_1_name | value_1_einheit | value_2_name | value_2_einheit | ... |
Das Problem ist, dass du damit die Menge der Eigenschaften künstlich begrenzt. Du kannst natürlich beliebig viele Values einfügen, aber irgendwann bei 1000 dürfte schon aus Praktikabilitätsgründen Schluß sein. Insbesondere, wenn nur ein Produkt so viele Eigenschaften hat, die anderen aber alle so bei 5 bis 10 liegen.
Außerdem verstößt dein Design gegen die Normalform: Mehrere gleichartige Attribute gehören nicht nebeneinander in eine Tabelle, sondern in eine eigene Tabelle.
Eine Kleinigkeit: Du musst die Spalten so anlegen, daß diese auch durchsuchbar sind und das man MySQL mit ihnen rechnen kann. Also dezimal mit der maximal benötigten Anzahl an Kommastellen.
Das Problem ist: Wenn bei Artikeltyp 1 das Gewicht an Platz 1 steht, und bei Typ 2 an Platz 5, wirst du niemals die Summe der Gewichte mit SUM() und GROUP BY errechnen können.
Ok, du wirst einwenden, dass man dann die Spalte 1 fest fürs Gewicht nehmen kann. Was aber, wenn Produkte kein Gewicht haben oder brauchen. Spalte unbenutzt leerlassen? Oder wiederverwenden für andere Eigenschaften? Und wenn Typ 3 jetzt sowohl Gewicht als auch diese andere Eigenschaft hat, die dann beide in Spalte 1 stehen müßten - schon wieder ein nicht auflösbarer Konflikt.
Dafür ist dann aber auch möglich effektive Indizees zu erstellen. Das ist für die Durchsuchbarkeit unter Umständen wichtig. Wenn Du dann noch ein Regelwerk hast, welches sicherstellt, daß bei Muttern und Schrauben das Material und das Gewinde an der selben Stelle (value_X) stehen, dann kannst Du sogar effektiv danach suchen.
Die Aufstellung dieses Regelwerks wird den allergrößten Aufwand verschlingen, weil es hierbeit unter Umständen zu nicht auflösbaren Konflikten kommen kann, wenn jede Spalte flexibel nutzbar sein soll.
Wenn hingegen die Spaltennutzung festgelegt ist (Spalte 1: Gewicht,...), dann benötigt man zur Beschreibung von 1000 verschiedenen Eigenschaften, die nicht alle genutzt werden, 1000 Spalten.
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)