php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.11.2011, 20:25  
Neuer Benutzer
 
Registriert seit: 07.11.2011
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
madmax_81 befindet sich auf einem aufstrebenden Ast
Standard Problem mit Normalisierung/Datenintegrität

Hallo!

Ich denke schon relativ lange über die beste Lösung für folgendes Problem nach.


Ich habe z.b. 2 Tabellen.

Tabelle Rechnungen
id, Kunden_id, datum, preis


Tabelle Kunden
id, name, strasse, plz, ort

Von der Normalisierung her ist dieses Modell richtig. Wenn ich jetzt aber in der Tabelle Kunden z.b. den Namen ändere, ändert sich dieser auf allen bereits erstellten Rechnungen ebenfalls. Das darf natürlich auf keinen Fall sein. Wie löst ihr eine solche Problemstellung? Muss man in so einem Fall auf die Normalform pfeiffen und die Spalten aus der Kundentabelle trotzdem nochmal in der Rechnungstabelle anlegen?

Danke im Voraus!

LG,
Mad
madmax_81 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.11.2011, 20:34  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Nee, das hat nix mit "auf Normalisierung pfeifen" zu tun, es ist sehr richtig, die fertige Rechnung mit allen Daten zu speichern, übrigens auch die errechnete MwSt., Rabatte und dergleichen.
Es sollte also in der als "fertig" gespeicherten Rechnung nichts mehr von irgendwelchen anderen Daten abhängen.
Es könnte schließlich sein, daß sich im nachhinein irgendwelche Parameter (MwSt.-Satz) ändern oder das sich nachträglich sogar Fehler in der Berechnungsmethode herausstellen. Das darf aber keinen Einfluß mehr auf historische Daten haben.

Edit:
Zitat:
Spalten aus der Kundentabelle trotzdem nochmal in der Rechnungstabelle anlegen
Ich würde eine separate Tabelle "fertigeRechnungen" bevorzugen, eine reine Archiv-Tabelle.
achtelpetit ist offline   Mit Zitat antworten
Alt 07.11.2011, 20:53  
Neuer Benutzer
 
Registriert seit: 07.11.2011
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
madmax_81 befindet sich auf einem aufstrebenden Ast
Standard

Hallo achtelpetit und danke für deine Antwort!

Genau das war auch mein Gedanke, dass alle relevanten Daten zur Rechnung unabhängig in der Rechnungstabelle nochmals gespeichert sind. Ich war mir nur unsicher, weil es bezüglich Normalisierung nicht der sauberste Weg ist. Aber wie du schon sagst, wie soll man sonst die Konsistenz der Daten Garantieren.

LG,
Mad
madmax_81 ist offline   Mit Zitat antworten
Alt 07.11.2011, 20:58  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
eil es bezüglich Normalisierung nicht der sauberste Weg ist
Doch, es ist der sauberste Weg. Eine fertige Rechnung stellt eine eigene Entität dar, an der ich nachträglich kein i-Tüpfelchen ändern darf, also hat sie eine eigene Tabelle "verdient".
achtelpetit ist offline   Mit Zitat antworten
Alt 07.11.2011, 21:10  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Eine andere Möglichkeit wäre, die Adressdaten mit einer Historie zu versehen – bei Änderung der Adresse wird nicht der bestehende Datensatz aktualisiert, sondern ein neuer angelegt, inkl. eines gültig-ab-Datums.
Über letzteres kann zur Rechnung auch im Nachhinein die zu Zeitpunkt der Rechnungsstellung gültige Adresse hinzu gezogen werden.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 07.11.2011, 21:32  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Die Historisierung ist natürlich auch 'ne Möglichkeit, hat aber 2 Nachteile. Erstens muß man bei einer evtl. Änderung der Tabellen auch an die Historisierung denken und zweitens (und das halte ich für ein viel schwierigeres Problem) wird die Rekonstruktion historischer Daten unter Umständen zu einer sehr komplizierten und fehlerträchtigen Angelegenheit.
achtelpetit ist offline   Mit Zitat antworten
Alt 07.11.2011, 22:08  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Rechnungsdaten als PDF exportieren und archivieren. Ist unsigniert auch nicht rechtsgültig, aber sicher besser als eine wie auch immer geartete Datenbanklösung.

Kundenverwaltung und Rechnungsarchiv sind schlichtweg zwei verschiedene Anwendungsfälle.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 07.11.2011, 22:10  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
aber sicher besser als eine wie auch immer geartete Datenbanklösung.
Kommt vielleicht auch darauf an, ob öfter mal im Archiv gesucht wird, oder?
achtelpetit ist offline   Mit Zitat antworten
Alt 07.11.2011, 22:45  
Neuer Benutzer
 
Registriert seit: 07.11.2011
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
madmax_81 befindet sich auf einem aufstrebenden Ast
Standard

Außerdem ist es ganz praktisch, wenn für eine etwaige Weiterverarbeitung der Daten schon alles relevante in einer Tabelle zusammengefasst ist und man nicht x joins machen muss.
madmax_81 ist offline   Mit Zitat antworten
Alt 08.11.2011, 10:01  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Nur ein PDF-Archiv ist ungenügend. Man möchte ja ggf. auch mal eine alte Rechnung kopieren, oder eine Gutschrift basierend auf der Rechnung erstellen.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Ajax - Session Problem halskrause PHP Tipps 2009 10 12.01.2010 02:27
[Erledigt] Problem mit Mehrsprachigkeit Sniper_Kotaro PHP Tipps 2009 2 16.12.2009 11:47
Problem beim Download Management mistermint PHP Tipps 2009 8 24.10.2009 11:34
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 19:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
normalisierung auswirkungen auf datenintegrität, datenintegrität php, normalisierung adressen problem, delphi rgb normalisieren, problem normalisierung

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum