If you've been working with databases for a while, chances are you've heard the term normalization. Perhaps someone's asked you "Is that database normalized?" or "Is that in BCNF?" All too often, the reply is "Yeah." Normalization is often brushed aside as a luxury that only academics have time for. However, knowing the principles of normalization and applying them to your daily database design tasks really isn't all that complicated and it could drastically improve the performance of your DBMS.

In this article, we'll introduce the concept of normalization and take a brief look at the most common normal forms. Future articles will provide in-depth explorations of the normalization process.

So, what is normalization? Basically, it's the process of efficiently organizing data in a database.

There are two goals of the normalization process: eliminate redundant data (for example, storing the same data in more than one table) and ensure data dependencies make sense (only storing related data in a table). Both of these are worthy goals as they reduce the amount of space a database consumes and ensure that data is logically stored.

The database community has developed a series of guidelines for ensuring that databases are normalized. These are referred to as normal forms and are numbered from one (the lowest form of normalization, referred to as first normal form or 1NF) through five (fifth normal form or 5NF). In practical applications, you'll often see 1NF, 2NF, and 3NF along with the occasional 4NF. Fifth normal form is very rarely seen and won't be discussed in this article.

Before we begin our discussion of the normal forms, it's important to point out that they are guidelines and guidelines only. Occasionally, it becomes necessary to stray from them to meet practical business requirements. However, when variations take place, it's extremely important to evaluate any possible ramifications they could have on your system and account for possible inconsistencies. That said, let's explore the normal forms.

First normal form (1NF) sets the very basic rules for an organized database:

· Eliminate duplicative columns from the same table.
· Create separate tables for each group of related data and identify each row with a unique column or set of columns (the primary key).

Second normal form (2NF) further addresses the concept of removing duplicative data:

· Remove subsets of data that apply to multiple rows of a table and place them in separate tables.
· Create relationships between these new tables and their predecessors through the use of foreign keys.

Third normal form (3NF) goes one large step further:

· Remove columns that are not dependent upon the primary key.

Finally, fourth normal form (4NF) has one requirement:

· A relation is in 4NF if it has no multi-valued dependencies.

Remember, these normalization guidelines are cumulative. For a database to be in 2NF, it must first fulfill all the criteria of a 1NF database.

shabbir

10May2005 14:28

Re: Database Normalization

I must say that its not always that repetitive columns are store in a different tables. Here is a very practical example of the same

If you have some user/employee/student information table then you have the city and zip stored. Now if you look at the table in a very strict normal forms way then you will realize that many city have the same codes and so what can be done is we can have a seperate table for zip code and that can be the perfect normalization.

But from the practical point of view that is not done and we denormalize so that the information stored is in efficient manner as well as much more easily fetchable. The reason behind denormalization is to avoid the joins which are much complex and time consuming process.

prashanthpolam

7Mar2006 13:30

Re: Database Normalization

Normalization is a process or removing the data redendacy to identify a value uniquely in a table.
The process of implementing or rules to be followed to implement in a normlization is called normal rules or normal forms. there are 5 types.

1NF: A table can be said to be 1NF by identifying the non-key attibute is dependt up on no-key attirbute and identify the colum or attibute which produces more than one value.

Q: How to eliminate the values in an attribute having moe than one?
Ans: RDBMS provieds resources called cell values by the cell values we can eliminate an attirute containing more than one value. cell values are represented by ...line.
when we eliminate the full functional dependancy then we can sya that table is in 1NF.

2NF: A table can set to be in 2NF, if the tab le is already satify the 1NF and eliminating partial functional depency.

3NF: A Table can be said to be 3 NF if the table already satisfy 2NF and eliminate transitive depency.

4NF: A table can be said to be 4NF if the table is already said to be satisfy the 3NF

5NF: A table can said to be 5NF if it is already satify the 4NF and it has to satisfy the degree of reationship.
1. 1:1
2. 1:M or M:1
3. M: M

I think by reading all these u can easily understand the Normal forms

okay
bye
prashanth

shabbir

7Mar2006 20:32

Re: Database Normalization

Quote:

Originally Posted by prashanthpolam

4NF: A table can be said to be 4NF if the table is already said to be satisfy the 3NF

I could not get this one.

manbeer

27Oct2006 08:09

Re: Database Normalization

Quote:

Originally Posted by shabbir

I could not get this one.

hey can you explain functional dependency and transitive dependency??

pradeep

27Oct2006 10:14

Re: Database Normalization

Functional Dependency

Definition: A functional dependency occurs when one attribute in a relation uniquely determines another attribute. This can be written A -> B which would be the same as stating "B is functionally dependent upon A."Examples: In a table listing employee characteristics including Social Security Number (SSN) and name, it can be said that name is functionally dependent upon SSN (or SSN -> name) because an employee's name can be uniquely determined from their SSN. However, the reverse statement (name -> SSN) is not true because more than one employee can have the same name but different SSNs.

Transitive Dependency

Definition: A type of functional dependency in which the value in a non-key field is determined by the value in another non-key field and that field is not a candidate key

manbeer

28Oct2006 07:21

Re: Database Normalization

Thanks Pradeep

Quote:

Originally Posted by pradeep

Functional Dependency

Definition: A functional dependency occurs when one attribute in a relation uniquely determines another attribute. This can be written A -> B which would be the same as stating "B is functionally dependent upon A."Examples: In a table listing employee characteristics including Social Security Number (SSN) and name, it can be said that name is functionally dependent upon SSN (or SSN -> name) because an employee's name can be uniquely determined from their SSN. However, the reverse statement (name -> SSN) is not true because more than one employee can have the same name but different SSNs.

Transitive Dependency

Definition: A type of functional dependency in which the value in a non-key field is determined by the value in another non-key field and that field is not a candidate key

Govinda Rao

9Jan2007 19:38

Re: Database Normalization

Give a exact Defination to Instance?

shabbir

9Jan2007 20:30

Re: Database Normalization

Quote:

Originally Posted by Govinda Rao

Give a exact Defination to Instance?

:confused:

ranjithach

11Jul2007 14:27

Re: Database Normalization

hi
i want to know about what is the importance of data models ? how they are useful while designing any database;i want clear and easy of understanding .