Database Implementation Woes
My wife says I’m slightly OCD. Myself? I acknowledge that I’m somewhat picky when it comes to certain things. One of these is database implementation. I’m not sure how I started down this path or how I became such a freak, but at some point, I resolved to write all of my DDL by hand (I do the same for HTML, CSS, and JavaScript, ASP.Net (controls too; no drag and drop here!)). I started using only Enterprise Manager myself, but eventually ended up almost exclusively using Query Analyzer. I find it weird as I’m not a command line freak by any means, but I absolutely insist on writing every line of DDL myself.
That’s right, none of this create in a GUI and export the script deal; all hand written SQL from the start for me.
Am I being elitist in this manner, then? I don’t think so. There are clear advantages to this approach as it allows for fine grained table structure tuning and a certain level of visibility. If I design a database table with certain constraints, it’s easy to see those constraints laid out in the code but not so easy to see them in a GUI where those same constraints may be hidden behind dropdown boxes and multiple forms. Another big advantage is inline comments to convey reasons why a table has a certain structure or how a relationship works or some quirky design. It’s good to have the comments inline instead of in a separate document so one doesn’t have to keep referencing two documents.
Sidenote: I think this is why I have a dislike for many solutions that leave a lot of functionality hidden behind complex GUIs like BizTalk, Reporting Services, and DTS. As cool as BizTalk is, I hated working with it because it involved so much damned clicking, scrolling, and mouse movement in general to get anything done.
Being as fussy as I am, it kind of riles me up when I’m handed generated DDL scripts as 1) the formatting is never satisfactory and it’s hard to read due to the added tokens inserted by SQL Server Enterprise Manager, 2) there are no inline comments so I can’t tell the designer’s intentions and makes it difficult to understand wacky design decisions, 3) there is no default data generated.
For the purposes of testing in a team environment, it helps tremendously to have hand written DDL scripts that create the necessary data objects along with the proper permissions and insertion of test data. It’s incredibly infuriating (yes, infuriating, I sit here and mumble curse words and slap my forehead in disbelief) when I receive exported DDL. For all intents and purposes, it seems…unprofessional and, to borrow a term from gaming lexicon, noobish. It causes me psychological anguish to deal with exported DDL. Gah!
Okay, I guess enough moaning :-S