ich brauch mal Anregungen von euch.
Zu einem Programm gehört eine
DB, die sich mit neuen Version des Programms erweitert/verändert. Passiert ja schon mal
Ich möchte beim Programm start die
DB überprüfen, ob alle Tabellen vorhanden sind oder welche gelöscht werden können, und ob alle Felder korrekt sind oder verändert werden müssen. Das ist vom Prinzip her ein Problem, das mach ich schon seit Jahren in einer Anwendung und läuft perfekt.
Nun wird die Anwendung aber komplett neu aufgebaut (es gibt verschiedene Gründe dafür, die aber mit der Frage nichts zu tun haben), und ich mache mir erneut Gedanken darüber, wie ich das elegant lösen kann.
Ich will also meiner Anwendung Informationen über die Datenbankstruktur mitgeben. Entweder als Datei, als Konstanten oder als Resource. Nur über die Struktur mache ich mir noch Gedanken.
Ich möchte folgende Fälle integrieren können:
- Hinzufügen von Tabellen
- Umbennen von Tabellen
- Löschen von Tabellen
- Hinzufügen von Feldern
- Umbennen von Feldern
- Löschen von Feldern
- Ändern von Datentyp, Länge, Defaultwert, Attribute von Feldern
- Datenmanupulation z.B. Zusammensetzen oder Aufteile von Daten
- Erstellen/Löschen/Ändern von Indizes
Vielleicht gibt es für sowas ja schon was schickes, was ich da Verwenden kann.
Zur Zeit sind meine Überlegungen bei einem einfachen Textformat.
z.B so:
Code:
+Table user
+Table config
-Table users
/Table MA Mitarbeiter
+Field user ID Int 0 0 * * ""
+Field user Name varchar 100 0 - * ""
-Field user Username
/Field user VName varchar 100 0 - * "" > Vorname varchar 200 0 - * ""
+Index user ID,Name
+ für Hinzufügen, - für Löschen und / für Ändern. Dahinter jeweils Information um was für ein Objekt es sich handelt und danach dann die entsprechenden Definitionnen.
Nur bevor ich mir jetzt die Arbeit mache das umzusetzen, will ich noch mal schauen, ob das nicht besser geht.
Natürlich habe ich auch darüber nachgedacht, DDL zu verwenden. Aber ich möchte das nicht direkt an den
SQL-Server schicken und dem das überlassen, sondern über mein Programm laufen zu lassen und eine Interaktion mit dem Benutzer zu ermögliche.