Developing
Entity Relationship Diagrams (ERDs)
WHY:
Entity Relationship Diagrams are a major data modelling tool and
will help organize the data in your project into entities and define the
relationships between the entities. This process has proved to enable the
analyst to produce a good database structure so that the data can be stored and
retrieved in a most efficient manner.
INFORMATION:
Entity
A data entity is anything real or abstract about which we want to
store data. Entity types fall into five classes: roles, events, locations,
tangible things or concepts. E.g. employee, payment, campus, book. Specific
examples of an entity are called instances. E.g. the employee John
Jones, Mary Smith's payment, etc.
Relationship
A data relationship is a natural association that exists between
one or more entities. E.g. Employees process payments. Cardinality
defines the number of occurrences of one entity for a single occurrence of the
related entity. E.g. an employee may process many payments but might not process
any payments depending on the nature of her job.
Attribute
A data attribute is a characteristic common to all or most
instances of a particular entity. Synonyms include property, data element,
field. E.g. Name, address, Employee Number, pay rate are all attributes of the
entity employee. An attribute or combination of attributes that uniquely
identifies one and only one instance of an entity is called a primary key
or identifier. E.g. Employee Number is a primary key for Employee.
AN
ENTITY RELATIONSHIP DIAGRAM METHODOLOGY: (One way of doing it)
1. Identify Entities
|
Identify the roles, events, locations, tangible things or
concepts about which the end-users want to store data.
|
2. Find Relationships
|
Find the natural associations between pairs of entities using a
relationship matrix.
|
3. Draw Rough ERD
|
Put entities in rectangles and relationships on line segments
connecting the entities.
|
4. Fill in Cardinality
|
Determine the number of occurrences of one entity for a single
occurrence of the related entity.
|
5. Define Primary Keys
|
Identify the data attribute(s) that uniquely identify one and
only one occurrence of each entity.
|
6. Draw Key-Based ERD
|
Eliminate Many-to-Many relationships and include primary and
foreign keys in each entity.
|
7. Identify Attributes
|
Name the information details (fields) which are essential to the
system under development.
|
8. Map Attributes
|
For each attribute, match it with exactly one entity that it
describes.
|
9. Draw fully attributed ERD
|
Adjust the ERD from step 6 to account for entities or
relationships discovered in step 8.
|
10. Check Results
|
Does the final Entity Relationship Diagram accurately depict the
system data?
|
A
SIMPLE EXAMPLE
A company has several departments. Each department has a supervisor
and at least one employee. Employees must be assigned to at least one, but
possibly more departments. At least one employee is assigned to a project, but
an employee may be on vacation and not assigned to any projects. The important
data fields are the names of the departments, projects, supervisors and
employees, as well as the supervisor and employee number and a unique project
number.
1.
Identify Entities
The entities in this system are Department, Employee, Supervisor
and Project. One is tempted to make Company an entity, but it is a false entity
because it has only one instance in this problem. True entities must have more
than one instance.
2. Find
Relationships
We construct the following Entity Relationship Matrix:
Department
|
Employee
|
Supervisor
|
Project
|
|
Department
|
is assigned
|
run by
|
||
Employee
|
belongs to
|
Works on
|
||
Supervisor
|
runs
|
|||
Project
|
uses
|
3. Draw
Rough ERD
We connect the entities whenever a relationship is shown in the
entity Relationship Matrix.
4. Fill
in Cardinality
From the description of the problem we see that:
- Each department has exactly one supervisor.
- A supervisor is in charge of one and only one
department.
- Each department is assigned at least one
employee.
- Each employee works for at least one
department.
- Each project has at least one employee working on
it.
- An employee is assigned to 0 or more projects.
5.
Define Primary Keys
The primary keys are Department Name, Supervisor Number, Employee
Number, Project Number.
6. Draw
Key-Based ERD
There are two many-to-many relationships in the rough ERD above,
between Department and Employee and between Employee and Project. Thus we need
the associative entities Department-Employee and Employee-Project. The primary
key for Department-Employee is the concatenated key Department Name and
Employee Number. The primary key for Employee-Project is the concatenated key
Employee Number and Project Number.
7.
Identify Attributes
The only attributes indicated are the names of the departments,
projects, supervisors and employees, as well as the supervisor and employee
NUMBER and a unique project number.
8. Map
Attributes
Attribute |
Entity |
Attribute |
Entity |
Department Name |
Department |
Supervisor Number |
Supervisor |
Employee Number |
Employee |
Supervisor Name |
Supervisor |
Employee Name |
Employee |
Project Name |
Project |
|
|
Project Number |
Project |
9. Draw
Fully Attributed ERD
10.
Check Results
The final ERD appears to model the data in this system well.
FURTHER
DISCUSSION:
Step 1.
Identify Entities
A data entity is anything real or abstract about which we want to
store data. Entity types fall into five classes: roles, events, locations,
tangible things, or concepts. The best way to identify entities is to ask the
system owners and users to identify things about which they would like to
capture, store and produce information. Another source for identifying entities
is to study the forms, files, and reports generated by the current system. E.g.
a student registration form would refer to Student (a role), but also Course
(an event), Instructor (a role), Advisor (a role), Room (a location),
etc.
Step 2.
Find Relationships
There are natural associations between pairs of entities. Listing
the entities down the left column and across the top of a table, we can form a
relationship matrix by filling in an active verb at the intersection of two
entities which are related. Each row and column should have at least one
relationship listed or else the entity associated with that row or column does
not interact with the rest of the system. In this case, you should question
whether it makes sense to include that entity in the system.
. A student is enrolled in one or more courses
subject verb objects
Step 3.
Draw Rough ERD
Using rectangles for entities and lines for relationships, we can
draw an Entity Relationship Diagram (ERD).
Step 4.
Fill in Cardinality
At each end of each connector joining rectangles, we need to place
a symbol indicating the minimum and maximum number of instances of the adjacent
rectangle there are for one instance of the rectangle at the other end of the
relationship line. The placement of these numbers is often confusing. The first
symbol is either 0 to indicate that it is possible for no instances of the
entity joining the connector to be related to a given instance of the entity on
the other side of the relationship, 1 if at least one instance is necessary or
it is omitted if more than one instance is required. For example, more than one
student must be enrolled in a course for it to run, but it is possible for no
students to have a particular instructor (if they are on leave).
The
second symbol gives the maximum number of instances of the entity joining the
connector for each instance of the entity on the other side of the
relationship. If there is only one such instance, this symbol is 1. If more
than 1, the symbol is a crows foot opening towards the rectangle.
If you
read it like a sentence, the first entity is the subject, the relationship is
the verb, the cardinality after the relationship tells how many direct objects
(second entity) there are.
I.e. A student is enrolled in one or more courses
subject verb objects
Step 5.
Define Primary Keys
For each entity we must find a unique primary key so that
instances of that entity can be distinguished from one another. Often a single
field or property is a primary key (e.g. a Student ID). Other times the
identifier is a set of fields or attributes (e.g. a course needs a department
identifier, a course number, and often a section number; a Room needs a
Building Name and a Room Number). When the entity is written with all its
attributes, the primary key is underlined.
Step 6.
Draw Key-Based ERD
Looking at the Rough Draft ERD, we may see some relationships
which are non-specific or many-to-many. I.e., there are crows feet on both ends
of the relationship line. Such relationships spell trouble later when we try to
implement the related entities as data stores or data files, since each record
will need an indefinite number of fields to maintain the many-to-many
relationship.
Fortunately,
by introducing an extra entity, called an associative entity for each
many-to-many relationship, we can solve this problem. The new associative
entity's name will be the hyphenation of the names of the two originating
entities. It will have a concatenated key consisting of the keys of these two
entities. It will have a 1-1 relationship with each of its parent entities and
each parent will have the same relationship with the associative entity that
they had with each other before we introduced the associative entity. The
original relationship between the parents will be deleted from the
diagram.
The
key-based ERD has no many-to-many relationships and each entity has its primary
and foreign keys listed below the entity name in its rectangle.
Step 7.
Identify Attributes
A data attribute is a characteristic common to all or most instances
of a particular entity. In this step we try to identify and name all the
attributes essential to the system we are studying without trying to match them
to particular entities. The best way to do this is to study the forms, files
and reports currently kept by the users of the system and circle each data item
on the paper copy. Cross out those which will not be transferred to the new
system, extraneous items such as signatures, and constant information which is
the same for all instances of the form (e.g. your company name and address).
The remaining circled items should represent the attributes you need. You
should always verify these with your system users. (Sometimes forms or reports
are out of date.)
Step 8.
Map Attributes
For each attribute we need to match it with exactly one entity.
Often it seems like an attribute should go with more than one entity (e.g.
Name). In this case you need to add a modifier to the attribute name to make it
unique (e.g. Customer Name, Employee Name, etc.) or determine which entity an
attribute "best' describes. If you have attributes left over without
corresponding entities, you may have missed an entity and its corresponding
relationships. Identify these missed entities and add them to the relationship
matrix now.
Step 9.
Draw Fully-Attributed ERD
If you introduced new entities and attributes in step 8, you need
to redraw the entity relationship diagram. When you do so, try to rearrange it
so no lines cross by putting the entities with the most relationships in the middle.
If you use a tool like Systems Architect, redrawing the diagram is relatively
easy.
Even if
you have no new entities to add to the Key-Based ERD, you still need to add the
attributes to the Non-Key Data section of each rectangle. Adding these attributes
automatically puts them in the repository, so when we use the entity to design
the new system, all its attributes will be available.
Step
10. Check Results
Look at your diagram from the point of view of a system owner or
user. Is everything clear? Check through the Cardinality pairs. Also, look over
the list of attributes associated with each entity to see if anything has been
omitted.
Consider a hospital:
Patients are treated in a single ward by the doctors assigned to them. Usually each patient will be assigned a single
doctor, but in rare cases they will have two.
Heathcare
assistants also attend to the
patients, a number of these are associated with each ward.
Initially
the system will be concerned solely with drug treatment. Each patient is
required to take a variety of drugs a certain number of times per day and for
varying lengths of time.
The
system must record details concerning patient treatment and staff payment. Some
staff are paid part time and doctors and care assistants work varying amounts
of overtime at varying rates (subject to grade).
The
system will also need to track what treatments are required for which patients
and when and it should be capable of calculating the cost of treatment per week
for each patient (though it is currently unclear to what use this information
will be put).
-----------------------------------------------
1.
Identify Entities
Ø Patient
Ø Ward
Ø Doctor
Ø Heathcare assistant
Ø Drug
2. Find
Relationships
Entity Relationship
Matrix:
Patient
|
Ward
|
Doctor
|
HA
|
Drug
|
|
Patient
|
assigned
|
treated by
|
attends to
|
takes
|
|
Ward
|
assigned
|
associated in
|
|||
Doctor
|
treated by
|
||||
Healthcare Assistants
|
attends to
|
associated in
|
|||
Drug
|
takes
|
3. Draw
Rough ERD
Rough
ERD
4. Fill
in Cardinality
From the description of the problem we see that:
- Each department has exactly one supervisor.
- A supervisor is in charge of one and only one
department.
- Each department is assigned at least one
employee.
- Each employee works for at least one
department.
- Each project has at least one employee working on
it.
- An employee is assigned to 0 or more projects.
5.
Define Primary Keys
The primary keys are Department Name, Supervisor Number, Employee
Number, Project Number.
6. Draw
Key-Based ERD
There are two many-to-many relationships in the rough ERD above,
between Department and Employee and between Employee and Project. Thus we need
the associative entities Department-Employee and Employee-Project. The primary
key for Department-Employee is the concatenated key Department Name and
Employee Number. The primary key for Employee-Project is the concatenated key
Employee Number and Project Number.
7.
Identify Attributes
The only attributes indicated are the names of the departments,
projects, supervisors and employees, as well as the supervisor and employee
NUMBER and a unique project number.
8. Map
Attributes
Attribute |
Entity |
Attribute |
Entity |
Department Name |
Department |
Supervisor Number |
Supervisor |
Employee Number |
Employee |
Supervisor Name |
Supervisor |
Employee Name |
Employee |
Project Name |
Project |
|
|
Project Number |
Project |
9. Draw
Fully Attributed ERD
10.
Check Results
The final ERD appears to model the data in this system well.
FURTHER
DISCUSSION:
Step 1.
Identify Entities
A data entity is anything real or abstract about which we want to
store data. Entity types fall into five classes: roles, events, locations,
tangible things, or concepts. The best way to identify entities is to ask the
system owners and users to identify things about which they would like to
capture, store and produce information. Another source for identifying entities
is to study the forms, files, and reports generated by the current system. E.g.
a student registration form would refer to Student (a role), but also Course
(an event), Instructor (a role), Advisor (a role), Room (a location),
etc.
Step 2.
Find Relationships
There are natural associations between pairs of entities. Listing
the entities down the left column and across the top of a table, we can form a
relationship matrix by filling in an active verb at the intersection of two
entities which are related. Each row and column should have at least one
relationship listed or else the entity associated with that row or column does
not interact with the rest of the system. In this case, you should question
whether it makes sense to include that entity in the system.
. A student is enrolled in one or more courses
subject verb objects
Step 3.
Draw Rough ERD
Using rectangles for entities and lines for relationships, we can
draw an Entity Relationship Diagram (ERD).
Step 4.
Fill in Cardinality
At each end of each connector joining rectangles, we need to place
a symbol indicating the minimum and maximum number of instances of the adjacent
rectangle there are for one instance of the rectangle at the other end of the
relationship line. The placement of these numbers is often confusing. The first
symbol is either 0 to indicate that it is possible for no instances of the
entity joining the connector to be related to a given instance of the entity on
the other side of the relationship, 1 if at least one instance is necessary or
it is omitted if more than one instance is required. For example, more than one
student must be enrolled in a course for it to run, but it is possible for no
students to have a particular instructor (if they are on leave).
The
second symbol gives the maximum number of instances of the entity joining the
connector for each instance of the entity on the other side of the
relationship. If there is only one such instance, this symbol is 1. If more
than 1, the symbol is a crows foot opening towards the rectangle.
If you
read it like a sentence, the first entity is the subject, the relationship is
the verb, the cardinality after the relationship tells how many direct objects
(second entity) there are.
I.e. A student is enrolled in one or more courses
subject verb objects
Step 5.
Define Primary Keys
For each entity we must find a unique primary key so that
instances of that entity can be distinguished from one another. Often a single
field or property is a primary key (e.g. a Student ID). Other times the
identifier is a set of fields or attributes (e.g. a course needs a department
identifier, a course number, and often a section number; a Room needs a
Building Name and a Room Number). When the entity is written with all its
attributes, the primary key is underlined.
Step 6.
Draw Key-Based ERD
Looking at the Rough Draft ERD, we may see some relationships
which are non-specific or many-to-many. I.e., there are crows feet on both ends
of the relationship line. Such relationships spell trouble later when we try to
implement the related entities as data stores or data files, since each record
will need an indefinite number of fields to maintain the many-to-many
relationship.
Fortunately,
by introducing an extra entity, called an associative entity for each
many-to-many relationship, we can solve this problem. The new associative
entity's name will be the hyphenation of the names of the two originating
entities. It will have a concatenated key consisting of the keys of these two
entities. It will have a 1-1 relationship with each of its parent entities and
each parent will have the same relationship with the associative entity that they
had with each other before we introduced the associative entity. The original
relationship between the parents will be deleted from the diagram.
The
key-based ERD has no many-to-many relationships and each entity has its primary
and foreign keys listed below the entity name in its rectangle.
Step 7.
Identify Attributes
A data attribute is a characteristic common to all or most
instances of a particular entity. In this step we try to identify and name all
the attributes essential to the system we are studying without trying to match
them to particular entities. The best way to do this is to study the forms,
files and reports currently kept by the users of the system and circle each
data item on the paper copy. Cross out those which will not be transferred to
the new system, extraneous items such as signatures, and constant information
which is the same for all instances of the form (e.g. your company name and
address). The remaining circled items should represent the attributes you need.
You should always verify these with your system users. (Sometimes forms or
reports are out of date.)
Step 8.
Map Attributes
For each attribute we need to match it with exactly one entity.
Often it seems like an attribute should go with more than one entity (e.g.
Name). In this case you need to add a modifier to the attribute name to make it
unique (e.g. Customer Name, Employee Name, etc.) or determine which entity an
attribute "best' describes. If you have attributes left over without
corresponding entities, you may have missed an entity and its corresponding
relationships. Identify these missed entities and add them to the relationship
matrix now.
Step 9.
Draw Fully-Attributed ERD
If you introduced new entities and attributes in step 8, you need
to redraw the entity relationship diagram. When you do so, try to rearrange it
so no lines cross by putting the entities with the most relationships in the
middle. If you use a tool like Systems Architect, redrawing the diagram is
relatively easy.
Even if
you have no new entities to add to the Key-Based ERD, you still need to add the
attributes to the Non-Key Data section of each rectangle. Adding these
attributes automatically puts them in the repository, so when we use the entity
to design the new system, all its attributes will be available.
Step
10. Check Results
Look at your diagram from the point of view of a system owner or
user. Is everything clear? Check through the Cardinality pairs. Also, look over
the list of attributes associated with each entity to see if anything has been
omitted.
No comments:
Post a Comment