데이터 중복을 줄이고 insertion, update, delete anomaly를 최소화하기 위해 일련의 Normal Forms(NF)에 따라 relation DB를 구성하는 과정
Normal Forms(NF)
정규화되기 위해 지켜야할 몇가지 규칙이 있는데, 이 각각의 규칙을 normal form(NF)이라고 부른다.
쉬운코드 - DB 정규화(normalization)
순차적으로 진행된다. 제 1정규형 -> 제 2 정규형 -> 제 3정규형(보통 여기까지 하면 정규화됐다고도 한다.) -> BCNF -> 제 4정규형 -> 제 5정규형
attribute의 value는 반드시 하나의 값(원자값)을 가져야 한다.
만약 어떤 속성 값이 딱봐도 나눠질 수 있는 값이면 나눠야 한다.
키가 아닌 attribute는 후보키 전체에 종속되어야 한다.
제 1정규형에서 나눠진 튜플로 인해 원자적이지 않던 값의 속성을 필두로 중복되는 데이터가 생기게 된다. 그러면 키가 아닌 attribute집합이 부분적으로 함수 종속이 된다.
따라서, 제 2정규형을 통해 위의 중복을 제거해준다.
키가 아닌 attribute들 간에 서로 종속적인 관계가 없어야 한다.
한 릴레이션안에서 X -> Y -> Z 관계가 성립하는 속성의 부분집합이 있다고 하자. X에 의해서 하나의 값이 정해져야 하지만 Y에 의해서 Z값이 정해지는 경우가 있으므로 중복이 생길 수 밖에 없다. 이를 해결하기 위해 제 3정규형을 통해 중복을 제거한다.
모든 결정자는 주 식별자이어야 한다.
정규화된 데이터 모델에서 성능 향상, 개발과 운영의 단순화를 위해 정규화와는 반대로 중복을 허용하고 조인을 줄이는 방식이다.