In meiner Erfahrung ist die Lösung zweigleisig:
-
Sie müssen Änderungen an der Entwicklungsdatenbank handhaben, die von mehreren Entwicklern während der Entwicklung durchgeführt werden.
-
Sie müssen Datenbank-Upgrades auf den Kundenseiten handhaben.
Um #1 zu handhaben, benötigen Sie ein starkes Datenbank-Diff/Merge-Tool. Das beste Tool sollte automatische Merges so weit wie möglich durchführen können, während es Ihnen ermöglicht, ungelöste Konflikte manuell zu lösen.
Das ideale Tool sollte Merge-Operationen mithilfe eines 3-Wege-Merge-Algorithmus durchführen, der die Änderungen berücksichtigt, die in der THEIRS-Datenbank und der MINE-Datenbank im Vergleich zur BASE-Datenbank vorgenommen wurden.
Ich habe ein kommerzielles Tool entwickelt, das manuelle Merge-Unterstützung für SQLite-Datenbanken bietet, und ich füge derzeit Unterstützung für den 3-Wege-Merge-Algorithmus für SQLite hinzu. Schauen Sie es sich unter http://www.sqlitecompare.com an.
Um #2 zu handhaben, benötigen Sie ein Upgrade-Framework.
Die grundlegende Idee besteht darin, ein automatisches Upgrade-Framework zu entwickeln, das weiß, wie man von einem vorhandenen SQL-Schema auf das neuere SQL-Schema aktualisiert und einen Upgrade-Pfad für jede vorhandene DB-Installation erstellen kann.
Schauen Sie sich meinen Artikel zum Thema unter http://www.codeproject.com/KB/database/sqlite_upgrade.aspx an, um eine allgemeine Vorstellung davon zu bekommen, worüber ich spreche.
Viel Glück
Liron Levi