정규화(Normalization)란?
정규화는 데이터베이스의 테이블을 적절하게 분해하여 중복을 제거하고, 관련 데이터를 논리적으로 그룹화하는 과정입니다. 이를 통해 데이터의 일관성과 무결성을 유지하면서 데이터베이스의 성능과 유지보수성을 향상시킬 수 있습니다.
정규화는 여러 단계로 나누어지며, 각 단계는 테이블의 구조를 최적화하는 데 도움을 줍니다. 주요한 정규화 수준은 다음과 같습니다.
1차 정규화(1NF)
1차 정규화는 테이블의 컬럼이 원자값(Atomic Value)을 갖도록 하는 것을 의미합니다.
즉, 테이블의 컬럼에는 중복되는 값이 없어야 합니다. 중복되는 데이터는 새로운 테이블로 분리하여 관계를 맺습니다.
2차 정규화(2NF)
2차 정규화는 1차 정규화를 만족하면서, 부분 함수적 종속성(Partial Functional Dependency)을 제거하고 완전 함수 종속(Full Functional Dependency)을 만족하도록 테이블을 분해하는 것을 목표로 합니다.
완전 함수적 종속성이란 기본키의 부분집합이 결정자가 되어선 안된다는 것을 의미합니다.
이러한 종속성을 해결하기 위해 새로운 테이블을 생성하여 관계를 설정합니다.
3차 정규화(3NF)
3차 정규화는 2차 정규화를 만족하면서, 이행적 함수 종속성(Transitive Functional Dependency)을 제거하는 것을 목표로 합니다.
이행적 함수 종속성이란 A → B, B → C인 경우 A → C가 성립하는 경우를 의미합니다.
이를 해결하기 위해 새로운 테이블을 생성하여 관계를 설정합니다.
BCNF 정규화 (Boyce-Codd Normal Form)
BCNF(Boyce-Codd Normal Form)는 3차 정규화를 만족하면서 모든 결정자가 후보키 집합에 속해야 합니다.
모든 결정자가 후보키 집합에 속해야 한다는 뜻은, 후보키 집합에 없는 칼럼이 결정자가 되어서는 안 된다는 뜻이다.
결정자란 테이블의 속성이 다른 속성을 결정하는 경우를 의미합니다.
BCNF를 만족하는 테이블은 모든 함수 종속성을 만족하면서 중복을 최소화할 수 있습니다.
정규화 장단점
정규화는 데이터베이스의 일관성과 효율성을 높이는 장점이 있지만, 몇 가지 단점도 고려해야 합니다.
테이블을 분해하면서 쿼리의 복잡성이 증가할 수 있고, 데이터를 조회할 때 조인 연산이 필요할 수 있습니다.
따라서 정규화를 진행할 때는 성능과 유지보수성을 고려하여 적절한 수준까지 진행하는 것이 중요합니다.
[Reference]
'Data Base > DB 모델링' 카테고리의 다른 글
[DB 모델링] 데이터베이스 설계 5단계 (0) | 2024.01.22 |
---|