I was asked recently to review a conceptual data model (CDM). My expectation was that the model would contain somewhere between 50 to 100 entities.
Upon entering the room and seeing the model for the first time, I realized my assumption was correct, as there were close to 100 entities. However, each of the entities on the model contained attributes! There were over 500 attributes on the model.
The facilitator stressed that this is a conceptual data model because all of the entities and attributes represent business concepts. The business created this model to capture their view of their business. The model was extremely well-organized for readability and there was very little abstraction as these terms were true business terms.
I was about to interrupt the facilitator and mention that this model is close to third normal form and is not a conceptual but instead a logical, but I kept quiet and listened to the rest of the background on the model.
I learned that the purpose of this model was to capture the business needs for a large initiative. Not requirements but needs. Needs and requirements are different. Needs focus on expression and terminology. Requirements focus on precision to solve a particular business problem, such as building a new application, reverse engineering an existing application, or defining the enterprise architecture for an organization. A need can capture the relationship between Student and Course, for example. A requirement would ensure that this relationship is precise, such as capturing whether that relationship between Student and Course is a Registration, Attendance, or Grade relationship.
The conceptual captures the business needs and the logical captures the business solution. This is how I teach it in my Data Modeling Master Class, where I define a CDM as:
A set of symbols and text that represents well-scoped concepts, along with their definitions and relationships, for a particular audience.
This model being reviewed, despite its detail, met this definition.
Once the needs were verified, then the logical was to be built. The logical would be precise and reality-based, meaning each attribute would be validated to make sure it exists in some source system and the model in general would be more abstract so that it can easily accommodate changes over time.
What do you think? Can a conceptual contain attributes? Please share your thoughts.