Build a Simple CRM Data Model
Tags: database, crm, architecture, systems
Published: 2021-04-01 14:18:06

The sales process of most companies can be modeled in a relational database. This process manages the relationship between customers and the business itself. Suffice to say, without loyal customers; the business can and will not succeed. Consequently, it is vital to develop and deploy a customer relationship management (CRM) system. In order to achieve this goal, let’s dive into a step-by-step guide to building a simple CRM data model as part of the overall CRM application development process.
 
Customer relationship management systems are complex. The relationship between the customer and the business encompasses a wide range of aspects, covering the need to know the customer, develop the sales offer, acquire the customer, and retain the customer. Therefore, for the sake of expediency and simplicity, we’ll distill the CRM data model down to its core features as a how-to guide to developing a CRM data model.

Diagrams in this post come from an [open source Figma ERD Tool](https://arctype.com/blog/erd-builder/).
 
## What is a CRM data model? 
 
In summary, a CRM data model is a conceptual formalization of the objects and their relationships used to describe how to manage the relationship between the customer and the business organization.
 
### 1. What is a data model?
 
Wikipedia.com describes a data model as an “abstract model that organizes the elements of data and standardizes how they relate to one another and to the properties of real-world entities.” In other words, a data model or an Entity-Relationship (ER) data model is a graphical approach to database design.
 
Developing a comprehensive ER data model is a vital part of the CRM software development lifecycle. Succinctly stated, without this model as a framework or basis for the database design, the database will be deficient, resulting in an application or system that is not fully functional and will not meet stakeholder and end-user requirements.
 
Statistics reported by Thomas Smale of entrepreneur.com show that 75% of IT executives admitted that their in-house software development projects failed. Therefore, it is critical to generate a high-quality, complete data model before starting the software development part of the CRM development project.
 
### 2. What database does a CRM use?
 
As highlighted above, a CRM system is a software application that is designed, developed, and deployed with the functionality enabling the management of the overarching customer lifecycle and relationship between the business and the customer. And its data model is implemented in normal relational databases. Sales force uses Oracle databases while Hubspot uses MySQL.
 
## A step-By-Step Guide to building a CRM database model 
 
Now that we understand what a data model and a CRM system are, let’s consider a step-by-step guide to creating a simple CRM data model.
 
### 1.  Entities or objects
 
The first step is to determine the entities or objects you need to represent in the data model such as customer management, people management, leads management, and customer service management objects.
 
For the purposes of this discussion, let’s look at the CRM new customer acquisition workflow diagram.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7z5ljkyy3cho58xutin.png)
 
 
This diagram demonstrates the need for a customer master entity, new leads or prospects entity, and employee master entity.
 
In other words, the new leads or prospects object stores the list of new leads captured by sales staff. The employee object keeps a record of all staff employed by the company. The leads assigned to the sales employee object links the new prospect to a sales employee. And the customer master records the new customer details for each new customer acquired.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2p7934fz5ng2r5erjr5s.png) 
 
### 2. Create an Entity Relationship (ER) Model
 
Once the entities have been defined and added to the data model diagram, the next step is to describe the relationships between the different entities or objects. These relationships are defined by adding arrows indicating the relationship between each entity.
 
In summary, four possible relationships or cardinalities can occur between two entities: Many-to-one, one-to-one, many-to-many, and one-to-many.

* One-to-one relationships: A one-to-one cardinality between two entities is where only one instance of each entity is related to a single instance of the second entity. For example, the customer entity is linked to the prospect entity in the scenario highlighted above. A prospect can only be converted to a single customer. A single prospect can’t match more than one customer. 
* One-to-many relationships: A one-to-many relationship or cardinality describes the relationship between two entities, such as a customer and its contact details. Ergo, one customer can have many different contact types such as a postal address, physical office address, email, telephone, and mobile phone. 
* Many-to-one relationships: The many-to-one relationship is the inverse of the one-to-many relationship. For instance, many customers might have their offices in one big office block. Practically speaking, many customers will have the same office address. 
* Many-to-many relationship: Succinctly stated, the many-to-many cardinality describes a relationship between two entities with multiple instances of each entity linked to each other. For example, many customers can be connected to the same address. And many addresses are linked to many customers. And, as seen below, many prospects or leads are related to many sales employees or representatives.  

 Note: The many-to-many relationship has to be modeled as two many-to-one relationships, as demonstrated in the following diagram. For instance, the relationship between the prospects and employees is a many-to-many relationship. The same rule also applies to the customer-employee relationship. 
 
A prospect is linked to more than one employee, and one employee is related to multiple prospects or leads. Therefore, an object (or table) called ProspectEmployee is used to describe this many-to-many relationship as two one-to-many relationships between Prospect and ProspectEmployee and Employee and ProspectEmployee.
 
Lastly, the relationship between the Prospect and Customer is a one-to-one relationship.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vjjrfela2eznzbc8cplw.png) 
 
## The Importance of Data Modeling in CRM
 
Once the CRM data model is complete, the next step is to convert the data model to SQL to create the CRM database and start with the software development part of the project to develop a simple CRM system. If you need a real-time database creation tool to write the data definition language (DDL) scripts, consider looking at the Arctype SQL editor. It has inbuilt native connectivity to several different relational databases, including Postgres, SQLite, MySQL, BigQuery, and Firebase.
 
While it might seem tempting to forego the data modeling process, it forms an integral part of the software development lifecycle. Without the completion of a detailed CRM database model, a substantial risk of failure exists.