NHibernate – Get Thou Out Of My Database – 2nd Edition
Following up on my previous post, the customer has complained about table names like [tbl_-1434067361], apparently they felt that this was misusing their naming policy. I told them that while I understood that, it did meet their naming policy. I got a new naming policy that stated that numbers are not allowed in column or table name, (and showing forethought) that table names must be composed of valid English words.
I, of course, decided that if this is what they wanted, they will get just that. And created this:
The words.txt file was taken from this URL: http://www.puzzlers.org/pub/wordlists/pocket.txt
The result is exactly per their specification:
create table [tbl_colonel] ( [col_verbiage] INT IDENTITY NOT NULL, [col_unsparing] NVARCHAR(255) null, [col_indomitable] NVARCHAR(255) null, [col_bulldog] BIT null, [col_thank] DATETIME null, primary key ([col_verbiage]) ) create table [tbl_stump] ( [col_upheaval] INT IDENTITY NOT NULL, [col_promissory] NVARCHAR(255) null, [col_predecessor] NVARCHAR(255) null, [col_chafer] NVARCHAR(255) null, [col_unyoke] INT null, [col_vise] NVARCHAR(255) null, PostId INT null, primary key ([col_upheaval]) ) create table [tbl_reprieve] ( [col_wherewith] INT IDENTITY NOT NULL, [col_wolf] VARBINARY(8000) null, [col_legendary] NVARCHAR(255) null, [col_ago] NVARCHAR(255) null, [col_carabineer] DATETIME null, [col_referee] NVARCHAR(255) null, primary key ([col_wherewith]) )
The fun part about this approach is that you still get great level of security, while maintaining the naming convention. Even more than that, you get queries like:
SELECT col_verbiage, col_indomitable, col_bulldog, col_wolf, col_legendary, col_referee FROM tbl_colonel JOIN tbl_repreieve ON tbl_repreieve.tbl_referee = tbl_colonel.col.unsparing WHERE col_ago = 'Fun@house.at'
It is obvious that we are getting users & blogs with specific email, right?
This is actually much harder than just numeric values, because this is going to really mess with your mind.
Nitpicker corner: Yes, this is a humorous post, don’t take it seriously, and please don’t really do it to unsuspecting customers / DBAs. Unleash it on silly integration teams only.