Database Reference
In-Depth Information
encies complicate the model and make it difficult to determine how to retrieve values for
each attribute.
To resolve a hidden dependency, you will either need to remove the attribute that is a fact
about non-primary key attribute(s) from the model, or you will need to create a new entity
with a different primary key for the attribute that is dependent on the non-primary key at-
tribute(s).
As with 1NF and 2NF, we will find ourselves asking many questions to uncover hidden
dependencies. We can have another question template such as:
“Is [[insert attribute name here]] a fact about any other attribute in this same entity?”
So these are all valid questions for our employee example:
•
Is Employee Phone Number a fact about any other attribute in
Employee
?
•
Is
Organization Phone Number
a fact about any other attribute in
Department
?
•
Is
Department Phone Number
a fact about any other attribute in
Department
?
•
Is
Employee First Name
a fact about any other attribute in
Employee
?
•
Is
Employee Last Name
a fact about any other attribute in
Employee
?
•
Is
Department Name
a fact about any other attribute in
Department
?
•
Is
Employee Start Date
a fact about any other attribute in
Employee
?
•
Is
Employee Vested Indicator
a fact about any other attribute in
Employee
?
Note that
Employee Vested Indicator
may be a fact about
Employee Start Date
as
Em-
ployee Vested Indicator
can be calculated
Y
or
N
based upon the employee's start date.
The following figure shows the model in 3NF after removing the derived attribute
Em-
ployee Vested Indicator.