Ich habe mir das ganze nochmals überlegt. Ich werde folgendes tun : 2. Tabelle anlegen. Und zwar wegen folgender Überlegungen : der gratis-Anteil liegt wohl unter 1%. Würde ich die Tabelle so lassen und einen unique Key verwenden, dann hätte ich folgende Nachteile : ein gratis Feld im Datensatz. Dieses Feld müßte auch im unique Key mitgeschleppt werden. In über 99 % der Fälle gar nicht nötig. Ein Insert in 1 % der Fälle in andere Tabelle fällt kaum ins Gewicht.
Allerdings ist der Hauptgrund ein praktischer. Was nützt es, zu wissen, in 9/2004 hat ein Kunde 10 Stück gratis erhalten. Der entgangene Umsatz und Rohgewinn in diesem Monat ist x EUR usw. Gut wäre es auch noch zu wissen, wann das genau war, also auch an welchem Tag und vielleicht noch die Beleg-Nr. Spätestens jetzt ist die bestehende Tabelle aber am Ende, denn den Tag kann ich unmöglich da noch unterbringen. Das wäre völlig unübersichtlich.
Dies bedeutet dann für die Gratis-Tabelle folgendes :
SQL-Code:
CREATE TABLE KUARTGRATIS (
ID INTEGER NOT NULL,
ID_KUNDE INTEGER,
ID_ART INTEGER,
REDATUM DATE,
RENR INTEGER,
MENGE INTEGER,
... Umsatz, Rohgewinn ???
);
In den unique Key dieser Tabelle müßte dann rein : ID_KUNDE,ID_ART, RENR. Letzeres statt des Rechn.Datum, da nich ausgeschlossen werden kann, daß 2 Gratis-Lieferungen wegen geringen Lagerbestandes vielleicht einmal an einem Tag erfolgen. Müßte doch so gehen, oder habe ich was übersehen ?