Hallo,
eigentlich ein alter Hut: Eine Bestellung hat n Positionen. Und bei den Positionen sollten die Daten wie Bezeichnung, Gewicht, Preis etc. mit gespeichert werden.
Das "klassische" Model würde in etwa so aussehen.
Nun frage ich mich, ob man nicht besser mit einer Art Versionierung arbeitet, also z.B.:
Die Daten die zu einem Artikel gehören und geändert werden können, werden in einer extra Tabelle gespeichert. Jedes mal, wenn die Daten eines Artikel geändert werden, wird ein neuer Datensatz in die Tabelle "Artikel Versionen" erstellt.
Entsprechend wird in der Tabelle "Bestellpositionen" nur die Artikel-Nr. zusammen mit der Versions-Nr. gespeichert.
Vorteil wäre (bei wenig Änderungen u. viel Bestellungen) geringer Speicherverbrauch, vor allem wenn viele Daten mit gespeichert werden müssten (z.B. bei Büchern: Autor, Serie, ISBN, EAN, ...). Zudem hätte man eine Nachverfolgung der Änderungen; nach dem Motto wer hat was wann geändert...
Nachteilig ist natürlich der erhöhte Aufwand beim lesen...
Was haltet ihr davon? Sollte man den "klassischen" Weg mit Redundanz aber bequemeren und schnelleren lesen nehmen oder eher doch die Sache mit den Versionen?
(Also rein theoretisch, wenn die Anforderung keine Versionierung der Artikel enthält.)
eigentlich ein alter Hut: Eine Bestellung hat n Positionen. Und bei den Positionen sollten die Daten wie Bezeichnung, Gewicht, Preis etc. mit gespeichert werden.
Das "klassische" Model würde in etwa so aussehen.
Code:
Artikel - Artikel-Nr. (PK) - Bezeichnung - Preis Bestellungen - Bestell-Nr. (PK) - Anschrift - Datum Bestellpositionen - Bestell-Nr. (PK) - Positions-Nr. (PK) - Aritkel-Nr. - Bezeichnung - Menge - Preis
Code:
Artikel - Artikel-Nr. (PK) - Aktuelle Version-Nr. Artikel Versionen - Artikel-Nr. (PK) - Aritkel-Versions-Nr. (PK) - Bezeichnung - Preis Bestellungen - Bestell-Nr. (PK) - Anschrift - Datum Bestellpositionen - Bestell-Nr. (PK) - Positions-Nr. (PK) - Aritkel-Nr. - Aritkel-Versions-Nr. - Menge
Die Daten die zu einem Artikel gehören und geändert werden können, werden in einer extra Tabelle gespeichert. Jedes mal, wenn die Daten eines Artikel geändert werden, wird ein neuer Datensatz in die Tabelle "Artikel Versionen" erstellt.
Entsprechend wird in der Tabelle "Bestellpositionen" nur die Artikel-Nr. zusammen mit der Versions-Nr. gespeichert.
Vorteil wäre (bei wenig Änderungen u. viel Bestellungen) geringer Speicherverbrauch, vor allem wenn viele Daten mit gespeichert werden müssten (z.B. bei Büchern: Autor, Serie, ISBN, EAN, ...). Zudem hätte man eine Nachverfolgung der Änderungen; nach dem Motto wer hat was wann geändert...
Nachteilig ist natürlich der erhöhte Aufwand beim lesen...
Was haltet ihr davon? Sollte man den "klassischen" Weg mit Redundanz aber bequemeren und schnelleren lesen nehmen oder eher doch die Sache mit den Versionen?
(Also rein theoretisch, wenn die Anforderung keine Versionierung der Artikel enthält.)
Kommentar