1. Version Control Database Assets: Having these in version control provides greater control over changes, couples databases and applications, integrate in version control instead of database.
2. Swap best practices: educate DBA about coding practices, educate developers about SQL, automate tasks (physical table deployment, usage statistics, schema verification, data migration verification)
3. Give everyone a sandbox: each developer has his own copy of the database. Have a script to create a database, create all the tables, views, etc, insert seed data and test data. Use dbdeploy tool.
4. Continues Integration: Since sql script is in version control, then it can also be part of continues integration. Migration scripts always get tested.
5. Scaffolding: The old and new schema work together until all apps have been migrated to use the new schema
6. Controlled Release: merge all deltas into release script, branch sql script with code
7. Assert Database Behavior: test the database behavior. Check for unique indexes, nulls, other constraints
This presentation is available on InfoQ at http://www.infoq.com/presentations/refactoring-databases