Thank you to Karen Lopez for finding and praising a blog post by Anith Sen. He writes about database design errors, Karen disagrees with some of Anith's conclusions in her blog which goes to illustrate that design is a mix of art and science and that even experienced practitioners will disagree over details.
Anith observes that "an application can trespass on the field of data management" and that developers sometimes "treat the database as being a mere component of the ‘application domain’". Particular skills and experience are required to manage data and to create and maintain databases. Data management differs on at least two levels:
- At the programming level, being able to write an SQL statement is not the same being able to design a database. The set based thinking required to develop design a database effectively is very different to the procedural thinking required by most programming languages.
- Databases have a different life-cycle to applications and they are often shared between applications.
In my previous blog, Vive la différence, I stated that we do not train people in design. I think this is a illustration of this point. We often don't teach an understanding of data management and its approaches. This results in designers and architects having a poor understanding of the role of databases in the application landscape and people like Anith having to pick up the pieces.