정규화(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 | 전자렌지 | 김영희 |