Francois Zbinden
2003-07-01 18:06:59 UTC
Hallo
Ich habe eine grundsätzliche Frage, zu der ich noch keine generelle Antwort
gefunden habe.
Beispielsweise habe ich in einer Datenbank zwei Tabellen, Produkte (Name,
Preis)
und Bestellungen (ProduktNr, Menge). Soweit so gut. Jetzt ändert der
Benutzer
unter den Produkten den Preis. Jetzt wenn ich jetzt vergangene Bestellungen
betrachte und aus der Menge und ProduktNr den Totalbetrag ausrechnen
möchte stimmen die Angaben natürlich nicht mehr mit der originalen
Bestellung überein.
Ich sehe folgende Lösungsmöglichkeiten:
A. Speichern des Preis in der Bestllungstabelle
-> Redundanz der daten
B. Es dürfen generell keine Änderungen an einem bestehenden Produkt gemacht
werden.
Stattdessen muss das Produkt als neuer Datensatz erfasst werden.
-> Inkonsistenz
C. Einfügen einer Versionsnummer bei der Produktetabelle, Änderungen an
einem Produkt
können nicht mehr gemacht werden, statdessen wird der Datensatz kopiert,
behält dieselbe ProduktNr aber erhalt höhrere Versionnummer
-> Aufwendigere Realisation
D. Erstellen von (sehr vielen) Zwischentabellen bei denen alle mutierbaren
Daten
unabhängig vom Originaldatensatz (Produkt) in einer Zwischentabelle
gespeichert werden.
-> Aufwendigere Realisation
Gibt es vielleicht andere Ideen? Kann jemand aus Erfahrung eine generelle
Empfehlung
geben welches Konzept auf Dauer sich besser bewährt? Konkret handelt es sich
um
ein kleineres Projekt, welches aber doch senstive Daten verwalten muss. Als
Datenbank möchte ich Interbase / Firebird einsetzen.
Francois Zbinden
Ich habe eine grundsätzliche Frage, zu der ich noch keine generelle Antwort
gefunden habe.
Beispielsweise habe ich in einer Datenbank zwei Tabellen, Produkte (Name,
Preis)
und Bestellungen (ProduktNr, Menge). Soweit so gut. Jetzt ändert der
Benutzer
unter den Produkten den Preis. Jetzt wenn ich jetzt vergangene Bestellungen
betrachte und aus der Menge und ProduktNr den Totalbetrag ausrechnen
möchte stimmen die Angaben natürlich nicht mehr mit der originalen
Bestellung überein.
Ich sehe folgende Lösungsmöglichkeiten:
A. Speichern des Preis in der Bestllungstabelle
-> Redundanz der daten
B. Es dürfen generell keine Änderungen an einem bestehenden Produkt gemacht
werden.
Stattdessen muss das Produkt als neuer Datensatz erfasst werden.
-> Inkonsistenz
C. Einfügen einer Versionsnummer bei der Produktetabelle, Änderungen an
einem Produkt
können nicht mehr gemacht werden, statdessen wird der Datensatz kopiert,
behält dieselbe ProduktNr aber erhalt höhrere Versionnummer
-> Aufwendigere Realisation
D. Erstellen von (sehr vielen) Zwischentabellen bei denen alle mutierbaren
Daten
unabhängig vom Originaldatensatz (Produkt) in einer Zwischentabelle
gespeichert werden.
-> Aufwendigere Realisation
Gibt es vielleicht andere Ideen? Kann jemand aus Erfahrung eine generelle
Empfehlung
geben welches Konzept auf Dauer sich besser bewährt? Konkret handelt es sich
um
ein kleineres Projekt, welches aber doch senstive Daten verwalten muss. Als
Datenbank möchte ich Interbase / Firebird einsetzen.
Francois Zbinden