데이터베이스의 정규화 과정과 정규화 원칙에 대해 설명하는 글입니다.
정규화
데이터베이스 정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터 일관성을 유지하기 위해 사용되는 프로세스입니다. 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정을 말합니다.
정규형 원칙
정규형의 원칙이란 다음과 같은 원칙을 의미합니다.
- 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 함
- 자료의 중복성은 감소해야 함
- 독립적인 관계는 별개의 릴레이션으로 표현해야 함
- 각각의 릴레이션은 독립적인 표현이 가능해야 함
일반적으로 1NF(First Normal Form)부터 5NF(Fifth Normal Form)까지 다섯 가지 정규 형태가 있습니다. 여기서 간단히 다섯 가지 정규 형태를 설명하겠습니다:
- 1NF(First Normal Form): 테이블의 각 열이 원자값(Atomic value)만을 포함하도록 만드는 것입니다. 다시 말해, 각 셀에는 여러 값을 포함하지 않아야 합니다.
- 2NF(Second Normal Form): 테이블이 1NF이고, 모든 비주요 속성이 기본 키에 대해 완전 함수 종속이어야 합니다. 이는 모든 열이 기본 키에만 종속되어야 함을 의미합니다.
- 3NF(Third Normal Form): 테이블이 2NF이고, 모든 이행적 종속이 제거되어야 합니다. 이는 비주요 속성이 다른 비주요 속성에 의해 종속되지 않아야 함을 의미합니다.
- BCNF(Boyce-Codd Normal Form): 모든 결정자가 후보 키(기본 키)에 속하는 테이블입니다. 즉, 모든 결정자가 기본 키에 완전 함수 종속되어야 합니다.
- 4NF(Fourth Normal Form)와 5NF(Fifth Normal Form): 이러한 정규 형태는 조금 더 복잡하며, 주로 다중 값 종속과 조인 종속을 다루는 데 사용됩니다. 데이터베이스가 3NF 이상이라면 일반적으로 충분하며, 4NF나 5NF로 정규화할 필요는 드뭅니다.
제1정규형
릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 하는 것을 말합니다. 릴레이션의 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안됩니다. 만약 반복 집합이 있다면 제거해야 합니다.
제2정규형
릴레이션이 제1정규형이며 부분 함수의 종속성을 제거한 형태를 말합니다.
부분 함수의 종속성 제거란 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말합니다.
이때 주의할 점은 릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 하고, 정보 손실이 발생하지 않는 무손실 분해로 분해되어야 한다는 것입니다.
제3정규형
제2정규형이면서 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태를 말합니다.
이행적 함수 종속
이행적 함수 종속이란 A -> B, B -> C가 존재하면 논리적으로 A -> C가 성립하는데, 이 때 집합 C가 집합 A에 이행적으로 함수 종속이 되어있다고 합니다.
보이스 / 코드 정규형
보이스/코드 정규형(BCNF)은 제3정규형이고, 결정자가 후보키가 아닌 함수 종속 관게를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말합니다.
- 결정자: 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소, X -> Y일 때 X는 결정자, Y는 종속자입니다.
- 후보키: 후보 키(Candidate Key)는 관계형 데이터베이스에서 각 행을 고유하게 식별할 수 있는 속성
'CS' 카테고리의 다른 글
[CS] 비선형 자료구조 그래프, 트리, 힙, 맵, 셋, 해시 테이블에 대해 알아보자 (0) | 2024.05.07 |
---|---|
[CS] 선형 자료구조에 대해 알아보자 (연결 리스트 / 배열 / 백터 / 스택 / 큐) (0) | 2024.05.04 |
[CS] 토큰 기반 인증과 JWT (0) | 2024.04.12 |
[DB] 트랜잭션과 ACID, 데이터의 무결성 (0) | 2024.03.31 |
[CS] OSI 7계층이란 (0) | 2024.03.31 |