Eine Möglichkeit besteht darin, Ihre Modelle zu entwerfen, bevor Sie Ihre Datenbank entwerfen. Beim Entwerfen Ihrer Modelle liegt der Schwerpunkt auf der Erfassung der Geschäftslogik und der Bedeutungen innerhalb der Problemdomäne. Dies sollte auf eine Weise erfasst werden, die für das Unternehmen sinnvoll ist und mehr als nur Entitäten und Datenfelder umfasst. Einige Datenelemente werden von anderen interpretiert, andere hängen von anderen ab usw. Zusätzlich würden Sie diesem Modell jede grundlegende Logik hinzufügen, die Sie benötigen, z. B. wie ein Objekt intern reagiert, wenn ein bestimmtes Element auf einen bestimmten Wert festgelegt wird.
Es ist sehr wahrscheinlich, dass Sie am Ende etwas haben, das zu 90% mit der Art und Weise identisch ist, wie Sie die Daten beibehalten. Das ist gut. Es kann völlig identisch sein, ohne gekoppelt zu sein.
Beachten Sie auch, dass das Modellieren der Domäne in einem Nebel wahrer Unwissenheit über die Persistenz ein heiliger Gral für das Software-Design ist. Wenn du es schaffst, fantastisch. Wenn die Problemdomäne jedoch überhaupt von Bedeutung ist und eine gewisse Komplexität aufweist, ist es immer noch eine gute Idee, von Zeit zu Zeit von der Domänenmodellierung zurückzutreten, um eine Überprüfung der Datenpersistenz durchzuführen, um sicherzustellen, dass Sie nicht gemalt haben dich in eine Ecke.
Denken Sie nur an die tatsächlichen Rollen der verschiedenen Komponenten und lassen Sie diese Rollen beim Entwerfen getrennt. Fragen Sie sich bei einer bestimmten Entwurfsentscheidung, ob eine dieser Rollen verletzt wird:
- Datenbank - Speichern Sie die Daten, bewahren Sie die Integrität der Daten und halten Sie die Daten in Ruhe.
- Modelle - Enthalten die Geschäftslogik, modellieren die Problemdomäne, halten die Daten in Bewegung, reagieren auf Ereignisse auf Unternehmensebene usw.
- Ansichten - Präsentieren Sie den Benutzern Daten, führen Sie eine benutzerseitige Logik durch (grundlegende Validierung, bevor eine echte Validierung in den Modellen durchgeführt wird usw.).
- Controller - Reagieren Sie auf Benutzerereignisse, übergeben Sie die Kontrolle an Modelle, leiten Sie Anforderungen weiter und geben Sie Antworten zurück.