정규화(Normalization) 총정리

정규화(Normalization)

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

정규화 필요한 이유

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

DWM이 끊어서 세션이 로그오프 되었습니다 해결법 👆

정규화의 단계

정규화는 여러 단계로 이루어지며, 각 단계는 ‘정규형’(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 포도
ER 다이어그램(Entity-Relationship Diagram) 👆

정규화의 장점과 단점

장점

  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...