Angenommen ich habe eine fertige Datenbank-Applikation (in meinem Falle SQLite als DB). Und weiterhin angenommen ich möchte nun weitere Funktionen und damit weitere Spalten, Tabellen, Schlüssel usw. einfügen.
Wenn die Anwendung schon bei Usern installiert ist, muss beim Installieren (oder spätestens beim ersten Starten) der neuen Version die Struktur der vorhandenen Datenbank mit aktualisiert werden, damit sie zur Anwendung passt.
Das Aktualisieren der Struktur an sich ist kein Problem. Aber wie bekomme ich heraus, dass ich ak-tualisieren muss? Die Aktualisierung soll ja nur ein Mal pro Version laufen. Außerdem muss man auch solche Fälle beachten, in denen der User nicht linear (Ver. 1, dann Ver.2, dann Ver.3, usw.) seine Software updated, sondern dass er auch mal einige Versionen überspringen könnte (Ver.1, dann Ver.4). Auch dann müssen ja alle Aktualisierungen aller Versionen laufen, und nicht nur die der letzten Version.
Ich habe mir überlegt, dass man eine Tabelle (1 Tabelle, 1 Spalte, 1 Datensatz) anlegt, in der die Version der Struktur der Datenbank steht. Wenn die Version der Software höher ist, weiß die Software, dass die Struktur aktualisiert werden muss.
Das erscheint mir aber zum einen etwas unsicher, und zum anderen auch mit Kanonen auf Spatzen geschossen.
Hat die Datenbank nicht vielleicht eine Eigenschaft genau für diesen Zweck, die man per Code setzen kann, und die auch persistent ist?
Oder wie geht ihr in einem solchen Fall vor?
Wenn die Anwendung schon bei Usern installiert ist, muss beim Installieren (oder spätestens beim ersten Starten) der neuen Version die Struktur der vorhandenen Datenbank mit aktualisiert werden, damit sie zur Anwendung passt.
Das Aktualisieren der Struktur an sich ist kein Problem. Aber wie bekomme ich heraus, dass ich ak-tualisieren muss? Die Aktualisierung soll ja nur ein Mal pro Version laufen. Außerdem muss man auch solche Fälle beachten, in denen der User nicht linear (Ver. 1, dann Ver.2, dann Ver.3, usw.) seine Software updated, sondern dass er auch mal einige Versionen überspringen könnte (Ver.1, dann Ver.4). Auch dann müssen ja alle Aktualisierungen aller Versionen laufen, und nicht nur die der letzten Version.
Ich habe mir überlegt, dass man eine Tabelle (1 Tabelle, 1 Spalte, 1 Datensatz) anlegt, in der die Version der Struktur der Datenbank steht. Wenn die Version der Software höher ist, weiß die Software, dass die Struktur aktualisiert werden muss.
Das erscheint mir aber zum einen etwas unsicher, und zum anderen auch mit Kanonen auf Spatzen geschossen.
Hat die Datenbank nicht vielleicht eine Eigenschaft genau für diesen Zweck, die man per Code setzen kann, und die auch persistent ist?
Oder wie geht ihr in einem solchen Fall vor?