Bevorzugte Art und Weise abzubilden Code mit Benutzern erstellten Datenbankeinträgen

StackOverflow https://stackoverflow.com/questions/332466

  •  22-07-2019
  •  | 
  •  

Frage

Ich versuche, das beste Datenbankmodell für das aktuelle Setup zu arbeiten:

Ein Administrator kann „Kundenprodukte“ erstellen. Dies bedeutet, Dienstleistungen / Produkte, die Kunden anhängen / abonnieren. Die einfachen Fälle, in denen das Produkt einfach einen Preis kostet, oder das Produkt Abonnement sollte eine E-Mail ist einfach zu modellieren in der Datenbank senden.

Aber wie wäre es sehr spezifische Backend-Code für einen Kunden Produkt? Zum Beispiel könnte ein Produkt sehr spezifischen Code zur Überprüfung eines Kundenstatus auf einer anderen Datenbank implementiert haben. Wie kann ich diese Beziehung in der Datenbank zuordnen, so kann ich mich wenden / Ausschalt einige Codes auf der Grundlage der Produkteinstellungen aus.

Meine intuitive Art und Weise es von der Handhabung wäre eine String-Spalte auf dem CustomerProducts Tisch zu haben, wo eine vordefinierte Menge von Zeichenkette eingestellt werden könnte, zum Beispiel „MyCustomCodeHandler“, und dann würde der Code überprüft für die Existenz dieser Zeichenfolge, um es auszuführen. Aber für mich ist es nicht wirklich das Gefühl, eine echte Beziehung zwischen der Datenbank und Code.

War es hilfreich?

Lösung

Die Daten sind Daten, während Code-Code ist. Ich würde die Speicherung Code in der Datenbank nicht empfehlen.

Wenn Sie benötigen, damit die Kunden Produkttypen erstellen (in dem objektorientierten Sinne von „Typen“) mit zugehörigem Code, ich wählen würde, dass Code in der gleichen Art und Weise zu implementieren Sie andere Code bereitstellen.

Der Code benutzerdefinierte kann verweist auch benutzerdefinierte Daten in der Datenbank gespeichert. Ich würde wählen Sie eine abhängige Tabelle pro Produkt Subtyp zu erstellen, und setzen die typspezifischen Spalten drin. Die Beziehung zwischen dieser Subtyp Tabelle und der generischen Produkttabelle ist ein Eins-zu-eins. Das heißt, der Primärschlüssel in der Subtyp Tabelle ist auch ein Fremdschlüssel für die allgemeine Produkttabelle.

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