Let us get an overview about Normalization Principles.
Here are different normal forms we use. Provided links are from Wiki.
Most of the well designed Data Models will be in either 3rd Normal Form. BCNF is used in some extreme cases where 3rd Normal Form does not eliminate all insertion, updation and deletion anomalies.
While normalization is extensively used for transactional systems, they are not ideal for reporting or descision support systems. We tend to use dimensional modeling for reporting systems where tables will contain pre processed data as per the report requirements.
Let us understand some of the key terms we use while going through the normal forms.
Domain
Attribute
Atomic (indivisible)
Functionally Dependent
Prime Attribute
Candidate Key
Data Anomalies - potential issues to data due to the mistakes by users or developers
Transitive Dependency