4.2 Normalization
4.2 정규화
데이터베이스 정규화는 데이터의 중복을 최소화하고 데이터 무결성을 보장하기 위해 데이터를 구조화하는 과정입니다. ERD(엔티티 관계 다이어그램)을 정규화하는 과정은 보통 다음의 단계로 이루어집니다. 여기서 각 단계는 특정한 규칙을 따르며, 이 규칙을 만족시킬 때 데이터베이스가 그 단계의 정규형을 만족한다고 말합니다. 보통 정규화는 제1정규형(1NF), 제2정규형(2NF), 제3정규형(3NF)까지 수행됩니다.
비정규형 테이블
001
홍길동
수학, 과학
002
이순신
영어, 역사
1단계: 제1정규형 (1NF)
조건: 모든 테이블의 컬럼이 원자값(atomic value)을 가져야 합니다. 즉, 각 필드에는 하나의 값만이 포함되어야 합니다.
과정:
하나의 필드에 여러 값이 포함되어 있으면, 이를 분리하여 각 값을 개별적으로 관리합니다.
예시:
비정규형:
학생 (ID, 이름, 과목)
데이터:
(001, 홍길동, 수학, 과학)
제1정규형:
학생 (ID, 이름, 과목)
데이터:
(001, 홍길동, 수학)
(001, 홍길동, 과학)
원자값으로 분리
001
홍길동
수학
001
홍길동
과학
002
이순신
영어
002
이순신
역사
2단계: 제2정규형 (2NF)
조건: 1NF를 만족하면서, 부분 함수 종속성을 제거해야 합니다. 즉, 기본 키의 일부에만 종속된 컬럼을 제거하여 별도의 테이블로 분리해야 합니다.
과정:
기본 키의 일부분에만 의존하는 필드를 제거하고, 이를 별도의 테이블로 분리합니다.
예시:
1NF:
학생과목 (학생ID, 과목ID, 과목명, 교수명)
이 테이블에서
과목명
과교수명
은과목ID
에 종속되어 있습니다.
제2정규형:
학생과목 (학생ID, 과목ID)
과목 (과목ID, 과목명, 교수명)
부분 함수 종속성을 제거하고
과목
과 관련된 정보를 분리
학생과목 테이블:
001
101
001
102
002
103
002
104
과목 테이블:
101
수학
김수학
102
과학
박과학
103
영어
이영어
104
역사
최역사
3단계: 제3정규형 (3NF)
조건: 2NF를 만족하면서, 이행 함수 종속성을 제거해야 합니다. 즉, 비키(non-key) 컬럼이 다른 비키 컬럼에 종속되지 않도록 합니다.
과정:
하나의 비키 컬럼이 다른 비키 컬럼에 종속되어 있을 경우, 이를 분리하여 별도의 테이블로 이동합니다.
예시:
2NF:
학생과목 (학생ID, 과목ID)
과목 (과목ID, 과목명, 교수명)
여기서
교수명
은과목ID
를 통해과목명
에 종속되어 있습니다.
제3정규형:
학생과목 (학생ID, 과목ID)
과목 (과목ID, 과목명)
교수 (교수명, 과목ID)
이행 함수 종속성을 제거하고
교수
와 관련된 정보를 분리
학생과목 테이블:
001
101
001
102
002
103
002
104
과목 테이블:
101
수학
102
과학
103
영어
104
역사
교수 테이블:
김수학
101
박과학
102
이영어
103
최역사
104
이 과정에서 테이블이 분리됨에 따라 데이터베이스의 무결성이 높아지고 데이터 중복이 줄어듭니다. 정규화는 일반적으로 제3정규형(3NF)까지만 수행되며, 그 이상의 정규형은 특수한 경우에 적용됩니다.
Last updated