Agile Development for Database Schemas
I've recently been working on improving the Database Change procedures and Deployment procedures where I work. We like to turn around releases every 2-4 weeks or so but sometimes the friction of keeping a sane and organized development process slows us down. At this point I would rather be slow than to introduce errors to our production environments but I am always looking for ways to improve accuracy and speed of our processes.
I found a fantastic article by Martin Fowler titled Evolutionary Database Design. He touches on the way his organization is managing database schema changes for projects. You can read it here: http://www.martinfowler.com/articles/evodb.html
I paid special attention to the "Tools to Help" section which includes a lot of what my DBA group is tasked with every day. If we could enable the developers to do this for themselves that would help them become more DB savvy and would reduce our workload. The challenge is getting developers to _want_ to do these things for themselves. After swimming in Java Class Files and UML diagrams I find most developers don't care very much about the DB.
There are some points I have to take under consideration.
* Keep scripts around to create a new database + sample data. Unfortunately we're about to hit the 900+ table mark. We don't have the manpower to spend on something like this unless we keep it really simple. Currently our sample datasets range from hundreds of records to tens-of-millions of records. This will require some more thought, and definitely require some more manpower to implement.
* Keep multiple database lineages. I like this idea because a lineage will follow a Java code branch as it is sprung and it is merged back into the trunk.
There is also a Yahoo Group for Agile Database Development here: http://groups.yahoo.com/group/agileDatabases . Its been around since 2002 and gets a few dozen messages a month. I will be spending some time reading the archives to see what territory has been covered.