CS (Computer Science)

[개발 공부 109일차] DB 개론 | 데이터 모델링 1차 정규화, 2차 정규화

MOLLY_ 2024. 9. 30. 07:00
728x90

< 목차 >

0. TL;DR

1. 정규화

2. 오브젝트 분석과 정규화 엔티티 타입 분석 차이점

3. 1차 정규화

4. 2차 정규화

 

 

0. TL;DR

  1. 정규화: 다양한 유형의 검사를 통해 데이터 모델을 구조화하고, 개선시켜나가는 절차에 관련한 이론
  2. 데이터 모델을 견고하고, 잘 만들기 위해서는 정규화 과정이 필요
    1. 1차 정규화: [속성에 대한 분리] 모든 속성이 반드시 1개의 원자값만 보유하게 하는 것
    2. 2차 정규화: [종속에 대한 분리] 주 식별자에 종속적이지 않고, 주 식별자를 구성하는 일부 속성에 종속적인 속성을 분리하는 것

 

 

1. 정규화

: 다양한 유형의 검사를 통해 데이터 모델을 구조화하고, 개선시켜나가는 절차에 관련한 이론

 

  • 정규화의 기본 원칙: 하나의 테이블에 ‘중복된 데이터가 없도록’ 하는 것
  • 데이터를 수학적인 방법에 의해 구조화시켜 체계적으로 관리

 

 

정규화 특징

  • 적절한 엔티티 타입에 각각의 속성을 배치하고 엔티티 타입을 충분히 도출해가는 단계적인 분석법
  • 엔티티 타입에 속성들이 상호 종속적인 관계를 갖는 걸 배경으로 종속관계를 이용해, 엔티티 타입을 정제하는 방법
  • 각각의 속성들이 데이터 모델에 포함될 수 있는 정규화의 원리를 이용하여 데이터를 분석하는 방법에서 활용
  • 현재 데이터를 검증할 수 있고, 데이터의 표현 관점에서 엔티티 타입을 정의하는 데 이용
  • 엔티티 타입을 오브젝트별로 분석하는 방법이 아닌 개별 데이터를 이용한 수학적인 접근법을 통해 분석

 

 

정규화 종류

정규화 종류 정규화 내용
1차 정규화 복수의 속성값을 갖는 속성을 분리
2차 정규화 - 주 식별자에 종속적이지 않은 속성의 분리
- 부분 종속(Partial Dependency) 속성의 분리
3차 정규화 - 속성에 종속적인 속성의 분리
-
이전 종속(Transitive Dependency) 속성의 분리

 

일반적으로 3차 정규화까지 많이 쓰이며, 3차 정규화까지 하면 모델링이 어느 정도 완성된다.

 

 

3차 이후로는 특별한 경우에 사용한다.

정규화 종류 정규화 내용
보이스-코드 정규화 다수의 주 식별자 분리
4차 정규화 다가 종속(Multi-Valued Dependency) 속성 분리
5차 정규화 결합 종속(Join Dependency)일 경우, 2개 이상의 N개로 분리

 

 

2. 오브젝트 분석과 정규화 엔티티 타입 분석 차이점

  • 오브젝트 분석: 실제 세계에서 발생하는 현상을 오브젝트 유형별로 정리 후, 오브젝트 간 종속관계를 활용해 엔티티 타입 도출 및 정제
  • 정규화 엔티티 타입 도출: 실제 세계에서 발생하는 데이터들을 정리해 중복된 속성을 제거하고, 종속관계를 활용해 주 식별자에 의한 속성 배치 및 속성 간 종속적인 관계를 분리

 

 

함수의 종속성

: 데이터들이 어떤 기준값에 의해 종속되는 현상

 

 

  • 기준값을 결정자(Determinant), 종속되는 값을 종속자(Dependent)라고 부름
  • 오브젝트 분석 및 정규화에 의한 엔티티 타입 분석은 모두 어느 식별자에 의한 종속인지 알아야 하는 전제가 필요

 

데이터 모델을 견고하고, 잘 만들기 위해서는 정규화 과정이 필요하다.

‘견고하고 잘 만든다는 것’은 예기치 못한 이상 발생을 최소화하고, 예측 가능하게 작동하게 만든다고 이해해도 무방하다.

 

 

3. 1차 정규화

: [속성에 대한 분리] 모든 속성이 반드시 1개의 원자값만 보유하게 하는 것

 

  • 복수의 속성값을 가진 속성을 분리
  • 테이블 하나의 컬럼에는 여러 개의 데이터값이 중복되어 나타나지 않음
  • 각 속성값이 반복 집단이 없는 원자값(Atomic Value)로만 구성됨
  • 모든 엔티티 타입에는 1개의 속성만 존재, 반복되는 속성 집단은 별도 엔티티 타입으로 분리

 

 

[예시] 학생 정보 - 여러 취미 반복

⇒ 학생 정보에서 하나의 학번에 여러 개의 취미가 반복적으로 발생돼, 동일한 속성 표현, 1차 정규화 위반

 

⇒ 취미에 다중값(음악, 독서, 운동)을 갖고 있으므로 1정규형 위반

 

이러한 경우,

아래와 같이 취미 속성을 새로운 테이블로 분리하여 학생과 취미 테이블 간에 1:N 관계를 생성해야 한다.

 

 

4. 2차 정규화

: [종속에 대한 분리] 주 식별자에 종속적이지 않고, 주 식별자를 구성하는 일부 속성에 종속적인 속성을 분리하는 것

 

  • 1차 정규화 진행 후, 속성 중에 주 식별자에 종속적이지 않고 주 식별자를 구성하는 속성의 일부에 종속된 부분 종속 속성(Partial Dependency Attribute) 분리
  • 각 속성들은 자신이 속한 테이블의 주 식별자에 의해 완전 함수적 종속관계가 이뤄짐
  • 반드시 자신의 테이블의 주 식별자를 구성하는 속성이 복합 식별자일 경우에만 해당함
    • 단일 식별자일 경우, 2차 정규화 대상이 아님
  • 속성 간 종속관계는 3차 정규화에 해당함

 

 

[예시] 학생 정보 - 여러 취미 반복

⇒ 점수 속성은 기본키(강의번호 + 학번)에 종속적이지만, 이름은 종속적이지 않음(학번만으로 이름 검색 가능)으로 2정규형 위반

 

위 예시의 문제점을 좀 더 구체적으로 정리하면 다음과 같다.

  1. 점수 테이블의 기본키는 [강의번호] + [학번]으로 구성되어, 이름으로 점수를 찾을 수 없음
  2. 새로운 학생 추가 시, 점수에 NULL값 입력을 해야 함
    • 입력 이상 발생
  3. 강의번호 삭제 시, 학생까지 삭제됨
    • 삭제 이상 발생

 

이러한 경우,

아래와 같이 학생 테이블을 만들어서 점수가 학생 테이블을 참조할 수 있도록 구성해야 한다.

 

 

728x90