The developer and Database Normalization

by krishnamoorthyb

Does database normalization matter? Of course it does! Do we do it? We try to.. Does anyone care? Not everyone.

I have a table with a set of drawers. It has been my goal to keep all my papers CDs and other stuff neatly organized in the three drawers.  All I can say for sure most of the time is that anything I need will be within those three drawers. I am not sure if my vehicle insurance papers are in the first or the third drawer. Come on! How long does it take to search three drawers?

This is the approach many developers tend to take when it comes to data. The database is a table and the drawers are the actual tables. How does it matter what is in which drawer when we can find it whenever we need to? Apart from the many technical reasons to be organized, being organized is plain simple nice.  Why do we ask for clean cities, beautiful gardens and clear weather? They are  simply nice to have!  Developers are under pressure to deliver a working module. The program managers or the client is not aware and does not want to be bothered about the purity of your data model.  This reduces the necessity to maintain a good data model behind the application. The implications of sacrificing the data model to get the product or fix out in time will be felt much later either as a performance issue or an upgrade issue. This, however will not affect the developer who did the original product design.

There is a difference between a code fix and a data model fix. Bad code can be replaced with proper code via an application fix. All that is needed is to replace a few files and restart the application. The same is not true of a data models. Data models once delivered cannot be easily replaced. In that sense, the cost of a bad data model design is much higher than a coding error. 

But, does it really matter to a C++ developer who has to deliver the working module tomorrow. he would rather stuff the papers in any drawer that has space.  A good software engineering manager should account for time and resources to keep his drawers clean!