본문 바로가기
Computer Science/데이터베이스

정규화(Normalization)

by Libi 2021. 7. 9.
반응형

이번에 배워볼 내용은 정규화(Normalization)이다.

정규화란 관계형 데이터 베이스의 논리적 설계에서 데이터의 중복이 최소화가 될 수 있도록 데이터를 구조화하며, 각 릴레이션에서 이상 현상이 발생하지 않도록 하는 데이터 모델링 기법이다.

이상 현상이란 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 상황이 발생하는 것을 뜻한다. 이상 현상은 삽입, 삭제, 갱신 이상이 있다.

다음과 같은 Id, Subject 속성을 기본키로 가지는 학생 릴레이션이 존재할 때 각 현상들의 문제점을 알아보자.

 

1. 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 원하지 않은 값들도 함께 삽입되는 현상

만약 아무 과목도 수강하지 않는 A라는 학생을 릴레이션에 삽입하게 되면 어떻게 될까? 개체 무결성에 의해 기본 키들은 NULL 값이 될 수 없다. 따라서 A라는 학생을 릴레이션에 삽입할 수 없게 된다. 삽입하기 위해서는 과목에 '미수강'이라는 새로운 데이터를 생성해야 한다.

2. 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제할 때 상관없는 값들도 함께 삭제되는 현상

만약 Alice가 Computer 과목을 취소할 경우 과목 속성은 기본키이기 때문에 NULL 값이 될 수 없으므로 Alice의 행(전체 속성)을 삭제해야 한다.

3. 갱신 이상(Update Anomlay) : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

만약 Kan의 과목을 Math에서 Science로 변경한다면 id가 104인 Kan의 과목도 변경돼버리는 잘못된 갱신이 발생한다.

이러한 문제점들을 해결하기 위해 정규화 과정을 통해서 데이터의 중복성을 최소화하고 일관성 등을 보장하여 데이터베이스의 품질을 보장하고 성능의 향상을 높인다.

다만, 정규화 수준이 높아질수록 유연한 데이터 구축이 가능하고 데이터의 정확성이 높아지는 반면 물리적 접근이 복잡하고 너무 많은 조인으로 인해 조회 성능이 저하되는 단점이 있다.

정규화는 총 6단계로 나뉜다. 하나씩 알아보자.

1. 1NF(제1정규형)

릴레이션에 속한 모든 도메인(Domain)이 원자 값(Atomic Value)만으로 구성되어 있는 정규형이다.

즉, 모든 속성은 하나의 값만 가지도록 하는 것이다.

2. 2NF(제2 정규형)

기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.

어떤 속성이 정해졌을 때 다른 속성들이 자연스럽게 정해지는 경우 이 속성들의 관계를 함수적 종속 관계라고 한다.

예를 들어 '학번'이라는 속성이 정해진다면 '이름' 속성은 학번에 매칭 되기 때문에 자연스럽게 이름이 정해질 것이다. 따라서 '이름'을 '학번'에 함수 종속적이라고 하며 '학번 -> 이름'과 같이 표현한다.

즉, 기본키가 아닌 속성과 함수적 종속 관계인 속성이 없는 릴레이션을 뜻한다.

3. 3NF(제3 정규형)

기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형이다.

이행적 종속이란 'A -> B'이고 'B -> C'일 때, 'A -> C'를 만족하는 관계를 의미한다.

만약 '학번' 속성에 의해 '이름' 속성이 결정되고, '이름' 속성에 의해 'First Name' 속성이 결정된다면 결국 '학번' 속성을 알면 '이름', 'First Name' 속성이 결정된다.

즉, 기본키가 아닌 속성들에서 이를 제거하는 단계를 뜻한다.

4. BCNF(Boycd-Codd 정규형)

강한 제3 정규형이라고 불리며 결정자가 모두 후보키(Candidate Key)인 정규형을 뜻한다.

결정자란 종속성을 규정할 때 기준이 되는 값을 뜻한다.

위에서 '학번'에 의해 '이름'이 결정되었기 때문에 '학번'은 결정자이고 '이름'은 종속자라 한다. 다만, 모든 BCNF가 종속성을 보존하는 것은 아니며 제약 조건이 존재한다.

  • 키가 아닌 모든 속성은 각 키에 대하여 완전 종속해야 한다.
  • 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 한다.
  • 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.

 

보통 BCNF 정규화까지만 실시하기 때문에 4NF와 5NF는 정의만 알고 넘어가도록 하자.

5. 4NF(제4 정규형)

다치 종속 'A ->> B'가 성립하는 경우 릴레이션의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.

6. 5NF(제5 정규형)

모든 조인 종속이 릴레이션의 후보키를 통해서만 성립되는 정규형이다.

반응형

'Computer Science > 데이터베이스' 카테고리의 다른 글

인덱스(Index)  (0) 2021.07.10
DML - JOIN  (0) 2021.07.10
키(Key)의 종류  (0) 2021.07.09
SQL의 분류와 사용법  (0) 2021.07.09
트랜잭션(Transaction)  (0) 2021.07.09

댓글