Q: What is normalization?

A: Normalization is a technique of database design that minimizes the amount of redundancy in the database tables. This is accomplished by laying out tables (mainly columns and key fields) in a manner that reduces the amount of duplicate data being stored in the tables. When people talk about normalization, you will hear them talk about forms. This article will talk about the first 3 forms. To learn more about forms and database design practices the following books are great references Database Design for Mere Mortals or Beginning Database Design.

First Normal Form
This form refers to classifying data into seperate tables where that data in each table is of similar type and giving each table a primary key.

Second Normal Form
This form involves removing to other tables data that is only dependent on a part of the key. As with the definition of database normalization, you are trying to reduce redundancy. Here is an example: If you have two tables – authors and books, you do not want to put the author’s address in both tables. If you need the author’s address in the books table, you would only put a reference to the primary key for the author from the Authors table in the Books table. This way, you will be able to use all of the information about the author without having to maintain it in more than one place.

Third Normal Form
This form involves getting rid of anything in the tables that does not depend solely on the primary key. Only include information that is dependent on the key and move off data to other tables that are independent on the primary key and create primary key for the new tables.

Normalization is crucial to good database design, but it is not necessary to normalize all of the way to the third or fourth form for every database that you create. Use common sense and use the amount of normalization that the situation calls for and the amount that you feel comfortable with.

Bookmark it and Share
  • Digg
  • del.icio.us
  • StumbleUpon
  • Technorati
  • Netvouz
  • De.lirio.us
  • Furl
  • NewsVine
  • Reddit
  • YahooMyWeb