A typical data model report delivered to clients by ESI
consists of a series of drawings of
parts of the client's model, accompanied by explanatory text. The purpose of this report is not simply to document the model, but to do so in a way that can be understood by anyone with an interest in the subject--whether or not the person has any data modeling experience.
Here follows an example of a segment of an enterprise model, plus the narrative that accompanies it.
Note that the explanation is not just of the model
itself, but also of why it is modeled that way.
It is common to specify EMPLOYEE as a sub-type of PERSON
. After all, a large number of the people
you want to keep track of are employees. This is wrong, however.
A person is not inherently an employee. He or she only becomes an employee by entering into a
relationship with a company. The quality of being an employee, then, is an aspect of a
relationship, not of an entity. This is an example of a common problem in converting common
English into a data model: many of the nouns we use combine the essence of a thing with its
relationships to other things.
What we want to say instead is that each PERSON may be
employed by one
or more ORGANIZATIONS and that each ORGANIZATION
the employer of
one or more people. This
implies the creation of another entity, EMPLOYMENT, each occurrence of
which is the fact that a PERSON is employed by an
ORGANIZATION. This is
shown in Figure 13.
Each EMPLOYMENT, then, must be of
with one ORGANIZATION. Attributes of employment include "Employment date", "Termination date",
"Social security number", and so forth.
<! **** EMPLOYMENT Model ****>
Figure 13: EMPLOYMENT
<! **** POSITION Text ****>
The nature of that EMPLOYMENT is
the POSITIONS held during its course.
A POSITION is a job in the company, as
defined by a particular
ORGANIZATION (either the company as a whole or a particular department).
Figure 14 shows how each EMPLOYMENT may be
the basis for
one or more
As just described, the POSITION is
Note, by the way, that it is possible for a PERSON to be employed by
(an employee in an
ORGANIZATION, but be
assigned to a
POSITION that is
a different ORGANIZATION. There is nothing wrong with this –
people are often temporarily assigned to departments other than the ones they officially work
for – but it is important to understand that this may happen.
When a manager queries a data warehouse to ask "How many people work for my department?", if the answer is "42", that manager must understand whether that is 42 people who are each an employee in an EMPLOYMENT with the department, or 42 people who each hold a POSITION ASSIGNMENT to a POSITION defined by the department. The difference could be substantial--and important.
<! **** POSITION Model ****>
Figure 14: POSITION