정규화(Normalization)와 정규화 과정(1NF, 2NF, 3NF, BCNF)
정규화(Normalization)
데이터베이스에서
중복
을 최소화하고 데이터의 구조를 조직화하여데이터의 일관성
과 효율성을 향상시키는 프로세스
정규화의 주요 목적은 데이터베이스의 구조를 조직화하여 데이터의 중복
을 최소화하고 데이터의 일관성, 무결성, 효율성
을 확보하는 것입니다. 이를 통해 데이터 이상 현상
을 방지하고 데이터베이스를 효율적으로 설계할 수 있습니다.
-
중복 최소화
- 데이터 중복을 줄여서 데이터 일관성을 유지하고 데이터 변경 시 한 곳만 수정하면 되도록 합니다.
-
데이터 일관성 및 무결성
- 데이터 이상 현상을 방지하여 삽입, 갱신, 삭제 시 데이터 일관성을 유지하고 데이터의 무결성을 보장합니다.
-
데이터 이상 현상 방지
- 삽입, 갱신, 삭제 시 발생할 수 있는 이상 현상을 예방하여 데이터의 일관성을 유지합니다.
제1 정규형 (1NF)
테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것
‘주문목록’ 테이블에서는 하나의 제품에 여러 개의 주문 관련 정보 (주문번호, 고객번호, 주소, 주문수량)가 존재하기 때문에 제 1정규형이 아니다. 1차 정규화 과정으로 생성된 ‘제품주문’ 테이블의 기본키는 (주문번호, 제품번호)이다.
주문번호, 제품번호 --> 고객번호, 주소, 주문수량
주문번호 --> 고객번호, 주소
고객번호 --> 주소
제2 정규형 (2NF)
부분 함수 종속성이 제거되어 모든 속성이 기본 키에 완전히 종속되는지 확인하는 것
제 2정규화 과정을 거쳐 생성된 ‘주문’ 테이블의 기본키는 주문번호이고 ‘주문’ 테이블에는 아직도 다음과 같은 함수적 종속들이 존재한다.
주문번호 --> 고객번호, 주소
고객번호 --> 주소
제3 정규형 (3NF)
이행 함수 종속성이 제거되어 모든 속성이 직접 기본 키에 종속되는지 확인하는 것
‘주문’ 테이블에서 고객번호가 주문번호에 함수적 종속이고 주소가 고객번호에 함수적 종속이므로 주소는 기본키인 주문번호에 대해 이행적 함수적 종속을 만족한다.
즉 [주문번호 -> 고객번호]이고 [고객번호 -> 주소]이므로 [주문번호 -> 주소]는 이행적 함수적 종속
이 된다.
따라서 ‘주문’ 테이블은 제 3정규형이 아니다.
BCNF
모든 결정자가 후보 키인지 확인하는 것
‘수강교수’ 테이블은 다음과 같은 함수적 종속 관계를 갖습니다
- (학번, 과목명) → 담당교수
- (학번, 담당교수) → 과목명
- (담당교수) → 과목명
이때, ‘수강교수’ 테이블의 후보키는 (학번, 과목명)과 (학번, 담당교수)입니다. 그러나 ‘수강교수’ 테이블에서는 후보키가 아닌 속성이 결정자로 사용되어 함수적 종속 [담당교수 → 과목명]이 존재합니다. 이는 담당교수가 ‘수강교수’ 테이블에서 후보키
가 아니기 때문에, ‘수강교수’ 테이블은 BCNF(Boyce-Codd 정규형)
를 만족하지 않습니다.
제4 정규화 (4NF)
다치 종속성이 제거되어 모든 속성이 후보 키에 종속되는지 확인합니다.
제5 정규화 (5NF)
조인 종속성이 제거되어 각 테이블이 후보 키에 종속되는지 확인합니다.
댓글남기기