Karen Lopez provides a great list of items on why she finds a Data Model helpful. I do believe there is something missing from the list of items though. All of the items mostly describe reasons from an IT point of view.
Here is Karen’s list on why you should create a data model:
- Technologies used to move and persist data come in many forms, over time and at the same time. I support the creation of XML Documents, multiple DBMSs, multiple versions of the same DBMS. By having a single logical data model of data requirements, I can separate the rules and definitions of the requirements from their implementation.
- The same data exists in many platforms, in many locations. I need to be able to map those sources to targets across platforms and systems. Doing this mapping, or data lineage, with a data model is much easier. It also helps me understand the implications of making a change in one system on another system. I can’t do that by just looking at code.
- Writing stuff down is often a good way to impress people that have to provide requirements, compliance issues, security requirements, etc. They like not having to answer the same question over and over for different people and roles. I can’t tell you how many times a business person has asked me if IT ever writes anything down. Imagine your frustration if you had someone working on your house and ever tradesperson started their day with “Tell me about what sort of house you want? How many people will live here? Do you want to be able go get to the second floor? Do you need a bathroom? How about a shower?” That’s how many business professionals see us in IT.
- A data model is a great way of capturing rules, constraints, definitions in a method that is technology independent. I can capture those things once and reference them in many places.
- We can measure databases against our data models to assess fit. This can be done for application packages and custom development.
- Enterprise data is complex. I work with a data model that has 32,000 objects (tables, columns, datatypes, constraints, etc.) in it. There is no way I could professionally manage change by just trying to remember all this information. Nor could anyone else.
- Modeling helps you ask the right questions before a bunch of time is spent coding, creating screens, reports, etc. This reduces costs and the number of bug fixes required.
- Like all models, the data model is a communication tool and is good for tying requirements directly to designs and implementations. This is especially true when I generate data prototypes based on the model.
- Data governance can’t easily be done via reverse-engineered pictures of databases.
- Once you’ve worked with a great data model, you can’t go back.
I agree with all of Karen’s points and I’d even like to add a few of my favourite benefits from an IT point of view as well.
- I find HUGE benefits in being able to abstract domains across my entire data model so that changes to domains in the future can be done easily and ripple through the entire data model. The use of domains also ensures that my design is consistent and coherent across all the hundreds and thousands of tables in my data models.
- I find HUGE benefits in being able to version my data model alongside the application code so I can revert to any point during the entire project.
- I find HUGE benefits in helping me think through the problem. The danger with documents is they don’t have to be holistic and complete. You can start a document and describe functionality and relationships but you could forget to describe a couple of relationships without people noticing. But once you transform that description into a diagram, be it a data model or another diagram, orphans and missed relationships become very apparent. I like data models because they help me ensure my solution is correct, consistent, and complete.
The Business Case
One thing I always find fascinating is how hard it is to discuss and gain agreement from clients on why you need a data model and need to have a nicely normalized data model. Everyone in the data world takes this as just a fact, but how can you convince a client that they should spend the months of person-time to create one? Why should they spend tens of thousands of dollars? What is the business benefit?
I believe it comes down to two basic business benefits
1) The Data Model enables communication between IT professionals and the clients using visual means – As we are learning in all areas of the business world, a picture is worth a thousand words. We could create paragraphs upon paragraphs on how we believe the client’s business is structured and we would be wrong every time. We will still be wrong with a data model, but we will be less wrong as clients find it easier to point out the relationships we have misunderstood.
2) Normalization promotes and enables future business flexibility – A normalized database promotes a design that is highly cohesive and loosely coupled. Why does this matter? To the business it matters greatly! It means we can adapt to new realities in the business world quickly and easily. That means quicker time to market and less budget required for new functionality.
- Need to integrate a new line of business? No Problem.
- Need to accommodate a new language in the application? No Problem.
- Need to roll out enhancements to keep up with the competition? No Problem.
If you agree with the benefits above, a Data Model is just the most efficient way of enabling these benefits. Especially with free tools like Oracle’s SQL Developer Data Modeler. With these free tools, you no longer need a large investment to start using them.
So why do I create a Data Model and normalize my data designs? Because they make good business sense and return benefits far exceeding the cost of creating and maintaining them.