2016-05-31 11 views
0

Ich versuche, den richtigen Weg zu finden, um Tabellen für eine Abrechnungsrichtlinie zu entwerfen, bei der der Kunde für jede Lieferung bezahlen kann, wenn sie fertig ist. oder sie können eine monatliche Rechnung mit dem gesamten fälligen Betrag erhalten. Dies ist ein kleines bisschen von dem, was ich schon habe ...Normalisierungstabellen für die Zahlung einer einzelnen monatlichen Rechnung mit dem gesamten geschuldeten Restbetrag

Delivery Request Tables

Ich bin nicht sicher, wohin sie gehen ... sollte ich eine Tabelle erstellen, in voller Höhe und Monatsrechnung und beziehen sie auf die bezahlt Rechnungstabelle ... oder sollte ich diese mit der Zahlungstabelle in Verbindung bringen ... oder bin ich überall ...

Antwort

0

Es ist viel komplizierter als Sie denken. Sie müssen auch Teilzahlungen, Überzahlungen, Akontozahlungen, Rückerstattungen und andere reale Komplikationen berücksichtigen. Die einzige Möglichkeit, dies zu erreichen, was tatsächlich die Hässlichkeit der realen Welt widerspiegelt, ist es, einzelne Gebühren als eine Sache (Ihre Lieferungen), zusammenfassende Dokumente (monatliche Rechnung/Abrechnung) als eine andere Sache und Zahlungen/Rückerstattungen als zu behandeln etwas anderes.

Von dort müssen Sie diese drei separaten Dinge zusammen mit Beziehungen verbinden. Die Versuchung besteht darin, monatliche Rechnungen direkt mit Zahlungen zu verbinden, aber das wäre ein Fehler. Zumindest würde es Ihr Leben komplizierter machen, als es sein muss.

Die Beziehung zwischen Gebühren und Rechnungen ist relativ einfach. Wenn Ihr Kunde eine monatliche Rechnung erhält, zeigen alle seine Pakete aus diesem Monat auf diese Rechnung. Dies macht eine Viele-zu-Eins-Beziehung von Paket zu Rechnung.

Der komplexere Teil ist die Beziehung zwischen Zahlungen und Gebühren. Dazu benötigen Sie eine neue Tabelle Payment_Application, die eine Viele-zu-Viele-Schnittstelle zwischen Gebühren (Packages) und Zahlungen darstellt. Dieses Kreuzungsunternehmen erhält auch den Geldbetrag, der für jedes Paket gezahlt wird. Dies ist wichtig, weil Sie hier aufzeichnen können, ob der bezahlte Betrag zu viel, zu wenig oder der richtige Betrag war.

Wenn Sie anspruchsvoller werden möchten, können Sie die Zahlungsinformationen normalisieren, sodass Sie einen Zahlungskopf und Details haben. Auf diese Weise können Sie Informationen zu einer Zahlung getrennt von Informationen darüber speichern, wie Sie diese Zahlung anwenden.

Beachten Sie Folgendes:

ERD

Hier haben Sie einen (optional) Rechnungskopf und eine Rechnung Detail (Package) sowie einen Zahlungs-Header und ein (optional) Zahlungs Detail, die gegebenen bezieht sich möglicherweise nicht auf ein Rechnungsdetail. Ein Arrangement wie dieses deckt die verschiedenen hässlichen Dinge ab, die passieren, wenn du die Tauschsachen für Geld aufspüren musst.

+0

Ich hatte das Gefühl, es war tiefer als ich dachte. Vielen Dank für die Erklärung ... sehr geschätzt. – Dunnage