No database schema or default dataset is ever perfect, things always change as software evolves. It can become tricky to ensure that each deployed version of a system gets the right database configuration. At present in our project we attach a growing list of “roll forward” and “roll backward” scripts to each project, and rely on whoever does the deployment to make sure that the correct set of scripts is run before the application is started.
Always in the back of our minds is the search for a more robust and automatic solution. It looks like “LiquiBase” might be such a solution.