Angenommen, ich habe ein Kundenobjekt mit allen Standardeigenschaften des Kunden (Name, Adresse, Kontakt usw.). Wir erhalten einen neuen Kunden (Acme), der eine sehr spezifische Anfrage hat, dass Rechnungen, die wir an sie senden, unsere ID als Barcode haben. Wir wollen das nicht für alle anderen Kunden, deshalb beabsichtigen wir dies als Sonderfall für Acme. Nehmen wir nun an, dass viele Kunden diese kleinen einmaligen Anforderungen haben.Entitätsspezialeigenschaften und Datenbanknormalisierung
Ich sehe ein paar Möglichkeiten und ihre Vorteile/Nachteile:
1) Fest programmiert, an der Stelle der Abweichung, für ID oder Kundennamen überprüft, was diese Daten dem besten Weg, um Modus wäre.
Vorteile: Geringster Aufwand, Single Point of Integration
Kompromiss: Sloppy Code, sehr anfällig für Fehler. Das Ändern von Flags erfordert eine neue Bereitstellung. Schwierig, Abweichungen zu finden, wenn die Anzahl der Eigenschaften zunimmt.
2) DB-Spalten auf Kunden für jede Eigenschaft. Flags würden für den einen Kunden auf wahr gesetzt werden, für alle anderen falsch.
Vorteil: relativ einfach, Eigenschaften können im laufenden Betrieb geändert werden
Kompromiss: Macht sehr breite Datenbanken und schlampig Schema. Je mehr Eigenschaften hinzugefügt werden, desto unübersichtlicher werden die Daten. Der Code wird auch schlampig, da viele unnötige Eigenschaften zugeordnet werden müssen.
3) Fest codierte Eigenschaftenzuordnung. Eine Map, die spezielle Eigenschaften für Kunden enthält. Die Karte kann dann für spezielle Eigenschaften angefordert werden, und der Code-Ablauf kann von dort ausgehen.
Vorteile: Single Point of Management.
Nachteil: Hardcoded. Kundennummern/Namen wären im Code enthalten. Das Vornehmen von Änderungen erfordert Bereitstellungen.
4) CustomerProperty-Tabelle mit Schlüssel/Wert-Spalten.
Vorteile: Sauber. Einziger Punkt der Verwaltung. Dynamisch.
Nachteile: Relative Komplex, im Vergleich zu den anderen Lösungen.
Offensichtlich würden Entscheidungen je nach den Umständen variieren. Wenn wir Hunderte von Abweichungen haben, wäre es wichtig, einen einzigen Punkt der Verwaltung zu haben. Wenn es wirklich eine einmalige Abweichung wäre, denke ich, # 1 wäre okay, wenn auch hackisch.
Ich habe meine Meinungen über das Beste in diesem Fall .... aber ich würde gerne die Meinungen aller anderen kennen.
2, und vielleicht 1, gut genug für eine einzige Situation. Aber Sie sagten ausdrücklich: "Angenommen, viele Kunden haben diese kleinen einmaligen Anfragen", was bedeutet, dass dies eine wiederkehrende Situation ist, die Sie im Laufe der Zeit unterstützen müssen, und meiner Meinung nach 4 ist der Weg zu gehen. Verwenden Sie auf jeden Fall ein Modell wie das von Lumpynose, das viele beschreibende Informationen zu jedem Spezialfall enthält. –