Functional Dependencies and
Normalization for Relational
Databases
Informal Design Guidelines for
Relational Databases
Relational database design means grouping
of attributes to form "good" relation schemas
We can design "good" relations by
Informal guidelines
Formal guidelines using concepts of functional
dependencies and normal forms 1NF, 2NF, 3NF
BCNF , 4NF and 5NF
Impart clear Semantics of the
Relation Attributes
Each tuple in a relation should represent one
entity or relationship instance
Design a schema that can be explained easily
relation by relation. The semantics of attributes
should be easy to interpret.
Redundant Information in
Tuples and Update
Anomalies
Attributes of multiple entities may cause
problems
Information is stored redundantly wasting
storage
Problems with update anomalies:
Insertionanomalies
Deletion anomalies
Modification anomalies
EXAMPLE OF AN UPDATE
ANOMALY
Consider the relation:
EMP_PROJ ( Emp#, Proj#, Ename, Pname, No_hours)
Update Anomaly
Changing the name of project number P1 from “Billing” to
“Customer-Accounting” may cause this update to be made for all
100 employees working on project P1
Insert Anomaly
Cannot insert a project unless an employee is assigned to .
Inversely- Cannot insert an employee unless he/she is assigned to
a project.
EXAMPLE OF AN UPDATE
ANOMALY (2)
Delete Anomaly
When a project is deleted, it will result in deleting all the
employees who work on that project. Alternately, if an employee
is the sole employee on a project, deleting that employee would
result in deleting the corresponding project.
Design a schema that does not suffer from the
insertion, deletion and update anomalies. If there
are any present, then note them so that applications
can be made to take them into account
Null Values in Tuples
Relations should be designed such that their tuples
will have as few NULL values as possible
Attributes that are NULL frequently could be placed in
separate relations (with the primary key)
Reasons for nulls:
a. attribute not applicable or invalid
b. attribute value unkown (may exist)
c. value known to exist, but unavailable
Spurious Tuples
The "lossless join" property is used to
guarantee meaningful results for join
operations
The relations should be designed to satisfy
the lossless join condition. No spurious
tuples should be generated by doing a
natural-join of any relations
Functional Dependencies
Functional dependencies (FDs) are used to
specify formal measures as a tool for
designing good relational designs
FDs and keys are used to define normal
forms for relations
FDs are constraints that are derived from
the meaning and interrelationships of the
data attributes
Functional Dependencies (2)
A set of attributes X functionally determines a set of
attributes Y if the value of X determines a unique value for
Y
X Y holds if whenever two tuples have the same value for
X, they must have the same value for Y
If t1[X]=t2[X], then t1[Y]=t2[Y] in any relation instance r(R)
X Y in R specifies a constraint on all relation instances
r(R)
FDs are derived from the real-world constraints on the
attributes
Examples of FD constraints
Social Security Number determines employee name
SSN ENAME
Project Number determines project name and
location
PNUMBER {PNAME, PLOCATION}
Employee SSN and project number determines the
hours per week that the employee works on the
project
{SSN, PNUMBER} HOURS
Functional Dependencies (3)
An FD is a property of the attributes in the
schema R
The constraint must hold on every relation
instance r(R)
If K is a key of R, then K functionally
determines all attributes in R (since we never
have two distinct tuples with t1[K]=t2[K])
Inference Rules for FDs
Given a set of FDs F, we can infer additional FDs
that hold whenever the FDs in F hold
Armstrong's inference rules
A1. (Reflexive) If Y subset-of X, then X Y
A2. (Augmentation) If X Y, then XZ YZ
(Notation: XZ stands for X U Z)
A3. (Transitive) If X Y and Y Z, then X Z
A1, A2, A3 form a sound and complete set of
inference rules
Additional Useful Inference
Rules
Decomposition
If X YZ, then X Y and X Z
Union
If X Y and X Z, then X YZ
Psuedotransitivity
If X Y and WY Z, then WX Z
Introduction to
Normalization
Normalization: Process of decomposing
unsatisfactory "bad" relations by breaking up their
attributes into smaller relations
Normal form: Condition using keys and FDs of a
relation to certify whether a relation schema is in a
particular normal form
2NF, 3NF, BCNF based on keys and FDs of a relation
schema
4NF based on keys, multi-valued dependencies
First Normal Form
A table is said to be in First Normal Form
(1NF) if and only if each attribute of the
relation is atomic.
Disallows [composite attributes, multivalued
attributes, and nested relations]
Second Normal Form
Uses the concepts of FDs, primary key
Definitions:
Prime attribute - attribute that is member of the
primary key K
Full functional dependency - a FD Y Z
where removal of any attribute from Y means the
FD does not hold any more
A relation is said to be in a second normal form if
and only if,
it's in first normal form
Every non-key attributes are identified by the use of
primary key
All subset of data, which applies to have multiple rows in
a table must be removed and placed in a new table. And
this new table and the parent table should be related by
the use of foreign key.
Examples
Second Normal Form
{SSN, PNUMBER} HOURS is a full FD since neither
SSN HOURS nor PNUMBER HOURS hold
{SSN, PNUMBER} ENAME is not a full FD (it is
called a partial dependency ) since SSN ENAME also
holds
A relation schema R is in second normal form (2NF) if
every non-prime attribute A in R is fully functionally
dependent on the primary key
R can be decomposed into 2NF relations via the process
of 2NF normalization
Third Normal Form
Definition
Transitive functional dependency – if there a set of
attribute Z that are neither a primary or candidate key
and both X Z and Y Z holds.
OR
A functional dependency is said to be transitive if it is indirectly formed
by two functional dependencies. For e.g.
X -> Z is a transitive dependency if the following three functional
dependencies hold true:
X->Y
Y does not ->X
Y->Z
Third Normal Form
Examples:
SSN DMGRSSN is a transitive FD since
SSN DNUMBER and DNUMBER DMGRSSN hold
SSN ENAME is non-transitive since there is no set
of attributes X where SSN X and X ENAME
•STREET and CITY have no relation with Student , They fully
depend upon zip code. Hence the relation should be broken
3rd Normal Form
A relation schema R is in third normal form
(3NF) if it is in 2NF and no non-prime
attribute A in R is transitively dependent on
the primary key
BCNF (Boyce-Codd Normal
Form)
A relation schema R is in Boyce-Codd Normal
Form (BCNF) if whenever an FD X A holds in
R, then X is a superkey of R
Each normal form is strictly stronger than the previous
one:
Every 2NF relation is in 1NF
Every 3NF relation is in 2NF
Every BCNF relation is in 3NF
There exist relations that are in 3NF but not in BCNF
The goal is to have each relation in BCNF (or 3NF)
Any table is said to be in BCNF, if its
candidate keys do not have any partial
dependency on the other attributes. i.e.; in
any table with (x, y, z) columns, if (x, y)->z
and z->x then it's a violation of BCNF. If (x,
y) are composite keys and (x, y)->z, then
there should not be any reverse dependency,
directly or partially
(STUDENT_ID, MAJOR_SUBJECT) -> ADVISORY_LECTURER
ADVISORY_LECTURER -> MAJOR_SUBJECT
4NF
It should meet all the requirement of 3NF
Attribute of one or more rows in the table
should not result in more than one rows of
the same table leading to multi-valued
dependencies
SUBJECT --> LECTURER
SUBJECT-->BOOKS
Fifth Normal Form (5NF)
A database is said to be in 5NF, if and only if,
It's in 4NF
If we can decompose table further to eliminate
redundancy and anomaly, and when we re-join the
decomposed tables by means of candidate keys, we
should not be losing the original data or any new
record set should not arise. In simple words, joining
two or more decomposed table should not lose
records nor create new records
Thank You