Ich arbeite gerade an einem kleinen Projekt, in dem ich das folgende Szenario modellieren muss:
Szenario
Gedanken
Ich brauche ein wenig Hilfe, um den idealen Weg zu finden, dies zu modellieren, aber ich habe einige Gedanken.
Modell
Dies ist mein Datenmodell v.1.0, bitte lassen Sie mich wissen, was Sie denken.
Bedenken
Ich habe jedoch Bedenken bezüglich dieses Modells:
Wenn Sie Tipps haben, wie Sie das besser modellieren können, lassen Sie es mich wissen!
BEARBEITEN: Datenmodell v.1.4
Es sieht so aus, als ob Sie jedes dieser Dinge - Zitat, Auftrag, Entwurf, Rechnung - als strukturell identisch mit allen anderen modelliert haben. Wenn das der Fall ist, können Sie alle ähnlichen Attribute in eine einzige Tabelle "schieben".
%Vor%Ich denke, das wird für das von Ihnen beschriebene Modell funktionieren, aber ich denke, Sie werden auf lange Sicht besser bedient, wenn Sie diese als Supertype / Subtype modellieren. Spalten, die allen Subtypen gemeinsam sind, werden nach oben in den Supertyp verschoben. Jeder Subtyp hat eine separate Tabelle für die Attribute, die für diesen Subtyp eindeutig sind.
Diese SO-Frage und ihre akzeptierten Antworten (und Kommentare) veranschaulichen einen Supertyp / Subtypentwurf für Blog Bemerkungen. Eine andere Frage bezieht sich auf Einzelpersonen und Organisationen. Noch ein in Bezug auf Personal und Telefonnummern.
Später. . .
Das ist nicht vollständig, aber ich habe keine Zeit mehr. Ich weiß, dass Werbebuchungen nicht eingeschlossen sind. Könnte etwas anderes verpasst haben.
%Vor%Es sollte eine Tabelle "quotelines" geben, die "Bestellzeilen" ähnelt. In ähnlicher Weise sollten Sie eine "Fakturabeline" -Tabelle haben. Alle diese Tabellen sollten ein "Preis" -Feld (das nominell der Standardpreis des Teils ist) zusammen mit einem "Rabatt" -Feld haben. Sie könnten auch ein "Rabatt" -Feld zu den Tabellen "Angebote", "Bestellungen" und "Rechnungen" hinzufügen, um Dinge wie Skonti oder Sonderangebote zu behandeln. Trotz allem, was Sie schreiben, ist gut, getrennte Tabellen zu haben, da der Betrag und Preis im Angebot möglicherweise nicht mit dem übereinstimmen, was der Kunde tatsächlich bestellt, und es ist möglicherweise nicht derselbe Betrag, den Sie tatsächlich liefern .
Ich bin mir nicht sicher, was die "Entwurfstabelle" ist - Sie könnten wahrscheinlich die Tabellen "Entwurf" und "Rechnung" kombinieren, da sie die gleichen Informationen enthalten, mit einem Feld, das den Status der Rechnung - Entwurf oder Finale - enthält. Es ist wichtig, dass Sie Ihre Rechnungsdaten von den Auftragsdaten trennen, da Sie vermutlich Steuern nach Ihrem Einkommen (Rechnungen) bezahlen werden.
'Quotes', 'Aufträge' und 'Rechnungen' sollten alle ein Feld (Fremdschlüssel) haben, das den Wert des Vertriebsmitarbeiters enthält; Dieses Feld würde auf die nicht vorhandene 'SalesRep' Tabelle verweisen. Sie können auch ein Feld 'salesrep' in der Tabelle 'customers' hinzufügen, das auf die Standardrepräsentation für den Kunden verweist. Dieser Wert wird in die Tabelle "Anführungszeichen" kopiert, obwohl er geändert werden könnte, wenn ein anderer Repräsentant als der Standardwert das Zitat angibt. Ebenso sollte dieses Feld kopiert werden, wenn eine Bestellung aus einem Angebot erfolgt, und eine Rechnung aus einem Auftrag.
Ich könnte wahrscheinlich noch viel mehr hinzufügen, aber alles hängt davon ab, wie komplex und detailliert ein System sein soll. Sie müssen möglicherweise eine Art "Stückliste" hinzufügen, wenn die Fahrzeuge entsprechend ihren Optionen konfiguriert und entsprechend berechnet werden.
Tags und Links sql database-design order data-modeling invoice