Modeling

[데이터 모델링] 정규화란?

DBA_JSH 2016. 3. 24. 18:44

1.정규화란 무엇인가?

우리가 정규화를 하는 궁극적인 목적은 데이터의 중복을 제거하고 속성들이 본래의 제자리에 위치시키자는 것.

 

2. 제1 정규형 

 - 모든 속성은 반드시 하나의 값을 가져야 한다.


유사한 형태 반복 속성이 있어서는 안된다. 제1 정규형에 위배되면 해당 속성은 하위 엔티티로 분리해야 하며, 이 엔티티는 현재의 엔터티에서 분리된 것이 분명하기 때문에 식별자를 상속받아 자신의 식별자가 된다. 단, 추후 새롭게 인조 식별자(Surrogate Key)를 만들겠다면 부모의 식별자가 자신의 식별자에서 빠질 수는 있지만 그렇다고 해서 부자 간의 관계가 없어지는 것은 결코 아니다.

 

 

3. 제2 정규형 

  - 모든 속성은 반드시 식별자 전체에 종속적이어야 한다.


엔티티의 식별자가 자신의 속성만 갖고 위배되는 속성은 허용하지 않는다. 만약 식별자가 두 개 이상의 독립적인 의미의 속성으로 구성되어 있다면 반드시 모든 식별자 속성이 전부 모여야 만들어 질 수 있는 속성만 올 수 있는 것이며 어느 하나가 없더라도 생성 가능하다면 이미 전체 식별자에 종속이 아니므로 제2 정규형을 어기게 되는 것이다. 

 

 

4. 제3 정규형 

  - 식별자가 아닌 일반 속성들 간에는 서로 종속될 수 없다.


제2 정규형은 식별자와 일반 속성들 간의 종속관계를 규정한 것이고, 제3 정규형은 일반속성들 간의 종속 관계를 규정한 것이다. 제2 정규형을 실시하면 일반 속성들은 식별자와 종속 된 속성만 남게 되며, 그 속성들 간의 종속이 존재하면 안된다.