Database Normalization 7

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

DATABASE NORMALIZATION

What Youll Learn


This section of notes covers the process of database normalization in which relations
(tables) created from theconversion of the E-R model are analyzed for potential flaws
(anomalies) and these flaws are corrected. The following specific topics are covered:
The Relational Model
Functional Dependencies
Keys and Uniqueness
Modification Anomalies
Normalization Process
First Normal Form
Second Normal Form
Third Normal Form
Boyce-Codd Normal Form
Fourth Normal Form
Fifth Normal Form
Domain/Key Normal Form
De-Normalization
All-In-One Example of normalization.
More Normalization Exercises to try

o
o
o
o
o
o
o

Textbook Resources
Connolly, Begg,
Holowczak

Ch. 8

Database
Systems:
Conolly&Begg
5th Ed: 13 and 14
6th Ed: 14 and 15

Rob/Coronel Elmasri/Navathe Kroenke Hoffer, Pre


(5th ed)
(3rd) ed.
(7th ed.) McFadden

Ch. 4

Ch. 14 and 15

Ch. 5

Ch. 5 and A
B

The Relational Model


As a reminder, the database development process we are following has the these steps:
1.
2.

Gather user/business requirements.


Develop the conceptual E-R Model (shown as an E-R Diagram) based on the
user/business requirements.
3.
Convert the E-R Model to a set of relations in the (logical) relational model
4.
Normalize the relations to remove any anomalies.
5.

Implement the database by creating a table for each normalized relation in a


relational database management system.

What is Normalization?

Normalization is a process in which we systematically examine relations


for anomalies and, when detected, remove those anomalies by splitting up the relation
into two new, related, relations.
Normalization is an important part of the database development process: Often
during normalization, the database designers get their first real look into how the data
are going to interact in the database.
Finding problems with the database structure at this stage is strongly preferred to
finding problems further along in the development process because at this point it is
fairly easy to cycle back to the conceptual model (Entity Relationship model) and make
changes.
Normalization can also be thought of as a trade-off between data redundancy and
performance. Normalizing a relation reduces data redundancy but introduces the need
for joins when all of the data is required by an application such as a report query.
Recall, the Relational Model consists of the elements: relations, which are made up of
attributes.

1.
2.
3.
4.
5.
6.

A relation is a set of attributes with values for each attribute such that:
Each attribute (column) value must be a single value only.
All values for a given attribute (column ) must be of the same data type.
Each attribute (column) name must be unique.
The order of attributes (columns) is insignificant
No two tuples (rows) in a relation can be identical.
The order of the tuples (rows) is insignificant.
From our discussion of E-R Modeling, we know that an Entity typically
corresponds to a relation and that the Entitys attributes become attributes of the relation.
We also discussed how, depending on the relationships between entities, copies
of attributes (the identifiers) were placed in related relations as foreign keys.

The next step is to identify functional dependencies within each relation. Click on
the __Next Page link below to learn more about the normalization process.

Functional Dependencies

A Functional Dependency describes a relationship between attributes within a


single relation.
An attribute is functionally dependent on another if we can use the value of one
attribute to determine the value of another.
Example: Employee_Name is functionally dependent on Social_Security_Number
because Social_Security_Number can be used to uniquely determine the value of
Employee_Name.
We use the arrow symbol to indicate a functional dependency.
X Y is read X functionally determines Y
Here are a few more examples:
Student_ID Student_Major
Student_ID, CourseNumber, Semester Grade
Course_Number, Section Professor, Classroom, NumberOfStudents
SKU Compact_Disk_Title, Artist
CarModel, Options, TaxRate Car_Price

The attributes listed on the left hand side of the are called determinants.
One can read A B as, A determines B. Or more specifically: Given a value for A, we
can uniquely determine one value for B.

Keys and Uniqueness

Key: One or more attributes that uniquely identify a tuple (row) in a relation.
The selection of keys will depend on the particular application being considered.
In most cases the key for a relation will already be specified during the conversion
from the E-R model to a set of relations.
Users can also offer some guidance as to what would make an appropriate key.
Recall that no two relations should have exactly the same values, thus a
candidate key would consist of all of the attributes in a relation.

A key functionally determines a tuple (row). So one functional dependency that


can always be written is:
The Key All other attributes

Modification Anomalies
Once our E-R model has been converted into relations, we may find that some
relations are not properly specified. There can be a number of problems:
o
Deletion Anomaly: Deleting one fact or data point from a relation results

in other information being lost.


