Zitat:
|
Name|Whgrp|Wugrp|Whgrp2|Wugrp2
|
Das ist schlecht, aus mehreren Gründen.
1. Du müsstest für jede neue Warengruppe die Produkt-Tabelle erweitern.
2. Wenn ein Produkt nicht in allen möglichen Warengruppen auftaucht, gibt es leere Felder,
3. Es gibt ein hardkodiertes Maximum an Warengruppen pro Produkt (nämlich so viele, wie zusätzliche Spalten angelegt wurden),
4. Um alle Warengruppen eines Produkts zu überprüfen, müssten alle Spalten abgefragt werden.
Die Normalisierung soll dir dabei helfen, keine "optionalen" Spalten verwenden zu müssen:
Code:
Produkt:
ID | Name
1 | Produkt 1
2 | Produkt 2
Warengruppe (ist in sich nochmal gegliedert, hier als rek. Hierarchie. Nested set möglich!)
ID | PARENT_ID | Name
1 | 0 | farbe (Hauptgruppe, da PARENT_ID = 0)
2 | 1 | gelb (Hauptgruppe 'farben')
3 | 1 | grün (Hauptgruppe 'farben')
4 | 0 | sonstige (Hauptgruppe)
5 | 4 | foo (Hauptgruppe 'sonstige')
Produkt_zu_Warengruppe
PROD_ID | WG_ID
1 | 2 (Produkt 1, Warengruppe 'gelb')
1 | 5 (Produkt 1, Warengruppe 'foo')
2 | 3 (Produkt 2, Warengruppe 'grün')
2 | 5 (Produkt 2, Warengruppe 'foo')
Es gibt eine ganz normale m:n Beziehung von Produkt zu Warengruppe, d.h. ein Produkt kann in beliebig vielen Warengruppen auftauchen (und eine Warengruppe kann mehrere Produkte beinhalten). Würdest du nun immer neue Spalten zur Produkttabelle hinzufügen, wo würde das enden? Du müsstest zwangsläufig ein Maximum festlegen, weil du dafür Spalten anlegen müsstest.