3 Normal Forms Tutorial

Read my highly-acclaimed tutorial on the Three Normal Forms.

Download a printable PDF version of this tutorial.

Then come back here and leave a comment, if you want.

For the record, I don’t have any tutorials on 4th Normal Form, 5th Normal Form, Boyce-Codd Normal Form, or any other Forms (normal or otherwise) you might wish to ask about. Thanks, and happy reading!

149 Responses to 3 Normal Forms Tutorial

  1. Hemant Tandon says:

    I am a DBA, now reading this article really thrilled me.

    I loved every peice of it.

    Doubt which came to me as a DBA regarding performance were addressed beautifully.

    All possible doubt were covered and beautifull knitted, because of which reader don’t loose interest.

    Superb Keep it up.

    Also, I wanted to have a PDF for future reference that was also taken care.

    Its suits my requrement completely.

    Thank You 🙂

  2. Sarah says:

    OMG…After reading sooo many books, asking questions to the instructor, and viewing multiple websites, I still was confused on what to do for the 3 norms of a database. Your tutorial explained exactly what I was supposed to do without all that extra stuff. Cheers!!!

  3. Yugkirty says:


    I have been having so many confusions in understanding normalization, but after going through your tutorial I feel confident that I am now clear on the topic.

  4. Jeff Lindberg says:

    Thank you for the excellent step-by-step discussion. I had used these concepts for some time but never really understood how they related to the “3rd normal form” and its concepts.


  5. Swaroopa says:

    Dear Fred,

    Aftr so many years I really found a good stuff of explanation on the Three Normal Forms.Got my all doubts on Normal Forms cleared. Thanks a lot

  6. Anu-Ramesh says:

    Hello Fred,

    The example you gave is really nice.
    Thank you very much for providing such a good example.
    Keep continuing the same work.

  7. RRJoshi says:

    Hi Fred,
    I referred numerous books and sites to understand the three forms of Normalization.The best part about the example you have provided is that from the 1NF till 3NF,you have followed/explained the same example,you have explained it layman’s terms and using cell#,row# etc.This is one of the best explanatory examples I have ever come across.Thanks a Lot!!Good Job!

  8. sakshi says:

    Good Tutorial. Clearly explained the three normal forms. Now even if I want, I cannot forget it. Good Job!

  9. amit says:

    it is dam good and you explained every step in the easiest way thank you for the great healp, its realy best

  10. GauravChawla says:

    Very good article.Was really very helpful.

  11. Shilpa M says:

    nice article for beginners, really good

  12. bhagyashri Agate says:

    Very well explained! Helped a lot to clear the basic concepts of database normalization

  13. Laterlus says:

    Thanks, by far the best explanation or normalization I’ve ever seen.

  14. michael says:

    thank you Fred for one of the best tutorials i have ever read.
    i read many of your other posts as well, including the cat stuff.
    i especially like the performance monitoring and the o_direct and dt utility.
    thanks again, it’s the kindness and knowledge of persons like yourself that helps me stay employed. please keep it up, ( i also have cats to feed, (kids too)):]

  15. peace says:

    i need employee management system softwares tutorial
    in my mail id babi_sharma12@yahoo.com

  16. peace says:

    i wanted to know about human resource management system about banking
    in programming idea

  17. Gagandeep Singh says:

    The idea is awesome and it is easy to understand the concept of normalisation.Really i am inspired by the article.It removed all my doubts related to Normalisation.

  18. Priyabrat says:

    I am a database developer.
    This tutorial gives a outstanding explanation of the concept of normalization. The steps and approach illustrated here can help normalize realtime databases.

    Great work Man!!!!

  19. java boy says:

    Stunning. Outstanding. Perfect!

  20. Eddy says:

    Concur with your reviewers – You are spot on Fred and everything is soooooo clear i can’t beleive how i stumbled on your site after going through so many articles on Normalization that were “Greek” (no pun intended for the wonderful people of Greece)to me.

    God bless! you even have humour! i hope you are a teacher. I have never given a review online, but you surely deserve it and i could not wait to finish the article to post one.

  21. S.Gajalakshmi says:

    There are no words to express my abundant thankfulness to you. My search has ended I can say.

  22. sam says:

    this was really very useful article. but i think theres no need of having 2 phases for the decomposition of the second normal form. it can be done in one phase i guess. thanks.

  23. Chan Beauvais says:

    A very good article.
    But you miss one minor detail.
    The price in the item entity may change over time.
    I consider it acceptable to keep the item price in the order detail, or have a price change many side relation to the item.
    The price exists independently at the time the order is placed or fulfilled, depending on business rule.

  24. Srikanth says:

    The example and explanation are really helpful. Thanks for posting this article.


  25. phaneendra says:

    This is very good material for normalization. Thanks to publisher

  26. Harsha says:

    Awesome description !!!!

    Normalization is explained very beautifully !!!!

  27. vivek says:

    Simply superb . (No charge for awesomeness :-))

  28. Venkateswarlu S says:

    hai dear,

    I’am really thankfull to you this is a nice article to go through for the one who want to know clear description about NF’s. nice work dude.

  29. ioutside says:

    Even though there are plenty of praise posted already, I still have to add mine: excellent tutorial!

    I’d like to see similar tutorial on explanations beyond 3NF in the future.


  30. sanju says:

    Gud work…
    Thxs for the Post

  31. manibalan says:

    ya its realy nice..great work..i am totally blank in normalaization now i got a clear idea oon normalization…nice

  32. Debnil says:

    The best Example I have ever seen. I dont know who has prepared this but hats off to you !!!!!!!! you have a very good idea on this !!!! Keep it up Boss….

  33. Tej says:

    Understanding made very easy………………………. 🙂
    3 normal forms are explained besutifullly……….
    Thank you Fred

  34. Sudhi says:

    BEAUTIFULL!!. This is an example on how all the tutorials should be like. Excellent contents.

  35. Al says:

    Wow thanks for the tutorial, I kinda understood the concept, but the terminology escaped me. Thanks!

  36. Manoj Kumar says:

    Salute to the author, This article shows you can simply make understand others the Complex things in easy manner if you know your job.. Thank you so much for this…

  37. ranjan says:


    For the first time someone explained exactly what a Tuple means. Otherwise all reputed writers either define it by some set notations and bla bla or they just call a row as a Tuple. Your article has been one of the best reading that I ever had and your style just suits you to be defined as a “Mentor” or a “Guru”. This is how a Guru is supposed to explain. You have pulled another life-long student for yourself. Thank you very much.



  38. Apart from my business, I teach advanced database design to guys who reside at Her Majesty’s Pleasure and are rehabilitating, and I have found that this protocol is excellent. Really good, and rare to find such a clear description of the process required to build a relational database.

  39. Fred Coulson says:


    I am more than happy to assist with Her Majesty’s pleasure in any way I can!

    Thanks for the kind remarks.

  40. Helder Lourenço says:

    I´de like to see some problems solved here… if price or description of itemid changes over the time, and we go back to see/edit invoice details, we get the new values, not the ones that made up de invoice first time. Even for beginners this is not a system we should use because invoice history is forgotten. But anyway this is a great tutorial for NF.

  41. Sunil Patil (Indore->India) says:

    Excellent, Normalization is explained very beautifully !!!!

  42. reader says:

    Simply superb explanation…. hats off to u..

  43. Cee Washey says:

    Thanks!! Finally all my “huhs” about normalization have been answered. After reading the article I said God bless you for putting it out there. Keep up the good work.

  44. ashish leuva says:

    so much simplified explanation !!
    Its really cool !!

    Thanks a lot !!

  45. Rahul says:

    Off course an excellent tutorial. But I expect a little bit more clear explanation on 1st normal form. IT does not seems to be sufficient.

  46. Rahul says:

    One more thing. May you kindly contribute your tutorial over higher levels of normalization? It would really be helpful. Also, some more examples will surely help the learners.

  47. Sally says:

    You light my road to do database normalization. Thank you so much for the clearly explanation how to do it. Helpful!!!

  48. Robert Schmid says:

    Databases have always been a weakness for me as a developer. I can sort-of-intuitively get things in to 3NF but I could never explain why. Now I can, thank you! Could please now do 4-6 Normal Forms as well?

  49. Hi I can say your guideline it was quite excellent cause it was quite clear in term of explanation I can say. It was quite completely awsome technique. Thanks for a good article. Best.

  50. Tommy says:

    Well summarized, Straight to the point and very helpful indeed!
    An infant could understand normalizations reading this material.
    Thanks. Your the best!

Leave a Reply

Your email address will not be published. Required fields are marked *