Designfrage: Kunden - Produkte
-
Hallo,
ich habe eine Tabelle "Kunden" und eine Tabelle "Produkte". Zwischen diesen Tabellen herrscht (konzeptionell) eine m:n Beziehung.
Ich habe daher eine weitere Tabelle "Bestellungen" erstellt, welche Kunden-ID, Datum, Produkt-ID und Menge beinhaltet. (Preis befindet sich in der Produkt-Tabelle). Das heißt in der Tabelle "Bestellungen" könnte ich dann anhand des Datums und der Kunden-ID eine bestimmte Bestellung filtern und ausgeben.
Meine Frage nun: macht man das in der Praxis so? Gibt es hier eine andere (bessere) Möglichkeit Bestellungen zu speichern?
Vielen Dank schon mal!
-
shark95 schrieb:
Ich habe daher eine weitere Tabelle "Bestellungen" erstellt, welche Kunden-ID, Datum, Produkt-ID und Menge beinhaltet. (Preis befindet sich in der Produkt-Tabelle).
Mhm. Und wenn sich der Preis eines im März georderten und gelieferten Artikels im April ändert kannst du die Bestellung im März nicht mehr nachvollziehen ...
// edit: ... außer natürlich, beim Produkt findet sich eine Preishistory.
-
ja, hab ich hier jetzt nicht erwähnt, aber das mit den Produkten sieht so aus:
Tabelle "Produkte" beinhaltet neben ID noch Bezeichnung und Strichcode.
Darauf referenziert eine Tabelle Produkte_Preise, die Produkt-ID, Datum und Preis festlegt.Mir kommt eben nur das mit den Bestellungen komisch vor, d.h. darin werden alle Positionen aller Bestellungen gespeichert?! Kommt mir extrem viel vor und war mir nicht sicher ob man das so machen kann.
-
Ich würde die Tabelle Bestellungen nicht als Kreuztabelle zwischen Kunden und Produkte designen. Ich würde in ihr die KundenId, Datum, Versandadresse (also Bestellungsspezifische Dinge) hinterlegen. Dann würde ich eine Kreuztabelle mit BestellungsId und ProduktId hinzufügen (BestellungProdukt).
Zu den sich ändernden Preisen... was haltet ihr davon die Preise in der Tabelle BestellungProdukt zu hinterlegen?
-
Chris++ schrieb:
Ich würde die Tabelle Bestellungen nicht als Kreuztabelle zwischen Kunden und Produkte designen. Ich würde in ihr die KundenId, Datum, Versandadresse (also Bestellungsspezifische Dinge) hinterlegen. Dann würde ich eine Kreuztabelle mit BestellungsId und ProduktId hinzufügen (BestellungProdukt).
Das klingt nicht schlecht, ist vl eine bessere Lösung!
Chris++ schrieb:
Zu den sich ändernden Preisen... was haltet ihr davon die Preise in der Tabelle BestellungProdukt zu hinterlegen?
Find ich nicht so gut: Die Preise gehören meiner Meinung nach zum Produkt und nicht zur Bestellung. Würde man die Preise zum Beispiel in 2 Tabellen aufteilen (Einkaufspreis, Verkaufspreis) könnte man sie leicht auf die Produkte referenzieren. Speicherst du die Preise in der Bestellung, sehe ich keine gute Mögglichkeit den Einkaufspreis miteinzubeziehen.
-
Um deine Frage sinnvoll zu beantworten, fehlen wichtige Details.
Es kommt darauf an, welche Operationen schnell durchgeführt werden müssen und welche etwas länger brauchen dürfen.
Danach sollte sich dein Entwurf richten. Mit den Informationen kann man dann auch akzeptabel entscheiden, ob das Ziel erreicht ist.