Reworked notes from Scott Ambler’s MySQL UC 2006 presentation on database agility.
If the quality of your data is important, are you testing it?
If your business (or your understanding of your business) changed, could you change your database schemas quickly and easily?
Is Your Database Agile Enough?
If your developers know the risk of trying to design all of their software up front without getting any user feedback on the code, the interface, and the features they really need, why is modeling your database up front any safer?
Scott Ambler’s Agile Data suggests applying the principles of agile software development (as exhibited by Extreme Programming, Scrum, and other approaches) to databases. This includes refactoring and testing (do you have tests for your stored procedures and triggers? Why not?).
Suggest that to a group of experienced DBAs, then duck.
Assuming that change is expensive gets us tools that make change expensive. Assuming that change can be cheap means that we have to invent tools that make change cheap.
The history of software development shows that projects have little chance of success without real data. Now sometimes, some projects have enough real data at the start to make all of the design decisions right then. In general, these projects tend to control space shuttles and long-range satellites, where the hardware never gets upgraded and if Mars moves out of a position you can predict decades in advance, everyone will have bigger worries than the software running one space probe or another.
That doesn’t make refactoring databases easy — there are challenges such as maintaining parallel schemas. Yet refactoring in small, maintainable, transformations works for code and it can work for data too. You do need more information and you do need discipline, but your job is not to prevent change. Your job is to provide business value.
Making necessary changes in safe, controlled, and intelligent ways is part of that. As Ambler argued, unless your brain completely stops working, if you can model things up front, you will have those modeling skills later when you really need them.