데이터 중복과 insertion, update, deletion anomaly를 최소화하기 위해 일련의 nomal forms(NF)에 따라 relational DB를 구성하는 과정
* Normal forms : 정규화 되기 위해 준수해야하는 rule들

1NF~BCNF까지는 FD와 key만으로 정의되는 normal forms.
3NF까지 도달하면 정규화 됐다고 말하기도 함.
1NF : attribute의 value는 반드시 나눠질 수 없는 단일한 값이어야 한다.
ex) 하나의 attribute에 두 개의 데이터는 들어갈 수 없음.
2NF : 모든 non-prime attribute는 모든 key에 fully functionally dependent 해야 한다. 즉, 모든 모든 non-prime attribute는 어떤 key에도 partially dependent이면 안 됨.
3NF : 모든 non-prime attribute는 어떤 key에도 transitively dependent 하면 안 된다. 즉, non-prime attribute와 non-prime attribute 사이에는 FD가 있으면 안 됨.
* transitive FD : X -> Y와 Y -> Z의 functional defendency가 존재할 때, X -> Z가 되는 것. 단, Y와 Z 모두 어떤 키에 대해서 부분집합이 아니어야 함.
BCNF : 모든 유효한 non-trivial FD인 X -> Y가 있을 때 X가 super key여야 한다.
정규화와 반대로 성능 향상을 목적으로 데이터 중복을 허용하여 DB를 구성하는 과정
DB를 설계할 때 과도한 join과 중복 데이터 최소화를 하게 되면 성능 저하를 일으키기 때문에 적정 수준을 잘 선택하여 정규화 해야 한다.
출처 : https://www.youtube.com/watch?v=5QhkZkrqFL4&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=24