[dba-SQLServer] Opinions invited: question about normalization

Jim Lawrence accessd at shaw.ca
Wed Jan 7 17:49:25 CST 2015


IMHO, there are all sorts of rules and standards. When starting in the business of database understanding and following the tried and true recommendations is the only logical way to go but as you become more experienced you learn when to break the rules.

When it comes to extracting the appropriate data from a data store, as you become more experienced, rules become guidelines and not walls. Some senior database gurus use hybrids, of their own designs, to rip matching data, sql to further filter, sort and organize and then functions to assemble the final results. 

The only criteria then is accuracy and performance.

Jim     

----- Original Message -----
From: "Arthur Fuller" <fuller.artful at gmail.com>
To: "Peter Brawley" <peter.brawley at gmail.com>
Sent: Saturday, December 27, 2014 10:13:54 AM
Subject: [dba-SQLServer] Opinions invited: question about normalization

I have in development an app that is intended for use by agencies that use
a lot of volunteers. My initial design was fully normalized (by which I
mean I went to 5NF not just petty 3NF), but this posed significant problems
on the design of the FE, which is web-based. This means that attached to
the Volunteers table are several child tables, each of which connects to a
lookup table, and each of which child could have several rows. For example,
consider Languages-Spoken, easy enough in itself, point to a lookup table
listing languages, present a combo-box and that's that. But now we add
Skills (Driver, Cook, Visits, etc.), and now just with these two lists,
it's already complex: I need a Russian-speaking volunteer who can also
serve as a Driver or Cook, say.

That leads to complex queries that eventually involve nested Having
predicates, and that is tough to implement in a UI that recognizes that
most of its users are, not to cast aspersions, but let's face it, a lot of
users in this category are going to have problems with the intricacies of
ANDs and ORs.

So I was thinking that there's another design strategy in which all the
lookup tables are folded into a single table, with an identifier that
describes the domain (i.e. languages spoken, skills offered, fields of
interest, etc.), the point being that a successive number of predicates
could be assembled from a single table, thus avoiding the complexities of
multi-table queries.

I know that this design violates virtually everything Dr. Codd has written,
but he was after all a mere demi-god, and as problems have progressed and
products such as NoSQL have emerged, I've begun to doubt propositions I
formerly held absolute. Disk space is cheap, speed is abundant, and (well
not in my particular case) databases are expanding to billions of rows.

Any thoughts, my friends?

-- 
Arthur
_______________________________________________
dba-SQLServer mailing list
dba-SQLServer at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
http://www.databaseadvisors.com



More information about the dba-SQLServer mailing list