Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Datenbank innerhalb von Klassen verwenden


Palladin007 - Mi 27.06.12 12:29
Titel: Datenbank innerhalb von Klassen verwenden
Moin


Ich möchte ein umfangreicheres Programm schreiben, habe selber bisher aber nur wenig Erfahrung mit Datenbanken und da ich das Programm mehr als Übungs-Projekt anfasse, kann ich auch vorher keine detaillierte Datenbank erstellen, die dann auch immer funktioniert.

Deshalb habe ich mir überlegt, erst einmal ganz normal mit Klassen zu arbeiten, die mittels XML speichern und wenn ich dann irgendwann das Programm fertig habe und sicher bin, dass es funktioniert, dann erstelle ich eine Datenbank, die genau an die bestehenden Klassen angepasst ist.
In jeder Klasse ist jede Eigenschaft oder Methode dann nur noch eine Schnittstelle zu der eigentlichen Datenbank, die alles enthält. Auf diese Weise kann ich weiter experimentieren, muss aber nicht immer umständlich die Datenbank anpassen und auch Änderungen in der Datenbank sind ohne großen Aufwand erledigt, weil ich dann nur die entsprechende Klasse anpassen muss, die die geänderten Tabellen nutzt.


Wird das auch tatsächlich so gemacht, oder gibt es bessere Möglichkeiten, eine Datenbank ohne Probleme und große Änderungen in dem Programm zu ändern?
Hat vielleicht jemand Tipps aus eigener Erfahrung für mich?



Gruß


PS: Ich würde dann MsSQL nutzen


Ralf Jansen - Mi 27.06.12 12:50

Zitat:
Wird das auch tatsächlich so gemacht, oder gibt es bessere Möglichkeiten, eine Datenbank ohne Probleme und große Änderungen in dem Programm zu ändern?


Ja object-relationale Mapper (ORMs) sind ziemlich üblich. Selber schreibt man einen aber eher selten gibt ja bereits genug. (Entity Framework, NHibernate, llblgen etc.).
Und fast alle unterstützen ein Model-First Ansatz so wie du in scheinbar wünscht.

Zitat:
Hat vielleicht jemand Tipps aus eigener Erfahrung für mich?


Aus meiner Erfahrung sage ich, auch wenn es geht sollte man es nicht so machen. Model-First läuft meistens darauf hinaus das man plötzlich Abhängigkeiten seiner Anwendungen die aus der Wahl der Sprache, Technik etc. folgen (nicht immer offensichtlich) in der Datenbank hat. Wenn man bedenkt das Daten üblicherweise länger halten als die Anwendung die sie benutzen (zumindest in Anwendung in denen es sich lohnt überhaupt über die Methodik nachzudenken) oder andere Anwendungen hinzukommen die ebenfalls auf den selben Daten arbeiten sollen sollte man mit einem möglichst sauber designten Datenmodell beginnen (egal ob relational, objektrelational, objektorientiert oder was auch immer) und dann über die Darstellung als Modell in einer konkreten Anwendung mit einer konkreten Technik.