Entwurf der Datenmodellierung / Angebot / Bestellung / Rechnung

8

Ich arbeite gerade an einem kleinen Projekt, in dem ich das folgende Szenario modellieren muss:

Szenario

  1. Der Kunde ruft an, er möchte ein Angebot für ein neues Auto.
  2. Verkaufsvertreter Kundeninformationen registrieren.
  3. Verkaufsvertreter Erstellen Sie ein Angebot im System und fügen Sie dem Angebot (dem Auto) einen Artikel hinzu.
  4. Verkaufsvertreter Senden Sie das Angebot per E-Mail an den Kunden.
  5. Der Kunde akzeptiert das Angebot und das Angebot ist nun nicht mehr ein Angebot, sondern eine Bestellung.
  6. Verkaufsvertreter Überprüfen Sie die Bestellung, alles ist in Ordnung und er fakturiert die Bestellung. Die Bestellung ist jetzt keine Bestellung mehr, sondern eine Rechnung.

Gedanken

Ich brauche ein wenig Hilfe, um den idealen Weg zu finden, dies zu modellieren, aber ich habe einige Gedanken.

  1. Ich denke, dass sowohl Entwurf / Angebot / Rechnung im Grunde eine Bestellung ist.
  2. Entwurf / Zitat / Rechnung brauchen separate eindeutige Nummern (IDs), also da ich getrennte Tabellen für alle von ihnen denke.

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:

  1. Entwurf / Angebot / Rechnung könnte verschiedene Artikel und Preise in den Auftragspositionen enthalten. In diesem Modell sind alle Entwürfe / Angebote / Rechnungen mit demselben Auftrag und auch mit Auftragspositionen verbunden, so dass separate Angebotszeilen / Zeichnungszeilen / Rechnungszeilen nicht möglich sind. Vielleicht werde ich dafür neue Tabellen erstellen, aber dann würde im Grunde die gleiche Information in mehreren Tabellen gespeichert werden, und das ist auch nicht gut.
  2. Manchmal werden zwei oder mehr Zitate zu einer Rechnung, wie würde dieses Modell das regeln?

Wenn Sie Tipps haben, wie Sie das besser modellieren können, lassen Sie es mich wissen!

BEARBEITEN: Datenmodell v.1.4

    
Martin 17.04.2011, 10:15
quelle

2 Antworten

5

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%     
Mike Sherrill 'Cat Recall' 17.04.2011, 11:34
quelle
6

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.

    
No'am Newman 17.04.2011 10:36
quelle