Saturday, March 14, 2015

Design Effort

Around 1994, I was on a project with a big, upfront design effort. We didn't know about proper design but we did create a big document full of entity-relationship diagrams and data flow diagrams. It was hard work but we felt like we were doing what the company required. Years later, I realized that the diagrams we had produced in the 1994 project only served to document our bad design and really, the complete lack of design. Effort does not necessarily produce anything of any value.

I've seen three types of database designs intended to attain three different goals. One goal is to support an infinite amount of change but the model is essentially undefined and does not reflect the business. This model has moved the function of the DBMS into the database. A second goal that has been the basis of a DB design is a denormalized representation of the business that the designer thinks does not compromise anything significant but, in reality, forces constraints the business. Lastly is a model that (with a few compromises) completely represents the business domain and can be modified to eliminate the need to force constraints on the business.