백엔드·2025. 04. 10·7 min read

데이터베이스 정규화(Normalization)

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

관계형 데이터베이스에서 데이터베이스의 중복을 줄이고, 데이터의 무결성을 유지하기 위해 데이터를 정규형에 맞게 구조화 하는 프로세스를 의미한다.
또한 정규화는 이상현상(Anomaly)이 있는 릴레이션을 분해하여 이상현상을 없앤다.
이를 통해 데이터베이스를 직관적이고 체계적으로 관리할 수 있으며, 데이터베이스 저장 공간을 효율적으로 관리할 수 있다.

제 1 정규화 (1NF)

테이블의 컬럼이 원자값(하나의 값) 을 갖도록 분해하는 정규화이다.

이름직업
김철수의사
박영희프로그래머,작가
이훈이축구선수
한유리교사,유튜버

여기서 박영희한유리의 직업 속성에는 두 개의 값을 가지고 있기 때문에 제 1 정규형을 만족하지 못한다.

이름직업
김철수의사
박영희프로그래머
박영희작가
이훈이축구선수
한유리교사
한유리유튜버

제 1 정규화를 통해 컬럼이 하나의 값, 즉 원자값을 갖도록 테이블을 분해한다.

제 2 정규화 (2NF)

제 1 정규화를 진행한 테이블이 완전 함수 종속을 만족하도록 부분 함수 종속을 제거하는 것을 의미한다.

완전 함수 종속이란, 종속자가 기본키에만 종속되며 기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우이다.

부분 함수 종속은 완전 함수 종속과는 반대로, 종속자가 기본키가 아닌 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 경우 기본키의 전체가 아닌 부분집합에만 종속된 경우이다.

제조사모델모델 전체 이름제조 국가
현대그랜저그랜저 IG대한민국
기아소렌토소렌토 하이브리드대한민국
테슬라모델 S모델 S미국
벤츠GLCGLC 220 d독일

위 예시에서 기본키는 제조사와 모델이고, 모델 전체 이름은 기본키인 제조사모델에 종속되어 있다.
하지만, 제조 국가제조사에만 종속되어 있기 때문에 완전 함수 종속을 만족하지 못한다.

위 테이블을 다음과 같이 분해하여 제 2 정규형을 만족시킬 수 있다.

자동차 모델 테이블

제조사모델모델 전체 이름
현대그랜저그랜저 IG
기아소렌토소렌토 하이브리드
테슬라모델 S모델 S
벤츠GLCGLC 220 d

자동차 제조 국가 테이블

제조사제조 국가
현대대한민국
기아대한민국
테슬라미국
벤츠독일

제 3 정규화 (3NF)

제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애는 정규화이다.
이행적 종속이란, X -> Y 과 Y -> Z 이 성립하면, X -> Z도 성립하는 것을 의미한다.

학번이름학과코드학과명
1001홍길동CS컴퓨터공학과
1002김철수EE전자공학과

위 테이블에서 학과 코드는 학번에 종속되어 있고, 학과명은 학과코드에 종속되어 있다. (학번 -> 학과코드 -> 학과명)
따라서 이 테이블에는 이행적 종속이 존재하고, 이 테이블을 다음과 같이 분해하여 제 3 정규형을 만족시킬 수 있다.

학생 테이블

학번이름학과코드
1001홍길동CS
1002김철수EE

학과 테이블

학과코드학과명
CS컴퓨터공학과
EE전자공학과

BCNF 정규화

제 3 정규화를 진행한 테이블의 모든 결정자가 후보키가 되도록 테이블을 분해하는 정규화를 의미한다.

강의실과목교수
101DB김교수
102AI이교수
103CS박교수

위 테이블에서 강의실은 교수를 결정하지만, 결정자인 강의실은 전체 후보키가 아니다. 전체 후보키는 강의실과 과목이다.

이를 다음과 같이 분리하여 BCNF 정규형을 만족시킬 수 있다.

교수 테이블

강의실교수
101김교수
102이교수
103박교수

과목 테이블

강의실과목
101DB
102AI
103CS