정규화(Normalization) 총정리

정규화(Normalization)

정규화(Normalization), 데이터를 구조화하여 데이터 중복을 최소화하고, 데이터 무결성을 유지하는 과정입니다. 이를 통해 데이터 저장공간을 효율적으로 사용하고, 업데이트, 삭제, 삽입 시 발생할 수 있는 여러 문제를 방지할 수 있습니다.

정규화 필요한 이유

정규화를 하지 않으면 데이터베이스에 중복 데이터가 발생할 수 있습니다. 이는 불필요한 저장공간 사용뿐만 아니라 데이터 불일치 문제를 야기할 수 있습니다. 예를 들어, 고객 정보가 여러 테이블에 중복 저장된다면 한 곳에서만 정보를 수정해도 다른 곳에는 여전히 오래된 정보가 남아 있을 수 있습니다.

정규화의 단계

정규화는 여러 단계로 이루어지며, 각 단계는 ‘정규형’(1NF, 2NF, 3NF 등)으로 불립니다. 각각의 정규형은 특정 문제를 해결하기 위해 데이터 구조를 개선하는 방법을 제안합니다.

1차 정규형(1NF): 중복 제거와 원자성

조건

  • 모든 테이블의 컬럼이 원자값(Atomic Value)을 가져야 합니다.

  • 컬럼 안에 여러 값이 들어 있으면 안 됩니다.

예시

주문번호 고객명 주문상품
1 김철수 사과, 바나나
2 이영희 포도

위 테이블에서 ‘주문상품’ 컬럼은 여러 값을 포함하고 있어 1NF를 만족하지 못합니다. 이를 다음과 같이 분리해야 합니다:

주문번호 고객명 주문상품
1 김철수 사과
1 김철수 바나나
2 이영희 포도

2차 정규형(2NF): 부분 종속성 제거

조건

  • 1NF를 만족해야 합니다.

  • 기본 키에 대해 ‘부분 종속성(Partial Dependency)’이 없어야 합니다.

    • 기본 키의 일부만으로 결정되는 컬럼이 존재하면 안 됩니다.

예시

주문번호 고객ID 고객명 주문상품
1 101 김철수 사과
1 101 김철수 바나나
2 102 이영희 포도

위 테이블에서는 기본 키가 ‘(주문번호, 주문상품)’로 구성됩니다. 하지만 ‘고객명’은 ‘주문번호’에만 종속됩니다. 따라서 ‘고객정보’를 별도의 테이블로 분리해야 합니다:

고객 테이블

고객ID 고객명
101 김철수
102 이영희

주문 테이블

주문번호 고객ID 주문상품
1 101 사과
1 101 바나나
2 102 포도

3차 정규형(3NF): 이행 종속성 제거

조건

  • 2NF를 만족해야 합니다.

  • 기본 키가 아닌 컬럼이 다른 기본 키가 아닌 컬럼에 종속되지 않아야 합니다.

예시

주문번호 고객ID 고객명 고객주소
1 101 김철수 서울
2 102 이영희 부산

여기서 ‘고객주소’는 ‘고객ID’를 통해 결정되므로, ‘주문번호’와는 직접적인 관계가 없습니다. 따라서 고객정보와 주문정보를 다음과 같이 분리해야 합니다:

고객 테이블

고객ID 고객명 고객주소
101 김철수 서울
102 이영희 부산

주문 테이블

주문번호 고객ID 주문상품
1 101 사과
1 101 바나나
2 102 포도

정규화의 장점과 단점

장점

  1. 데이터 중복 감소로 저장공간 절약.

  2. 데이터 무결성 유지.

  3. 데이터 수정, 삭제 시 비일관성 문제 예방.

단점

  1. 정규화된 테이블이 많아져 복잡성이 증가.

  2. 조인 연산이 많아져 성능 저하 가능.

결론

정규화는 데이터베이스 설계의 기본이자 핵심 과정입니다. 하지만 무조건 높은 정규형을 적용하기보다, 시스템 성능과 유지보수성을 고려해 적절한 수준에서 균형을 맞추는 것이 중요합니다. 정규화의 본질은 데이터 품질을 높이는 데 있음을 항상 기억해야 합니다.

ER 다이어그램(Entity-Relationship Diagram)

0 0 votes
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] 정규화(Normalization) 총정리 […]

trackback

[…] 정규화(Normalization) 총정리 […]

Loading...