AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs
Thema durchsuchen
Ansicht
Themen-Optionen

Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

Ein Thema von s.h.a.r.k · begonnen am 16. Apr 2012 · letzter Beitrag vom 17. Apr 2012
Antwort Antwort
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#1

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 16. Apr 2012, 11:40
Ich möchte hier mal den Begriff CQRS in die Runde werfen. Soweit ich das verstanden habe, werden hier genau solche Übergänge gespeichert. Hier ist mal ein kleines Beispiel (allerdings in C#): click.

Der eigentliche Witz daran ist, dass die sog. Events als auch ein ReadModel gespeichert wird. Die Events sind z.B. CustomerCreatedEvent. In diesen Events kann dann alles gespeichert werden, was mal interessant sein könnte (wer wars, wann, usw). Das ReadModel kann jederzeit wieder komplett aus diesen Events erneut hergestellt werden. Davon abgesehen bekommt man ein Audit direkt mitgeliefert.

Hier findet sich dann auch noch ein größeres Framework dazu (wieder C#).

Gruß
schlecki
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#2

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 16. Apr 2012, 11:58
Du möchstest eine klassisches Datastore zusammen mit den Produktivdaten speichern.

Unterteile die Aufgabe in: Auftragshistorie und aktueller Zustand des Auftrags. Um die Historie zu modellieren, überlegst Du dir, welche Fragen (=Queries) du beantwortet haben möchtest und bastelst Dir dann die Tabelle so, das die Frage effektiv beantwortet wird.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 16. Apr 2012, 12:00
Aus dem Bauch heraus hätte ich gesagt, eine Tabelle mit den Zuständen und allen zustandsspezifischen Felder. Kommt ein neuer Zustand hinzu, musst halt neue Felder hinzufügen, sonst halt gleich mal eine neue Tabelle. Da du im Code vermutlich eh auf eine unterschiedliche Logik je Zustand eingehen wirst müssen, kannst dort dann auf die entsprechenden Felder zugreifen. DB-seitig hätte ich die gültigen Kombinationen aus Zustand und zustandsspezifischen Daten über einen Constraint sichergestellt. Mit dem Constraint läuft man dann halt ev. in das Problem, dass der Constraint DB-seitig geändert werden muss, wenn sich in der Logik etwas ändert. Hier ist halt die Frage, ob sich mehrere Applikationen diese Datenbank teilen oder ob jemand mit einem SQL-Tool direkt draufgehen kann und dort dann Änderungen vornimmt, die die Anwendung dann nicht mehr verarbeiten kann etc. Ist schnell mal eine Glaubensfrage und wahrscheinlich stellt sich später heraus, dass es anders besser gewesen wäre.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 16. Apr 2012, 12:44
Dass es auf eine Art "Glaubensfrage" hinaus läuft ist mir schon irgendwie klar. Genau deswegen höre ich mir ganz gerne immer andere Meinungen an und entscheide dann, was sinnvoller ist Eine perfekte Lösung scheint es dafür ja nicht unbedingt zu geben, wie mir bei meiner eigenen Argumentation schon aufgefallen ist. Jedes Design hat eben seine Vor- und Nachteile.

Das mit den Constraints hatte ich so noch nie genutzt. Werde daher wohl eher auf eine Tabelle ausweichen und damit mal hantieren.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 16. Apr 2012, 13:08
@schlecki
ich darf mich jeden Tag mit "Event-Tabellen" auseinander setzen.
Was in der Theorie elegant und vernünftig scheint, ist in der Praxis, vor allem wenn rale Menschen z.B. über die Auswahl eines Events entscheiden nur knapp vom Chaos entfernt.

Zum einen "verklickt" man sich gerne bei der Auswahl, zum anderen hat jeder Benutzer seine eigene Philosopie, wie Daten zu erfassen sind.
Und wenn man darauf hinweist, das das falsche Event gewählt wurde kommt als Antwort:
"ich seh doch alles auf dem Bildschirm"

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#6

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 17. Apr 2012, 08:38
Der Benutzer kann ja nicht direkt ein Event auswählen. Er wählt z.B. "Kundenadresse ändern", ändert diese. Intern wird dann dieses Event erzeugt und gespeichert - damit man es auch wieder performant lesen kann, wird es direkt in ein ReadModel übersetzt (also hier wieder in einen Kundendatensatz mit der aktuellen Adresse).

Welche Events da nun wie gespeichert sind, ist ja eigt. nur für eine Historie interessant - oder wenn man das ReadModel neu aufbauen will/muss.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

AW: Von Flag abhängige Informationen/Tabellen innerhalb eines DB-Designs

  Alt 17. Apr 2012, 17:48
Die Frage ist doch:
müssen die zusätzlichen Daten für die Tabelle OrderState per SQL erreichbar sein?

Falls nicht, kann man alle Zusatzdaten bequem in einem (Blob-)Feld unterbringen.
Abhängig von der Datenmenge reicht vielleicht auch ein varchar(250) Feld aus.
Die Zusatzdaten können z.B. so ausehen:
Code:
A=0,B=-1,C=test@info.com
X=150.0,Y=100978578-6777334,Z=
Oder man verwendet JSON.
Oder anstatt die Daten direkt in der Tabelle OrderState zu speichern, speichert man dort nur den Schlüssel einer seperaten Blob-Tabelle.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz