Hi j|g,
Das mit den Farben ist leicht zu lösen (ich bin nicht sicher, ob Tink nicht genau das meinte, ich schreibs einfach nochmal):
Die Farb Tabelle enthält die verfügbaren Farben aller Artikel. Die Zuordnungstabelle "Artikel-Farben" legt fest, welche Artikel in welchen Farben erhältlich sind und vergibt darüberhinaus jedem Zuordnungspaar den Artikelnummer-Zusatz. So erhält das Hemd in rot den Zusatz 05, die CD in rot (*g) jedoch den Zusatz 07.
Und zu den Preisnachlässen wäre es geschickt, wenn du einwenig mehr Infos machen könntest. Wenn z.B. jeder Artikel ab 10 Stück einen bestimmten, individuellen Nachlass erhält, dann könnten diese Stufen fix in die Preistabelle rein. Wenn es z.B. preislich fixe Stufen gibt, also z.B. man für alle Artikel sagen könnte: Ab n Stück gibt es 10%, dann könnte man diese Stufen fix einbauen. Wenn das alles völlig gemischt ist, aber du z.B. festlegen kannst, dass es maximal 5 Nachlassstufen gibt, dann kannst du 10 Attribute vergeben: Preis für Preisstufe 1, max. Stückzahl für Artikel 1, Preis für Stufe 2, max. Stückzahl für Artikel 2 usw. bis 5. Am variabelsten fährst du, wenn du eine Preis-Tabelle einrichtest, in der du die Attribute: Preis-ID, Artikel-ID, (ev. Kunden-ID,) Stüch (min.), Stück (max.), Preis. So kannst du beliebige Preisstufen definieren. Musst halt schauen, wie du eine saubere Query hinbekommst, ohne den Maximal-Stück-Wert bei der höchsten Rabatt-Stufe angeben zu müssen.
Prinzipiell macht es Sinn, die Preise von den Artikeln (Artikelbeschreibungen) zu trennen, was hier ohnehin noch naheliegender ist als sonst, da du ja eben für verschiedene Kunden (vielleicht Kundengruppen) verschiedene Preise hast.
Zu den Extra-Merkmalen der Artkel für bestimmte Kunden kannst du auch, falls diese sehr variable und vielleicht noch nicht von Anfang an kalkuliert werden können, eine einfache Tabelle anlegen mit einer "Spezial-Attribut-ID", der Kunden-ID, der Artikel-ID, dem Namen des Attributes und dem Wert. So kannst du jeder Kunde-Artikel-Beziehung beliebig Attribute beifügen.
@gi:
Vorrang bekommt der spezielle Kundenpreis, ist doch klar, denn sonst bräuchte man diesen ja nicht zu definieren und zu speichern. Möglich wäre natürlich, dass es ein spezielles Preisvergabe-System gibt, dass ermöglicht, dass ein regulärer Preis z.B. zum SSV unter den, bei diesem Rabatt nicht berücksichtigten Kunden-Rabatt fällt. Dann wäre es natürlich nur fair, wenn nicht der Kundenpreis Grundlage wäre, sondern pauschal der niedrigste Preis. Das allserdings ist schon sehr speziell und dann wohl auch eher unsauber programmiert, denn natürlich sollten sich auch die individuellen Kunden-Preise ändern, wenn sich der "Grund"-Preis des Produktes ändert.
Also hier nochmal ein komprimierter Vorschlag:
Kunden (spezifische Kundendaten),
Artikel (Artkeldaten ohne Preise),
Preise (Preise nach bestimmten Preisstufen),
Farben (jede Farbe aller Artikel);
Artikel-Preise (die normal-Preise),
Artikel-Kunde-Preise (spezielle Kunden-Preise),
Artikel-Farben (jeder Beziehung ein Art.-Nr.-Zusaztz zugeordnet);
Kunden-Artikel-Spezialattribute (je nach Varianz).
Ev., wie gesagt, macht auch die Zusammenfassung von Kunden zu Kundengruppen Sinn. Musst du mal prüfen.
Liebe Grüße,
Basti