Normalization should be very popular and widespread. Unfortunately I can say that the 99% of developers that work with database (and thus design the database schema) don’t know it. Even worse they don’t even realize that normalization is a key point in application development.
AFAIK developers and project managers don’t care too much of normalization because they think that it only helps in lowering the storage required by the database and nothing more. Since today space is cheap, why bother of normalizing database?
As already told, normalization is not a way to spare space, but is the key to preserve data integrity and to have overall good performance. Of course, since a part of the process is related to remove redundancy, the result is that space is also saved.
Now, with SQL Azure, space won’t be that cheap anymore. An interesting post by the SQL Azure team, show how much cost storing a row in SQL Azure database, given that the prices for 1GB is set to 9.99$.
And that’s the interesting part, where normalization returns to be an interesting practice to put in place. By designing table using correct data types and normalizing the schema correctly you easily gain from 30% to 80% (as a very general rule of thumb, depending on the data model and the data you have to store).
Now, let’s make some simple calculations. Imagine that we have a three database of 50GB each. Every month the cost is 3 * 499.5$. That sum up to 17,998.2$ per year. Let’s say 18,000$ to make it easier. Sparing 30% means that you can save 5,400$ per year.
Given that I’ve seen database smaller than 100GB only in small companies, I can tell you that sparing 5,000$ for them is very important!
This turns also to be true also for bigger database, where, of course, the money spared is proportional. I’ve seen tables with more than 100 columns, many of them completely redundant or “put here just in case”, like the ColInt1, ColInt2 and so on.
So, now that space means money, maybe normalization will become popular again.
I really hope so, because this will also lead to better data and higher quality solutions.
I didn’t mention this, but keep in mind also that you’ll pay space used by indexes. So the worse your table is design the more you’ll pay for any index you’ll add, since they will be bigger that what they could have been if the database was normalized.