Warning: Creating default object from empty value in /home/johnnz/public_html/wp-content/themes/simplicity/functions/admin-hooks.php on line 160

Which Customer Contact Structure?

I made this entry in response to a blog post I read about some anomalies in B2B (Business to Business) structures at Echoes in the Database.

That post essentially referred to what seemed like duplicate records in a table relating to an individual within a client company and was trying to decided whether or not they were truly duplicates or represented two entirely different things that simply looked similar.

It is always difficult when looking at raw data like this to decide exactly what is happening.  It is almost impossible to make an informed decision without the aid of a properly structured data model or Entity Relationship Diagram (ERD).

The post goes on to refer to the roles that people can play in organizations and suggests that these structures should be modeled as ‘parent child’ structure.  Well some times they can and sometimes they can’t. The following diagram shows two different scenarios.


The two scenarios are similar but essentially different.

In Scenario 1 we simply need to know the name of the person filling the Customer Contact Role and the contact details for the role.  In this instance the name of the person filling the role could change yet the contact details could remain the same.   The structure is hierarchical or parent/child and can be modeled by a simple ‘one-to-many’ relationship to Customer.

In Scenario 2 the main relationship is with whatever employee has been assigned to the role.  If the employee changes so too do the contact details.  This is a network structure and needs to be modeld by an intersection entity between Customer Employee and Customer.  With this structure an employee could be assigned to many Customer Contact Roles


4 Responses to “Which Customer Contact Structure?”

  1. Henrik Liliendahl Sørensen August 19, 2009 9:02 pm #

    Thanks John. Agree that having Start and End date solves the basic issue.

    Going into details one might consider that Telephone and Email follows the Individual in the first example and follows the Role in the second example. But then you have change of role(s) within the same company.

    Also many popular CRM solutions have entities around the visit address and other types of physical addresses.

    • John Owens August 19, 2009 10:48 pm #

      Addresses do add another dimension. These can be modeled at two different level of detail.

      The first, and the more complex, would be if you were building a package (such as a CRM solution) for sale to a broad spectrum of clients across a wide range of countries with different address structures.

      The second case would be far simpler, yet still powerful, where you are building an in-house application. In this case the addition of one or two more entities to handle address structure should suffice.

  2. Henrik Liliendahl Sørensen August 19, 2009 6:20 pm #

    Hi John

    As the author of the post referenced I think you may draw more complicated ERD’s if you want to reflect the following:

    • The same real world individual is an employee at 2 customers at the same time
    • The same real world individual was an employee at customer and is now an employee at another customer

    • John Owens August 19, 2009 8:24 pm #

      Hi Henrik

      Scenario 2 will actually support both of the cases that you refer to.

      The relationship between Customer and Employee is a “many-to-many”. This means that it can show the relation ship between many Customers and many Employees. The intersection entity Customer Contact Role shows what the relationship actually is between the Customer and the Employee.

      For extra clarity you could add the attributes Start Date and End Date to Customer Contact Role to show when the relationship starts and ends.

      Hope that this helps.

Leave a Reply