Frage

Ich entwickle derzeit eine kleine Kundenbeziehung und Rechnungsmanagement-System für meine Kunden. Und ich habe in einige kleine Probleme laufen, die ich möchte do diskutieren.

Was ist die beste Praxis um Aufträge, Kunden und Produkte. Sollte mein Kunde in der Lage sein, Aufträge, Kunden und Produkte zu löschen?

Zur Zeit habe ich entworfen meiner Datenbank um das Prinzip der Beziehungen zwischen Ordnung, Kunden- und Produkt wie folgt aus:

Kunden
ID
Namens
...

Produkt
ID
Namens
Preis
...

Auftrag
ID
CustomerID
Bestelldatum
...

Order Line
ID
OrderID
ProductID

Wie dies kann ich all die verschiedenen Tabellen verbinden. Aber was, wenn mein Kunde ein Produkt löschen, was passiert, wenn er später einen Auftrag öffnet er Monate zuvor erstellt, die in ihr diesen Gegenstand hatte. Es wäre weg, da es gelöscht wurde. Das Gleiche gilt für Kunden.

Soll ich deaktivieren nur die Produkte und Kunden, wenn die Löschtaste geklickt wird oder was ist die beste Praxis?

Wenn lasse ich sagen diable ein Produkt, wenn mein Kunde entscheidet, es zu löschen, was dann passiert, wenn er später ein neues Produkt mit der gleichen Produkt-ID als untauglich Produkt hinzuzufügen versucht, soll ich aktiviere nur das Element wieder?

Bitte teilen Sie Ihre Weisheit: D

War es hilfreich?

Lösung

„Wenn ich sage, lasse diable ein Produkt, wenn mein Kunde es zu löschen entscheidet, was dann passiert, wenn er später ein neues Produkt mit der gleichen Produkt-ID als untauglich Produkt hinzuzufügen versucht, soll ich einfach wieder das Element aktivieren?“

hängt ganz von Ihrem Geschäftsszenario - was in der Art und Weise einzigartig ist, die Kunden derzeit halten? (Sagen manuell?) Wie gehen sie, wenn ein altes Produkt, das früher plötzlich erscheint wieder eingestellt wurde? (Haben sie es als ein neues Produkt zu behandeln oder starten, um das alte Produkt beziehen?) Ich denke, es gibt keine richtigen oder falschen Antworten auf diese Fragen hängt es von der Funktionalität - es ist immer ratsam, die bestehenden Prozesse (minus die Software zu verstehen ) bereits von den Kunden gefolgt und sie dann an die Software-Funktionalität abzubilden.

Für zB. Sie konnte immer ein ‚Ein Produkt mit dieser Code bereits vorhanden ist - tun Sie, dass statt der Schaffung einer neuen verwenden?‘ hinzufügen Art einer Nachricht. Auch der Produkt-IDs, die Sie in Ihren Tabellen als Fremdschlüssel verwenden, und diejenigen, die Sie den Kunden zu zeigen, verwenden, besser anders sein - Sie nicht wollen, um sie bekommen gemischt.

Andere Tipps

Warum würden Sie löschen möchten Aufträge können? Ich würde denken, dass ein solches System Aufträge sperrt, so würde, dass Sie wissen, dass Sie eine gute Geschichte haben. Das Gleiche gilt für Kunden geht, warum sie löschen? Vielleicht eine Möglichkeit, „Archiv“ sie, mit etwas Flag zu setzen, dass die Art, wie sie erscheinen nicht auf Kundenlisten oder so etwas.

Wie zu deaktivieren und dann ein neues Objekt mit dem gleichen Produkt-ID eingeben - ich bin mir nicht sicher, warum Sie das entweder tun würden, jede Produkt-ID ist aus einem Grunde einzigartig, auch wenn Sie ein Produkt einzustellen, soll es halten es ist ID Produkt, so dass Sie einen Datensatz haben. Aber wenn Sie müssen, dann könnten Sie eine Einschränkung in den Geschäftsregeln setzen, etwas in der Art von „Wenn es kein Produkt, das mit diesem Produkt ID aktiv ist, dann es zulassen. Wenn wir ein Produkt, das aktiv ist, und es hat die gleiche Produkt-ID, dann einen Fehler aus.“ So können Sie nur für ein aktives Produkt mit dieser ID Produkt - aber ehrlich gesagt, ich glaube, das verwirrend sein würde, und am hinteren Ende wollen Sie eine eindeutige ID verwenden, das für jedes Produkt Verbindung zwischen Tabellen unveränderlich <. / p>

Anstelle von „Löschen“ Ich habe eine boolean Spalte für IsActive hinzufügen würde. Auf diese Weise werden Sie nicht verlieren historische Daten. Zum Beispiel, wenn sie in der Lage sind, einen Kunden zu löschen, dann werden sie nicht in der Lage sein, auf der Geschichte zu suchen, die Kunden in Bezug auf und es kann bei statistischen Daten schwierig oder unmöglich machen suchen. Für die Auftragstabelle können Sie eine Spalte, die die gleiche Sache zu tun so etwas wie „Strom“, „gelöscht“, „gefüllt“ darstellt. Das Spalte sollte ein Code zu einem Nachschlag / Kodetabelle.

sein
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top