데이터베이스

1정규화, 2정규화, 3정규화, 4정규화, 5정규화

ROSEV 2024. 4. 7. 22:15

 

 

정규화(Normalization)는 데이터베이스 설계에서 중복을 제거하고 데이터 일관성을 유지하기 위해 데이터를 표준화하는 프로세스입니다.

1NF부터 5NF까지의 다섯 가지 정규화 형태를 설명하겠습니다.

 

 

  • 제1정규화(1NF):
    • 설명: 각 열에는 하나의 값만 있어야 합니다. 즉, 모든 도메인이 원자값(Atomic value)이어야 합니다.
    • 예시: 학생 테이블에서 한 열에 여러 개의 전화번호를 가지고 있는 경우, 이를 별도의 테이블로 분리하여 각 행당 하나의 전화번호를 가지도록 만듭니다.
  • 제2정규화(2NF):
    • 설명: 부분적 함수 종속을 제거하여 모든 비주요 속성이 기본 키에 대해 완전 함수적 종속을 가져야 합니다.
    • 예시: 주문 테이블에서 주문 번호와 제품 정보를 함께 가지고 있는 경우, 이를 주문 정보와 제품 정보로 나누어 각 테이블을 정규화합니다.
  • 제3정규화(3NF):
    • 설명: 이행적 함수 종속을 제거하여 모든 비주요 속성이 기본 키에 대해 이행적으로 종속되지 않아야 합니다.
    • 예시: 주문 테이블에서 고객 주소를 가지고 있는 경우, 이를 별도의 고객 정보 테이블로 분리하여 정규화합니다.
  • BCNF(Boyce-Codd 정규화):
    • 설명: 함수 종속성이 후보 키에만 존재해야 합니다.
    • 예시: 부서 테이블에서 부서 번호와 부서 이름이 후보 키인 경우, 부서 관련 다른 정보는 부서 번호에만 종속되어야 합니다.
  • 제4정규화(4NF):
    • 설명: 다치 종속을 제거하여, 다중 값 종속이 발생하지 않도록 해야 합니다.
    • 예시: 학생 테이블에서 학생의 주문이 여러 개인 경우, 이를 별도의 주문 테이블로 분리하여 다중 값 종속을 제거합니다.
  • 제5정규화(5NF):
    • 설명: 조인 종속을 제거하여, 조인에 의해 정보가 중복되지 않도록 해야 합니다.
    • 예시: 주문 테이블에서 주문 번호와 제품 정보가 주문 내역 테이블과 분리된 경우, 이를 다시 조인하여 중복을 제거합니다.

 

사례

2정규화 (2NF)

원본 테이블: 주문

주문번호 제품명 고객ID 고객이름
1 TV 101 홍길동
2 냉장고 102 김영희
3 전자렌지 101 홍길동

 

고객이름이 주문번호에 종속되어 있습니다. 즉, 동일한 고객이 여러 번 주문할 경우 고객 정보가 중복되게 됩니다.

 

적용 후 테이블: 주문 테이블

주문번호 제품명 고객ID
1 TV 101
2 냉장고 102
3 전자렌지 101

 

3정규화 (3NF)

원본 테이블: 주문

 

주문번호 제품명 고객ID 고객이름 고객주소
1 TV 101 홍길동 서울
2 냉장고 102 김영희 부산
3 전자렌지 101 홍길동 서울

 

고객주소가 주문번호에 종속되어 있어서 동일한 고객의 정보가 중복됩니다.

 

적용 후 테이블 : 주문 테이블

1 TV 101
2 냉장고 102
3 전자렌지 101

 

적용 후 테이블 :  고객 테이블

고객ID 고객이름 고객주소
101 홍길동 서울
102 김영희 부산

 

BCNF (Boyce-Codd 정규화)

원본 테이블: 부서

부서번호 부서명 담당자
101 영업부 홍길동
102 마케팅부 김영희
103 인사부 박철수

 

담당자가 부서명에 종속되어 있어서 부서에 대한 정보가 중복됩니다.

적용 후 테이블: 부서 테이블

부서번호 부서명
101 영업부
102 마케팅부
103 인사부

 

적용 후 테이블 :  담당자 테이블

담당자
홍길동
김영희
박철수

 

4정규화 (4NF)

원본 테이블: 학생 성적

학번 과목 성적
101 수학 A
101 과학 B
102 수학 B
102 과학 A

 

성적이 학번과 과목에 종속되어 있어서 동일한 학번과 과목의 정보가 중복됩니다.

 

적용 후 테이블: 학생 테이블

학번
101
102

 

적용 후 테이블 : 성적 테이블

학번 과목 성적
101 수학 A
101 과학 B
102 수학 B
102 과학 A

 

5정규화 (5NF)

원본 테이블: 주문상세

주문번호 제품명 고객
1 TV 홍길동
1 냉장고 홍길동
2 전자렌지 김영희

 

주문번호와 제품명이 주문자에 종속되어 있어서 동일한 주문번호와 제품명의 정보가 중복됩니다.

 

적용 후 테이블: 주문 테이블

주문번호
1
2

 

적용 후 테이블 : 고객 테이블

고객
홍길동
김영희

 

적용 후 테이블 : 주문상세 테이블

주문번호 제품명 고객
1 TV 홍길동
1 냉장고 홍길동
2 전자렌지 김영희