Database Design: Normalization J.G. Zheng June 29 th 2005 DB Chapter 4

Preview:

Citation preview

Database Design:Normalization

J.G. ZhengJune 29th 2005

DB Chapter 4

2

Overview

Normalization First three normal forms

3

Introduction/Review

Two perspectives to design database E-R Diagram (top-down) Normalization (bottom-up)

Normalization is a process of efficiently modeling data, by analyzing relationships between attributes The goal is to remove redundancy and anomaly Usually a table is divided into 2 or more tables

Combining the two perspectives in practice

4

Normal FormsNormal forms are guidelines (steps) for the normalization process

Unnormalized Form (UNF)

1st Normal Form (1NF)

2nd Normal Form (2NF)

3rd Normal Form (3NF)

Boyce Codd Normal Form (BC/NF)

4th Normal Form (4NF)

5th Normal Form

DK/NF

Few

er

an

om

alie

s... …

but m

ore

tab

les

Norm

aliz

ati

on Norm

aliza

tion

5

Normalization – 1NF

A relation is in 1NF if it satisfies the definition of a relation Review: what are the characteristics

of a relation?

Particularly No repeating value sets (single value

property)

6

Transforming to 1NF

Row transformation (Figure 4.5 and 4.6 on page 287)

UNF 1NF

7

Higher Normal Forms

Normal forms higher than 1NF deal with functional dependence

Identify which normal form the table is by analyzing the functional dependence between attributes (fields)

8

Functional Dependence

If each value of attribute A is associated with only one value of attribute B, we say

A determines B Or, B is dependent on A Denoted as: A B

Functional dependence describes relationships between attributes (not relations)

Note: A (or B) could be a set of fields

9

Functional Dependence Examples

Dependence example For each SSN, there is only one

corresponding first name (or last name), so: SSN determines FirstName SSN FirstName

Non-dependence example Each instructor teaches multiple courses, so: InstructorId does not determines

CourseNumber

10

Functional Dependence and Keys

By definition, primary key functionally determines all other attributes Primary key Surrogate key Composite primary key

Dependency diagram

ISBN Title PubDate ListPrice

11

Functional Dependency Exercise

CustomerNum CustomerName?{Street, City, State} Zip?CustomerName Balance?State (?) ZipRepNum ( ? ) CustomerName

12

Normalization – 2NF

A relation is in 2NF, if It is in 1st normal formal, and All nonkey attributes must be functionally

dependent on the whole primary key (Fully dependence)

No partial dependence

It also implies that a relation is in 2NF if the primary key is a single attribute

13

2NF Identify primary key (PK) If PK consists of only one field, then it is in 2NF If PK is a composite key, then analyze functional

dependence between part of primary key and other non-key attributes

14

Normalization – 3NF

A relation is in 3NF, if It is in 2nd normal formal, and All attributes must, and only, be

functionally dependent on candidate keys

3NF deals with [transitive dependence] A B C No transitive dependence

15

3NF

Identify primary key (PK) and Look for transitive dependence

16

Some Practical Tips

If there are attributes of two different entities in one table, there are usually anomalies

To identify the normalization level, determine the primary key first; then look for partial dependence and transitive dependence

17

Normalization Exercise 1

Which normal form is the above table in?

A. 1NFB. 2NFC. 3NFD. UNF

18

Normalization Exercise 2

Which normal form is the above table (2nd one) in?

A. 1NFB. 2NFC. 3NFD. UNF

19

Normalization Exercise 3

Which normal form is the above table (first one) in?

1NF 2NF 3NF UNF

20

Final database design with 3 tables

21

Summary

1NF: If the tables are relations

2NF: If the tables are in 1NF, and every non-key attribute is dependent on the key, the whole key

3NF: If the tables are in 2NF, and every non-key attribute is dependent on the key, the whole key, and nothing but the key

UNF

Split repeating groups in separate rows

Eliminate partial dependencies

Eliminate transitive dependencies

Recommended