Normalization
Normalization, 즉 정규화란 관계형 데이터베이스에서 데이터의 중복을 최소화하고 데이터의 무결성과 일관성을 유지하기 위한 데이터 설계 프로세스이다.
즉 중복되는 데이터의 양을 줄여 데이터 저장공간을 절약하기 위한 메커니즘이라고 생각하면 된다.
이러한 Normalizaiton은 여러가지 단계를 가지는데, 일반적으로 1, 2, 3 정규화가 존재한다.
제 1정규화
테이블에서 칼럼에 atomic value(하나의 값)만이 존재하도록 테이블을 분리하는 것을 말한다.
1. 특정 레코드에 속한 모든 도메인이 atomic value 만으로 되어 있어야 하며
2. 모든 속성에 반복되는 그룹이 나타나지 않아야 하며
3. 기본키를 사용해서 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다.
위와 같은 테이블을 살펴보면 Telephone Number Column에 여러 개의 데이터가 들어가 있는 레코드가 존재하는 것을 알 수 있다. 이는 제 1정규화에 어긋나는 것으로, 아래와 같이 제 1정규화를 진행할 수 있다.
제 2정규화
제 2정규화란 모든 Column이 완전 함수적 종속을 만족하는 것을 의미한다.
이는 테이블의 Primary key가 복합키, 즉 여러개의 키로 묶여있는 경우 하나의 키 만으로 다른 Column을 결정지을 수 있으면 안된다는 것을 의미한다.
위 테이블을 살펴보면, 기본키는 Manufacturer-Model 두 개의 키로 이루어진 복합키임을 알 수 있다.
그런데 Manufacturer Country의 경우 Manufacturer 만으로도 1대1 매칭이 이루어짐을 확인할 수 있는데(부분 함수 종속),
이러면 제 2정규화에 어긋나게 된다.
이를 아래와 같이 테이블을 분리하면(정규화를 진행) 제 2정규화를 충족시킬 수 있다.
제 3정규화
제 2정규화까지 완료된 테이블에서 이행적 종속을 제거하기 위해 테이블을 분리하는 것을 제 3정규화라고 한다.
이행적 종속이란 A->B이고 B->C이면 A->C가 성립되는 것을 말한다.
이를 제거하고 제 3정규화를 마쳤을 때, 아래 두 조건이 충족되어야 한다.
1. 제 2 정규화를 만족한다.
2. 기본키가 아닌 모든 Attribute들은 기본키에 의하여 결정된다.
위 테이블을 보면, Winner Column의 경우 기본키인 Torunament와 Year의 조합으로 결정됨을 확인할 수 있다.
하지만 Winner Date of Birth의 경우 Winner의 값에 의해 결정되고 있다.
즉 기본키가 아닌 Attribute에 의해 결정되고 있기 때문에 제 3정규화에서 어긋난다.
이는 아래와 같이 테이블을 분리하여 제 3 정규화를 만족할 수 있다.
'DB' 카테고리의 다른 글
[Database System] Database Storage2 (0) | 2023.10.07 |
---|---|
[Database System] Database Storage (0) | 2023.10.05 |
[Database System] SQL과 NOSQL (0) | 2023.10.02 |
[Database System] Modern SQL (0) | 2023.09.17 |
[Database System] Introduction (0) | 2023.09.08 |