< 목차 >
0. TL;DR
1. 정규화
2. 오브젝트 분석과 정규화 엔티티 타입 분석 차이점
3. 1차 정규화
4. 2차 정규화
0. TL;DR
- 정규화: 다양한 유형의 검사를 통해 데이터 모델을 구조화하고, 개선시켜나가는 절차에 관련한 이론
- 데이터 모델을 견고하고, 잘 만들기 위해서는 정규화 과정이 필요
- 1차 정규화: [속성에 대한 분리] 모든 속성이 반드시 1개의 원자값만 보유하게 하는 것
- 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정규형 위반
위 예시의 문제점을 좀 더 구체적으로 정리하면 다음과 같다.
- 점수 테이블의 기본키는 [강의번호] + [학번]으로 구성되어, 이름으로 점수를 찾을 수 없음
- 새로운 학생 추가 시, 점수에 NULL값 입력을 해야 함
- 입력 이상 발생
- 강의번호 삭제 시, 학생까지 삭제됨
- 삭제 이상 발생
이러한 경우,
아래와 같이 학생 테이블을 만들어서 점수가 학생 테이블을 참조할 수 있도록 구성해야 한다.
'CS (Computer Science)' 카테고리의 다른 글
[개발 공부 111일차] DB 개론 | 데이터 모델링 문제 및 해소 (10) | 2024.10.02 |
---|---|
[개발 공부 110일차] DB 개론 | 3차 정규화, 보이스-코드 정규화, 4차/5차 정규화 (19) | 2024.10.01 |
[개발 공부 108일차] DB 개론 | ERD, 논리적/물리적 데이터 모델링 (6) | 2024.09.29 |
[개발 공부 106일차] DB 개론 | 데이터 모델링 단계, 개념적 데이터 모델링 (7) | 2024.09.28 |
[개발 공부 105일차] DB 개론 | 식별자, 관계 (0) | 2024.09.27 |