eunzae's develog

[데이터모델링] 정규화 본문

Database/Data Architecture

[데이터모델링] 정규화

eunzae 2023. 3. 16. 17:59

정규화의 의의

정규화란 속성들의 종속성을 분석해서 하나의 종속성이 하나의 표로 관리되도록 분해해가는 과정

 

함수종속: 하나의 집합 안에 존재하는 속성 사이의 연관 관계

  - 집합 내 속성A가 속성B의 값을 유일하게 식별하는 결정자라면, 속성B는 속성A에 함수적으로 종속됨

 

개별 종속성은 모두 별도로 분리하여 관리해야 데이터를 안정적인 구조로 관리할 수 있음

 

 

 

정규화된 모델의 특징

1.데이터 집합의 범주화
2.데이터 본질에 충실한 엔터티
3.데이터 중복이 최소화된 효율적이고 구조화된 모델
4.주 식별자가 정확하게 도출
5.업무 변경에 따른 확장성
6.데이터 중복을 최소화함으로써 데이터 무결성 극대화
7.성능 향상
  - 오라클의 경우 블록I/O를 일으키므로 반정규화를 통해 하나의 인스턴스 길이가 길어질 경우, 한 불록에 저장되는 레코드 수가 줄어들게 되어 적중율(Hit Ratio)가 떨어져 성능에 좋지 않음 

 

 
 

제 1 정규형: 모든 속성이 반드시 하나의 값을 가져야 한다.

제 1 정규형 위배 사례

제 1 정규화: 다수의 값, 반복 속성을 갖는 속성은 별도 엔터티로 분리한다.

다수의 값: 어떤 속성이 값을 여러 개 갖는 경우
  ex) 연락처: honggd@abcde.com, 010-1234-5678

반복 속성: 어떤 속성이 물리적으로는 하나의 값만 갖지만 유사한 형태의 반복 속성이 존재해서 논리적으로는 다수의 값을 갖는 것과 마찬가지인 경우
  ex) 자격증: 정보처리기사, SQLd, DAsP

 

  ① 사원 엔터티에 제 1 정규화 적용

  ② 자격증 정보를 독립 개체로 관리

 

 

제 2 정규형: 모든 속성이 반드시 주 식별자 전부에 종속되어야 한다.

제 2 정규형 위배 사례

제 2 정규화: 주 식별자 일부에만 종속된 속성은 별도의 엔터티로 분리한다.

 주 식별자는 집합 내 속성의 결정자로서 집합의 성격을 규정하는 등 다양한 역할을 수행

 1 정규화로 생성된 집합은 자식(Child)이 되지만, 2 정규화로 분리된 집합은 부모(Parent)가 된다.

 

주 식별자 중 <단체번호>에만 종속된 속성을 별도의 <단체> 엔터티로 분리

 

 

 

 

3 정규형: 주 식별자가 아닌 모든 속성이 상호 종속 관계가 아니여야 한다.

제 3 정규형 위배 사례

제 3 정규화: 속성 간 종속성이 있으면 별도 엔터티로 분리한다.

 3 정규형에서는 주 식별자가 아닌 모든 속성이 상호 종속관계여서는 안 된다.
 속성들 간 종속성이 존재한다면 별도 엔터티로 분리하여야 한다.

 

고객 집합을 별도로 분리하여 <고객> 엔터티를 만드는 과정 필요

 

 

 

참고: 프로젝트 성패를 결정짓는 데이터 모델링 이야기