Thursday, January 02, 2014

Baseline Conceptual Models: Party Model

Party Model: Tracking people, companies, and internal company groups along with their relationship to one another and their contact points is an absolute need for any one.   This model presents the standard concept that you will see in the modelling world called the 'Party Model'.  Its important to have a generalization concept the covers both person and organization called the Party because you will come across many business concepts in which either a person or group can have a relationship with.   Examples are Contracts, Memberships, Services, Products, Sales, and Shipment.    This will enable a relationship to just relate to the Party entity rather than making a relationship for both Person and Organization.  From a conceptual modeling purposes this makes the model easy to read which is the main point of what conceptual models are for.  But generalization concepts may not necessarily be the best design from a physical performance perspective if the generation results in a hot table becoming a bottle next in the system.   The needs of the physical world should prevail.

Note 1:  In this model Contact Points only can exist if they are associated with a party.   But if you are a postal service the address is important all on its own and can exist without a party.  So you will need to make the necessary modifications.    But that usually is a corner case from my experience.

Note 2:  This model demonstrates role naming:  Person ID from the Human Resource Entity is really a role name for a Party ID from the Party Entity.  Organization ID from the Human Resource Entity is really a role name for a Party ID from the Party Entity.

Note 3:  You will notice that the Human Resource Contact Point Entity has a suggested Primary Key of Organization ID, Person ID, Contact ID in which Person ID is BOLD.   Person ID is an example of key folding in which the Party ID from Contact Point folds into Person ID from the Human Resource Entity.  I personally like to call this a data harmonic.  Hope that helps you understanding some advanced modeling techniques that are demonstrated in this model.

Please see (Baseline Conceptual Models Commentary) for further details on what conceptual models are to be used for.

No comments: