본문 바로가기
👩🏻‍💻TECH/개념정리

[개념정리] 데이터베이스 정규화

by Alicia03 2024. 11. 22.

 

👀 직접 이미지와 글을 작성했습니다. 사용하실 때는 꼭 링크와 출처를 남겨주세요

데이터베이스 정규화(Database Normalization)란?

관계형 데이터베이스에서 데이터 중복을 줄여 데이터 무결성(integrity)을 확보할 수 있도록 하는 작업이다.

정규화의 종류에는 대표적으로 제1 정규형, 제2 정규형, 제 3 정규형가 있다. 

 

정규화의 종류 

정규화는 제 1 정규형, 제 2 정규형, 제 3 정규형 순으로 진행되며 이전 단계를 충족해야만 다음단계의 정규화로 넘어갈 수 있다. 

제 1 정규형 (1NF) 

제 1 정규형는 테이블을 구성하는 필드가 원자값을 갖도록 하는 것이다.

즉, 더 이상 쪼개질 수 없는 단일 값을 가져야 한다. 

 

e.g. 제 1 정규형을 만족하지 않는 테이블

- 구매물품이 떡볶이와 커피로 나누어질 수 있다.

구매자 구매물품
윤주  떡볶이, 커피
가희 복숭아

 

 

e.g. 제 1 정규형을 만족하는 테이블 

구매자 구매물품
윤주  떡볶이
윤주 커피
가희 복숭아

 

제 2 정규형 (2NF) 

 

제 2 정규형은 제 1 정규형을 만족하면서 모든 속성이 기본 키에 대해 완전 함수 종속성을 갖도록 하는 것이다.

완전 함수 종속이란 X의 값 각각에 대해 Y의 값이 오직 하나로 결정되는 관계를 말한다. 즉, 기본키가 무엇인지에 따라 속성의 값이 하나로 정해져야 한다는 것이다. 

 

e.g. 제 2 정규형을 만족하지 않는 테이블

- 기본키인 고객 ID에 나머지 속성들이 완전 종속 관계가 아니다. 같은 1번이라도 다른 값이 있을 수 있다.  

고객ID 상호명 주문 메뉴
1 미O네 떡볶이 미O네 세트메뉴 A
1 신O 떡볶이 달O 떡볶이
2 조O 떡볶이 순대 

 

e.g. 제 2 정규형을 만족하는 테이블

고객ID 고객명
1 윤주
2 가희
주문번호 상호명 주문 메뉴
a1 미O네 떡볶이 미O네 세트메뉴 A
a2 신O 떡볶이 달O 떡볶이
a3 조O 떡볶이 순대 

 

제 3정규형 (3NF) 

제 3 정규형을 만족하기 위해서는 제 2 정규형을 만족하면서 기본키에 간접적으로 의존하는 이행 종속성을 제거해야 한다.

이행 종속성이란 기본 키가 아닌 속성에 다른 속성이 의존하면서 기본키에 간접적으로 의존하는 속성을 말한다.

 

e.g. 제 3 정규형을 만족하지 않는 테이블

- 회원명이 회원ID를 통해 간접적으로 기본키에 의존하고 있음.

대여ID 회원ID 회원명 자전거 종류
b1 1 하나 빨간 자전거
b2 2 경희 파란 자전거
b3 3 가은 초록 자전거

 

e.g. 제 3 정규형을 만족하는 테이블

회원ID 회원명
1 하나
2 경희
3 가은
대여ID 회원ID 자전거 종류
b1 1 빨간 자전거
b2 2 파란 자전거
b3 3 초록 자전거

 

정규화의 장단점 

정규화를 통해 취할 수 있는 장점은 다음과 같다.

  • 데이터 중복 최소화를 통한 경제적이고 효율적인 데이터베이스 운영
  • 데이터 무결성 유지
  • 데이터베이스 확장성 증가

반면 이러한 장점에도 불구하고 다음과 같은 단점도 가지고 있다. 

  • 테이블 수의 증가로 인한 데이터베이스의 복잡성 증가
  • 데이터 조회시 여러번의 JOIN으로 인한 성능 저하 

따라서 성능저하와 같은 문제를 막기 위해서는 반정규화(Denormalization)을 사용하기도 한다. 이는 정규화 단계를 되돌려 데이터 중복을 허용하여 성능을 향상시키는 설계 기법이다. 필요한 테이블을 결합해두어 데이터를 조회할 때 더 신속한 조회를 가능하게 해준다.