이번 포스트에서는 정규화가 무엇인지 알아보겠습니다.
1) 정규화란?
정규화는 데이터 테이블을 올바르게 변경하고 분할하는 것을 의미합니다.
조금 더 자세히 얘기하자면, 데이터베이스 테이블을 여러 테이블로 나누어 분할하고
나눠진 테이블 간의 상관관계를 정의하여 데이터를 더 효율적으로 저장하고 관리하는 방법입니다.
2) 정규화의 처리과정
정규화는 크게 다음의 과정을 거쳐 처리됩니다.
- 1NF(제 1 정규화)
- 2NF(제 2 정규화)
- 3NF(제 3 정규화)
- BCNF(BCNF 정규화)
- 4NF(제 4 정규화)
- 5NF(제 5 정규화)
하지만 일반적으로 제 3정규화까지만 수행하는 것이 보통의 수순입니다.
이제 각각의 정규화가 어떻게 처리되는지 예시를 통해 알아보겠습니다.
처리하고자 하는 예시의 데이터 테이블은 다음과 같습니다.
3) 제 1 정규화
제 1 정규화에서는 각 행이 원자값을 갖도록 만드는 것입니다.
즉, 각 행에는 반드시 하나의 값만 존재하도록 수정해야 합니다.
따라서 예시의 데이터 테이블은 제 1 정규화를 거치면 다음과 같이 수정됩니다.
위와 같이 열을 늘려, 하나의 행에 1개를 초과하는 데이터가 들어갈 수 없도록 수정하였습니다.
4) 제 2 정규화
제 2 정규화에서는 부분 종속성을 제거하기 위해 분해하게 됩니다.
부분 종속성을 제거한다는 것은 테이블의 모든 열이 완전 함수적 종속을 만족하는 것을 의미하는데,
완전 함수적 종속을 만족한다는 것은 한 테이블에서
기본 키(PRIMARY KEY)가 하나의 키가 아닌 여러 키가 섞여 있는 복합 키인 경우에
여러 키 중 하나만으로 다른 열을 결정할 수 없는 상태를 말합니다.
이를 위해 기존의 데이터 테이블에서 기본 키를 설정하고
해당 기본 키를 기점으로 하여 테이블을 분리하도록 하겠습니다.
예시에서의 제 2 정규화는 위와 같이 진행되었습니다.
기본 키를 ID로 설정하였습니다.
5) 제 3 정규화
마지막 단계인 제 3 정규화에서는 이행적 종속을 제거하는 단계입니다.
이행적 종속이란 A -> B, B -> C인 상황에서 A -> C가 되는 것을 의미합니다.
따라서 예시의 데이터 테이블을 다음과 같이 제 3 정규화를 적용하여 수정하겠습니다.
위와 같이 제 3 정규화를 적용하여 테이블 간의 이행적 종속을 제거하였습니다.
'데이터베이스' 카테고리의 다른 글
SQL (10) - DDL (0) | 2025.02.12 |
---|---|
SQL (9) - SUBQUERY (0) | 2025.02.12 |
SQL (8) - 데이터 조작어(DML) (0) | 2025.02.11 |
SQL (7) - GROUP BY (0) | 2025.02.11 |
SQL (6) - 집계 함수 (0) | 2025.02.10 |