Das mit den 3 Tabellen war ein Beispiel. Leichter zu programmieren z.B. für Listen : einer will wissen, wieviel Rabatt er auf was kriegt. Bei drei Tabellen würde ich die in absteigender Priorität durchgehen. Das hiesse dann : einfacher Join auf Artikel bzw. Warengruppe.
Ähnlich wäre eine einzelne Rabatttabelle zu behandeln. Flag für Artikel/WG-Rabatt usw.
Dann gäbe es ja noch die Möglichkeit, die Rechnungspositionen für Rabattzwecke zu missbrauchen.
D.h.: der Preis wäre der Rabattwert und man hätte noch ein Bool-Feld RABATTPOS o.ä.