o
Insertion Anomaly: Inserting a new fact or tuple into a relation requires
we have information from two or more entities this situation might not be feasible.
o
Update Anomaly: Updating one fact in a relation requires us to update
multiple tuples.

Anomaly Example 1

Here is an example to illustrate these anomalies: Consider a very common


CUSTOMER relation:
CUSTOMER(CustomerID, CustomerName, Street, City, State,
PostalCode)
In the United States, the PostalCode (or ZipCode) references a specific City and
State so one might have data such as:
CustomerID

Name

Street

City

State PostalCo

C101

Bill Smith

123 First St.

New Brunswick

NJ

07101

C102

Mary Green

11 Birch St.

Old Bridge

NJ

07066

C103

Ted Jones

3 Academy St.

Old Bridge

NJ

07066

C104

Sally Taylor

446 First Ave.

New Brunswick

NJ

07101

C105

Mary Miller

44 Toga Ct.

Farmingdale

NY

11735

Insertion Anomaly: What happens if we go to add a new Customer: C106, Joe


Feldman, 99 Ninth St., Springfield, NJ
What we know about Joe is that he lives in Springfield, NJ (one fact) but we may not
know his PostalCode.
We will need to get that additional fact (the fact that the PostalCode for Springfield, NJ is
07081.

Deletion Anomaly: What happens if we delete customer C105: Then we not only
remove the customer information but we also remove (lose) the fact that Farmingdale,
NY has postal code 11735.
Modification Anomaly: It is possible that when a town grows in population, the zip
code will be split into two (or more) new zip codes.
For example, if Old Bridge, NJ splits its zip code, then we will have to update many
different tuples even though we are only changing one fact about Old Bridges zip code.

Anomaly Example 2

Here is another example to illustrate anomalies: A company has a Purchase


Order form:

Our dutiful consultant creates the E-R Model directly matching the purchase

order:

When we follow the steps to convert to a set of relations this results in two
relations (keys are underlined):
PO_HEADER (PO_Number, PODate, Vendor, Ship_To, ...)

LINE_ITEMS (PO_Number, ItemNum, PartNum, Description, Price,


Qty)

Consider some sample data for the LINE_ITEMS relation:


PO_Number

ItemNum

PartNum

Description

Price

O101

I01

P99

Plate

$3.00

O101

I02

P98

Cup

$1.00

O101

I03

P77

Bowl

$2.00

O102

I01

P99

Plate

$3.00

O102

I02

P77

Bowl

$2.00

O103

I01

P33

Fork

$2.50

What are some of the problems with this relation ?

1.

What happens if we want to add the fact that Order O103 has quantity 5 of
part P99 ?

2.
3.

What happens when we delete item I02 from Order O101 ?


What happens if we want to change the price of the Plate (P99)?
These problems occur because the relation in question contains data about 2 or
more themes.
Typical way to solve these anomalies is to split the relation in to two or more
relations This is part of theProcess called Normalization discussed next.
On the next page we will formally define the Normalization Process.

Normalization Process

o
o
o
o
o
o
o

1.
2.
3.
4.
5.

Relations can fall into one or more categories (or classes) called Normal Forms
Normal Form: A class of relations free from a certain set of modification
anomalies.
Normal forms are given names such as:
First normal form (1NF)
Second normal form (2NF)
Third normal form (3NF)
Boyce-Codd normal form (BCNF)
Fourth normal form (4NF)
Fifth normal form (5NF)
Domain-Key normal form (DK/NF)
These forms are cumulative. A relation in Third normal form is also in 2NF and
1NF.
The Normalization Process for a given relation consists of:
Specify the Key of the relation
Specify the functional dependencies of the relation.
Sample data (tuples) for the relation can assist with this step.
Apply the definition of each normal form (starting with 1NF).
If a relation fails to meet the definition of a normal form, change the relation (most often
by splitting the relation into two new relations) until it meets the definition.
Re-test the modified/new relations to ensure they meet the definitions of each normal
form.
In the next set of notes, each of the normal forms will be defined along with an example
of the normalization steps.

First Normal Form (1NF)

A relation is in first normal form if it meets the definition of a relation:

1.
2.

Each attribute (column) value must be a single value only.


All values for a given attribute (column ) must be of the same type.

3.
4.

Each attribute (column) name must be unique.


The order of attributes (columns) is insignificant

5.
6.

No two tuples (rows) in a relation can be identical.


The order of the tuples (rows) is insignificant.
If you have a key defined for the relation, then you can meet the unique row requirement.
Example relation in 1NF (note that key attributes are underlined):
STOCKS (Company, Symbol, Headquarters, Date, Close_Price)

Company

Symbol

Headquarters

Date

Close Price

Microsoft

MSFT

Redmond, WA

09/07/2013

23.96

Microsoft

MSFT

Redmond, WA

09/08/2013

23.93

Microsoft

MSFT

Redmond, WA

09/09/2013

24.01

Oracle

ORCL

Redwood Shores, CA

09/07/2013

24.27

Oracle

ORCL

Redwood Shores, CA

09/08/2013

24.14

Oracle

ORCL

Redwood Shores, CA

09/09/2013

24.33

Note that the key (which consists of the Symbol and the Date) can uniquely determine the
Company, headquarters and Close Price of the stock. Here was assume that Symbol must be
unique but Company, Headquarters, Date and Price are not unique

Second Normal Form (2NF)

A relation is in second normal form (2NF) if all of its non-key attributes are
dependent on all of the key.
Another way to say this: A relation is in second normal form if it is free from
partial-key dependencies
Relations that have a single attribute for a key are automatically in 2NF.

This is one reason why we often use artificial identifiers (non-composite keys) as

keys.

In the example below, Close Price is dependent on Company, Date


The following example relation is not in 2NF:
STOCKS (Company, Symbol, Headquarters, Date, Close_Price)

Company

Symbol

Headquarters

Date

Microsoft

MSFT

Redmond, WA

09/07/2013

23.96

Microsoft

MSFT

Redmond, WA

09/08/2013

23.93

Microsoft

MSFT

Redmond, WA

09/09/2013

24.01

Oracle

ORCL

Redwood Shores, CA

09/07/2013

24.27

Oracle

ORCL

Redwood Shores, CA

09/08/2013

24.14

Oracle

ORCL

Redwood Shores, CA

09/09/2013

24.33

To start the normalization process, list the functional dependencies (FD):


FD1: Symbol, Date Company, Headquarters, Close Price
FD2: Symbol Company, Headquarters

Consider that Symbol, Date Close Price.


So we might use Symbol, Date as our key.

However we also see that: Symbol Headquarters


This violates the rule for 2NF in that a part of our key key determines a non-key
attribute.
Another name for this is a Partial key dependency. Symbol is only a part of the
key and it determines a non-key attribute.
Also, consider the insertion and deletion anomalies.
One Solution: Split this up into two new relations:
COMPANY (Company, Symbol, Headquarters)

STOCK_PRICES (Symbol, Date, Close_Price)

Close Pri

At this point we have two new relations in our relational model. The original
STOCKS relation we started with is removed form the model.

Sample data and functional dependencies for the two new relations:
COMPANY Relation:
Company

Symbol

Headquarters

Microsoft

MSFT

Redmond, WA

Oracle

ORCL

Redwood Shores, CA

FD1: Symbol Company, Headquarters

STOCK_PRICES relation:
Symbol

Date

Close Price

MSFT

09/07/2013

23.96

MSFT

09/08/2013

23.93

MSFT

09/09/2013

24.01

ORCL

09/07/2013

24.27

ORCL

09/08/2013

24.14

ORCL

09/09/2013

24.33

FD1: Symbol, Date Close Price

In checking these new relations we can confirm that they meet the definition of
1NF (each one has well defined unique keys) and 2NF (no partial key dependencies).

Third Normal Form (3NF)

A relation is in third normal form (3NF) if it is in second normal form and it


contains no transitive dependencies.
Consider relation R containing attributes A, B and C. R(A, B, C)
If A B and B C then A C
Transitive Dependency: Three attributes with the above dependencies.
Example: At CUNY:

Course_Code Course_Number, Section


Course_Number, Section Classroom, Professor

Consider one of the new relations we created in the STOCKS example for 2nd
normal form:
Company

Symbol

Headquarters

Microsoft

MSFT

Redmond, WA

Oracle

ORCL

Redwood Shores, CA

The functional dependencies we can see are:


FD1: Symbol
Company
FD2: Company Headquarters
so therefore:
Symbol Headquarters

This is a transitive dependency.


What happens if we remove Oracle?
We loose information about 2 different facts.

The solution again is to split this relation up into two new relations:
STOCK_SYMBOLS(Company, Symbol)

COMPANY_HEADQUARTERS(Company, Headquarters)

This gives us the following sample data and FD for the new relations
Company

Symbol

Microsoft

MSFT

Oracle

ORCL

FD1: Symbol Company

Company
Microsoft

Headquarters
Redmond, WA

Oracle

FD1:

Redwood Shores, CA

Company

Headquarters

Again, each of these new relations should be checked to ensure they meet the
definition of 1NF, 2NF and now 3NF.

You might also like