On Simple-Talk there’s a really good article on five database design flaw that are commonly found in solutions and that should be avoided. The article is a must-read:
http://www.simple-talk.com/sql/database-administration/five-simple--database-design-errors-you-should-avoid/?utm_source=simpletalk&utm_medium=email&utm_content=DatabaseDesign20090519&utm_campaign=SQL
The sentences I like the most are the following:
“Rely on nothing else to provide completeness and correctness except the database itself. By nothing, I mean neither users nor applications external to the database. While it may be true that current DBMS products may not succeed in enforcing all possible constraints, it is not sensible to let the application or user take over that responsibility.
You may ask why it is bad to rely on the application to enforce data-integrity? Well, if there is only one application per database, then it is not really an issue. But usually, databases act as the central repositories of data and serve several applications. Therefore, rules must be enforced across all these applications. These rules may change as well.”
This is something I keep telling to developer from years (ages?). The more we are to say it, the more probable will be that developers will start to see it right.
Thanks to Davide Senatore for helping me to discover this article.