정규화란 무엇인가요?
함수 종속성을 이용하여 릴레이션을 연관성이있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어 나가는 과정을 정규화(Normalization)이라고 합니다.
정규화의 기본 목표
- 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것
기본정규형
제1정규형 1NF
릴레이션에 속한 모든 속성의 도메인이 원자값으로만 구성되어 있으면 제 1 정규형에 속한다.
- 제1정규형에 속하려면 릴레이션에 속한 모든 속성이 더는 분해되지 않는 원자 값만 가져야 한다.
- 최소 제1정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있다.
- 제1정규형에 속하지만, 불필요한 데이터 중복으로 인해 이상 현상이 발생하는 릴레이션이 있을 수 있다.
- 이상현상
- 삽입 이상
- 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상
- 중복된 투플 중 일부 투플만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상
- 투플 삭제 시 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
- 삽입 이상
제2정규형 2NF
릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형에 속한다.
- 제1정규형에 속하는 릴레이션이 제2정규형을 만족하게 하려면, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다.
- 정규화 과정에서 릴레이션을 분해할 때 주의할 점은, 분해된 릴레이션들을 자연 조인하여 분해 전의 릴레이션으로 다시 복원할 수 있어야 한다는 것이다.
- 릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고, 릴레이션을 분해했을 때 정보 손실이 발생하지 않아야 한다.
제3정규형 3NF
릴레이션이 제2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3정규형에 속한다.
- 이행적 함수 종속을 잠깐 살펴보자
- 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X -> Y와 Y -> Z가 존재하면 논리적으로 X->Z가 성립한다. 이때 속성 집합 Z가 속성 집합 X에 이행적으로 함수 종속 되었다고 한다.
보이스/코드 정규형BCNF
릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.
실제 릴레이션에 여러개의 후보키가 존재할 수 있는데, 이 경우에는 제3정규형까지 모두 만족하더라도 이상 현상이 발생할 수 있습니다. 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 더 엄격한 제약 조건을 제시한 것이 보이스/코드 정규형이다.
고급 정규형
제4정규형
보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거해야 만족할 수 있습니다.
제5정규형
제4정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거해야 만족할 수 있습니다.
'CS > 데이터베이스' 카테고리의 다른 글
(1) 데이터베이스에 관해서 (0) | 2022.05.06 |
---|---|
트랜잭션(Transaction)의 격리수준(Isolation)에 대해서 알아봅시다 (0) | 2022.01.19 |
트랜잭션(Transaction)이란?? (0) | 2022.01.18 |
인덱스(index)? (0) | 2022.01.17 |
이상(Anomaly) (0) | 2022.01.15 |