데이터베이스/데이터 모델링

정규화를 고려한 모델링

반응형

정규화

정규화는 ERD 내에서 중복을 찾아 제거해 나가는 과정을 말한다.

관계형 데이터베이스 모델의 기본은 동일한 정보는 한곳에서만 관리하는 것이다.


제 1정규화

엔티티에서 하나의 속성이 복수의 값을 갖도록 설계 되었을 때 이를 단일 값을 갖도록 하는 것이다.


 

정규화 전.

사원번호 취미

1001 등산, 낚시

1002 테니스, 등산


 

정규화 후

사원번호 취미

1001 등산

1001 낚시

1002 테니스

1002 등산


다음과 같은 사유도 동일하게 제 1정규화 대상이 된다.

사원번호 취미1 취미2 취미3

1001 등산 낚시

1002 테니스

1003 테니스 운동 독서


해당 테이블 구조는 단일 값을 가지고 있기 때문에 아무 문제가 없어보이지만, 동일한 성격을 가지는 데이터를 다른 속성에 저장하는 것도 문제가 된다.


제 2정규화

제 2정규화는 주 식별자가 아닌 속성 중에서 주 식별자가 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 과정이다.

여기서 말하는 제거는 다른 엔티티를 만들어 속성을 옮기는 것을 말한다.


정규화 전

판매 엔티티

#판매일자

#판매부서

#판매번호

부서명

판매사원번호

사원명

고객번호

고객명

고객주소


판매 엔티티안에 부서번호를 가지고 있을 필요가 없다. 분리를 해야한다.


정규화 후

판매 엔티티

#판매일자

#판매부서

#판매번호

판매사원번호

사원명

고객번호

고객명

고객주소


부서

#부서번호

부서명




제 3정규화

제 3정규화는 주 식별자가 아닌 속성들 중에서 종속 관계에 있는 속성을 찾아 제거하는 단계이다.


정규화 전

판매 엔티티

#판매일자

#판매부서

#판매번호

판매사원번호

사원명

고객번호

고객명

고객주소


위의 엔티티는 사원과 고객 엔티티 속성들이 종속관계를 보인다.

이들을 별도의 엔티티로 구분하여 지정할 수 있다.


정규화 후

판매 엔티티

#판매일자

#판매부서

#판매번호

판매사원번호(FK)

고객번호(FK)


사원

사원번호(PK)

사원명


고객명

고객번호(PK)

고객명

고객주소






정규화를 고려하여 데이터 설계시 주의사항


제 1정규화

제 1정규화 작업을 거치지 않게 설계를 하기 위해서는 반복 속성이 존재하지 않도록 모델링 해야한다.


이를 위해서는 설계를 해야하는 데이터에서 정보를 포함하는 머리부분과 속성을 나타내는 서술 부분을 나눠서 생각해야 한다.


머리부분이 서술부분의 부모 엔티티가 된다.(1:N 관계)


제 2, 3정규화

제 2, 3정규화의 공통점은 종속관계에 있는 속성들을 제거하는 과정이다.

코드-코드값의 관계에 있는 속성들은 별도의 엔티티로 구성한다.

-> 종속관계에 있는 데이터들을 하나의 엔티티에 모두 그리지 않도록 주의한다.

반응형