The Battle Against Lawless Database Design

One of the most entertaining sessions I attended at the recent PASS conference was “Much Ado: A Panel discussion about Nothing”. I never fail to be amazed by the passion and energy that a bunch of database guys will put into a debate about “don’t know” (null), and its many nuances.

This debate inevitably can lead to the conclusion that some developers really just don’t get null, or three-value logic, or relational databases in general, and yet get put in charge of database design. The result is fundamental design flaws, poorly performing applications, and over-stressed and prematurely-aged DBAs.

From its inception, SQL Server has been relentlessly promoted as the “self maintaining” database. Anyone can use it! Heck, it even tunes itself! You don’t need one of those expensive DBAs! No it isn’t, no they can’t, no it doesn’t (it collects some statistics, which is far from the same thing), and yes you do.

SQL Server has travelled a very long way from its “desktop” origins, and yet many IT managers persist in viewing SQL Server applications almost exclusively in terms of the application and so put the whole design in the hands of .NET developers. Many of these developers are database-savvy, but if they are not, the result is:

  • Poorly normalized databases
  • Data type abuse (for ultimate flexibility, try sql_variant (max)!)
  • Absent or badly-written where clauses
  • No stored procedures, constraints or sometimes even keys
  • Direct table access and dynamic SQL
  • An indexing desert….or “chaos indexing”
  • A null desert….or “chaos null”

The list could go on. Enough is enough. It is time to draw a line in the sand. I encourage you to join the Battle Against Lawless Database Design (or project Baldy as I affectionately call it). Its goal is to encourage Microsoft to put out a strong message of support for SQL Server development DBAs. They need to state, loudly and clearly, that any application built on SQL Server will succeed or fail according to how effectively it uses the database, and that their development team must include someone who knows SQL Server and relational databases intimately, and who is responsible for making sure the database is correctly designed and tuned.

So the next time you encounter one of the problems listed above, cross your arms, adopt a stern posture and say…enough is enough.


I hope to get Joe Celko as the first signed-up member ;).

As always, comments, objections and battle volunteers are greatly appreciated. The best post, added as a comment to this blog, will receive a $50 Amazon gift voucher.