Толкова много хора се опитват да правят подобни неща (диф схеми). Моето мнение е
- Изходният код влиза в инструмент за контрол на версиите (Subversion, CSV, GIT, Perforce ...). Отнасяйте се към него като към Java или C код, наистина не е по-различно. Трябва да имате инсталационен процес, който го проверява и прилага към базата данни.
- DDL Е ИЗХОДНИЯ КОД. Влиза и в инструмента за контрол на версиите.
- Данните са сива зона - справочните таблици може би трябва да са в инструмент за контрол на версиите. Генерираните от приложението данни със сигурност не трябва.
Начинът, по който правя нещата в наши дни, е да създавам миграционни скриптове, подобни на миграциите на Ruby on Rails. Поставете вашия DDL в скриптове и ги стартирайте, за да преместите базата данни между версиите. Групирайте промените за издание в един файл или набор от файлове. След това имате скрипт, който премества вашето приложение от версия x във версия y.
Едно нещо, което никога повече не правя (и го правех, докато не се научих по-добре), е да използвам всякакви GUI инструменти за създаване на обекти на база данни в моята среда за разработка. Напишете DDL скриптовете от ден 1 - те така или иначе ще ви трябват, за да популяризирате кода за тестване, производство и т.н. Виждал съм толкова много хора, които използват GUI, за да създадат всички обекти и идва времето за пускане, има скраб, който да се опита да произведе скриптове за правилно създаване/мигриране на схемата, които често не се тестват и се провалят!
Всеки ще има свои собствени предпочитания как да направи това, но съм виждал много неща, направени зле през годините, което формира мнението ми по-горе.