Was war zuerst da, der Prozess oder die von diesem Prozess verwendeten Daten? Ich weiß, dass dies eine Art "Henne oder Ei" -Frage ist, aber im Fall von Software glaube ich, dass dies der Prozess ist.
Zum Beispiel können Sie Ihr Datenmodell schrittweise aufbauen, indem Sie jeweils einen einzelnen Anwendungsfall mit nur speicherinterner Persistenz implementieren (oder alles, was so einfach zu implementieren ist). Wenn Sie der Meinung sind, dass Sie genügend Anwendungsfälle implementiert haben, um die grundlegenden Entitäten zu skizzieren, können Sie die speicherinterne Persistenz durch eine echte Datenbank ersetzen und dann das Schema bei jedem weiteren Anwendungsfall weiter verfeinern.
Dadurch wird der Fokus aus der Datenbank entfernt und zum Kern des Problems verschoben: den Geschäftsregeln. Wenn Sie mit der Implementierung der Geschäftsregeln beginnen, werden Sie schließlich feststellen (durch einen Prozess, der im Übrigen Natural Selection sehr ähnlich ist), welche Daten vom Unternehmen wirklich benötigt werden. Wenn Sie mit der Modellierung der Datenbank beginnen und nicht wissen, ob diese Daten wirklich benötigt werden (oder in diesem Format oder in diesem Normalisierungsgrad usw.), werden Sie am Ende entweder eine Menge später Anpassungen vornehmen das Schema (das möglicherweise umfangreiche Migrationsvorgänge erfordert, wenn das Unternehmen bereits damit arbeitet), oder Sie müssen "Workarounds" in den Geschäftsregeln implementieren, um das gestörte Datenmodell auszugleichen.
TL; DR: Die Datenbank hängt vom Geschäft ab - sie wird von ihnen definiert. Sie benötigen die Daten nur, wenn Sie über einen Prozess verfügen, der damit arbeitet (ein Bericht ist auch ein Prozess). Implementieren Sie zuerst den Prozess und Sie werden feststellen, welche Daten benötigt werden. Modellieren Sie zuerst die Daten, und Sie können möglicherweise nur zählen, wie viele Annahmen beim ersten Modellieren falsch waren.
Ein wenig außerhalb des Themas, aber sehr wichtig: Der von mir beschriebene Workflow wird häufig zusammen mit sehr wichtigen Methoden wie "Das Einfachste, was möglicherweise funktioniert", testgetriebener Entwicklung und dem Fokus, Ihre Architektur von den Details zu entkoppeln, verwendet sich in den Weg stellen (Hinweis: Datenbank). Über den letzten, fasst dieser Vortrag die Idee ziemlich gut zusammen.