본문 바로가기
IT/Database

정규화 (1,2,3차 정규화 / 정규형) (Normal Form)

by 성준하이 2023. 11. 5.
반응형

데이터베이스를 하게 되면 정규화 라는 단어를 접하게 된다.

특정 조건에 맞추어 어떠한 형태를 해두는것이 정규화인데,

조건에 만족이 되어있다면 정규형이고, 다음차 정규화 대상이라고 표현한다.

 

데이터베이스에서는 1-5차 정규화가 존재하며 가장 많이 쓰이는 1-3 차 정규화에 대해 다뤄볼 것이다.

 

먼저 예시를 위해 아래 처럼 테이블이 존재한다고 가정하자.

학번(기본키) 이름 과목번호 과목 성적
A0001 홍길동 S1,S2 수학,과학 80,90
A0002 이순신 S3 영어 70

먼저 1차 정규화는 테이블의 컬럼이 원자값을 갖도록, 한개의 값만 갖도록 하게 하는것이다.

지금 위 표에서 과목과 성적에 홍길동 학생이 두개의 값이 있다.

 

예시를 1차 정규화를 적용시켜보겠다.

1차 정규화 결과
(모든 값은 원자값으로 구성)
학번 이름 과목번호 과목 성적
A0001 홍길동 S1 수학 80
A0001 홍길동 S2 과학 90
A0002 이순신 S3 영어 70

이렇게 하면 1차 정규형이 된다.

 

그러고 나서 보면 학번과 이름은 종속적이다. 학번과 이름은 항상 1대 1인 관계인 셈이다.

이걸 분리해줘야한다.

 

2차 정규화를 적용시켜보겠다.

2차 정규화 결과
(부분함수 종속 제거)
학번 이름
A0001 홍길동
A0002 이순신
학번 과목번호 과목 성적
A0001 S1 수학 80
A0001 S2 과학 90
A0002 S3 영어 70

이렇게 테이블을 분리해줄수 있다.

 

이렇게하고 나면 2차 정규형이 된다.

 

그리고 나서 보면 기본키인 학번을 제외하고도 과목번호와 과목은 이행적 종속이 되어있다.

해당 부분을 3차 정규화 적용시켜보겠다.

3차 정규화 결과
(이행적 함수 종속 제거)
학번 이름
A0001 홍길동
A0002 이순신
학번 과목번호 성적
A0001 S1 80
A0001 S2 90
A0002 S3 70
과목번호 이름
S1 수학
S2 과학
S3 영어

 

이렇게 까지 하면 3차 정규형 까지 완성이 된다.

 

쉽게 정리하면

  • 1차
    • 콤마 지워서 값은 하나씩
  • 2차
    • 기본키에 묶여있는 종속되어있는것들 제외
  • 3차
    • 기본키랑은 상관없는 컬럼에 대해 종속 제외
반응형

댓글