✅ 정규화란?
정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터의 일관성과 무결성을 유지하기 위해 사용된다. 주로 엔터티 간의 중복 데이터를 줄이고, 데이터 이상 현상을 방지하기 위해 적용된다. 관계형 데이터베이스 설계에서는 주로 제 1정규화, 제 2정규화, 제 3정규화, Boyce-Codd 정규화 등이 사용된다.
✅ 정규형
- 정규화 과정에서 관계가 만족해야 하는 특정한 함수 종속성의 충족 조건
→ 특정 정규형이 요구하는 충족 조건을 관계가 만족하면 해당 수준의 정규형을 충족함을 의미한다.
- 제 3정규형 이상의 정규형을 충족하면 충분한 정규화가 이루어졌다고 본다.
→ 보통 제 3정규형 또는 보이스-코드 정규형까지만 정규화를 진행한다.
✅ 제 1정규형 (1NF)
정의
관계 R에 속한 모든 속성의 도메인이 원자값을 갖는 경우에, 관계 R은 제 1정규형이라 한다.
비정규 관계를 제 1정규형 관계로 정규화하는 방법
- n개의 다중값을 갖는 속성을 n개의 속성으로 분리한다.
- 정규화 대상인 관계가 관계형 데이터 모델의 기본 원칙을 따르기만 한다면 제 1정규형에 속한다.
제 1정규형의 문제점
- 삽입 이상
→ 과목 번호가
c006
인 과목의 개설학과가 통계학과
라는 사실만 따로 삽입할 수 없다.- 수정 이상
→ 컴퓨터학과의 학과장이
박유찬
에서 홍길동
으로 변경될 경우, 과목개설학과가 컴퓨터
인 모든 튜플을 찾아 학과장 속성 값을 한꺼번에 홍길동
으로 변경해야 함.- 삭제 이상
→ 만약, 학번
s002
학생이 과목번호 c002
과목 수강을 취소하여 이 튜플을 삭제하면 c002
과목의 개설학과가 경영학과
이고 학과장이 김철수
라는 정보까지 데이터베이스에서 함께 삭제됨.제 1정규형의 문제점을 해결하기 위해 정규화
이로써 부분 함수 종속성이 사라지게 된다.
✅ 제 2정규형 (2NF)
정의
관계 R이 제 1정규형이고, 기본 키에 해당하지 않는 모든 속성이 기본키에 완전 종속인 형태일 때, 이 관계 R을 제 2정규형이라 한다.
제 2정규형인지 점검하는 방법
- 제 2정규형은 제 1정규형을 충족하는 관계의 기본키가 복합 속성(속성이 2개 이상)일 때, 기본키의 일부 속성이 결정자인지(즉, 부분 함수 종속성이 있는지)를 검사한다.
- 만약 기본키가 단일 속성이면, 모든 속성이 완전 함수 종속이므로 검사할 필요가 없이 제 2정규형에 속한다.
제 2정규형의 문제점
- 삽입 이상
- 과목 개설 학과인
통계학과
의 학과장이홍장미
라는 사실만 따로 삽입할 수 없다.
- 수정 이상
- 컴퓨터학과의 학과장이
박유찬
에서홍길동
으로 변경될 경우, 여전히 과목 개설 학과가컴퓨터
인 모든 튜플을 찾아학과장
속성 값을 한꺼번에홍길동
으로 변경해야 한다.
- 삭제 이상
- 과목번호
c002
의 등록을 취소하여 이 튜플을 삭제하면경영학과
의 학과장이김철수
라는 원하지 않은 정보까지 함께 삭제된다.
제 2정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유
아직도 둘 이상의 의미적 연관성을 하나의 관계로 함께 표현했기 때문이다.
이행적 함수 종속성
- 기본키에 속하지 않은 일반 속성 값이 기본키에 속하지 않은 또 다른 일반 속성 값을 결정한다.
- 해결방법: 이행적 종속 관계를 끊어 두 종속 관계를 각기 다른 관계에 표현한다. 즉, 2개의 관계로 분해한다.
✅ 제 3정규형 (3NF)
정의
어떤 관계 R이 제 2정규형이고, 기본 키에 속하지 않는 모든 속성이 기본키에 대해 이행적 종속이 아니면, 관계 R은 제 3정규형이다.
제 3정규형 점검 방법
- 제 3정규형은 제 2정규형을 충족하는 관계의 기본키가 아닌 일반 속성이 결정자인지를 검사한다.
- 일반 속성이 기본키 속성이 아닌 일반 속성에 종속적일 때 제 3정규형에 위배된다.
제 3정규형의 문제점
- 삽입 이상
- 과목번호
c004
의 강의담당교수가p005
라는 사실만 따로 삽입할 수 없다.
- 수정 이상
- 강의담당교수
p001
의 담당 과목번호가c005
로 변경될 경우,p001
과 관련된 모든 튜플을 찾아과목번호
속성 값을 한꺼번에c005
로 변경해야 한다.
- 삭제 이상
- 학번
s002
인 학생이 교과번호c002
의 수강을 취소하여 이 튜플을 삭제하면p002
교수가c002
과목을 강의한다는 정보까지 함께 삭제된다.
제 3정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유
- 원인: 기본키가 아닌 속성이 기본키 일부 속성의 결정자가 되기 때문이다.
- 관계의 후보 키가 둘 이상이고 기본 키가 둘 이상의 조합일 때 발생한다.
제 3정규형의 문제점 해결
이러한 문제를 해결하려면 기본키가 아닌 결정자를 분리하여 2개의 관계로 분해해야 한다.
✅ 보이스코드 정규형 (BCNF)
- 모든 결정자를 후보키로 만든다. 즉, 기본키가 아니면서 결정자 역할을 하는 속성과 그 결정자에 함수 종속이 되는 속성을 하나의 관계로 분리한다.
- 이때, 결정자는 원 관계에도 남겨서 외래키 역할을 하도록 한다.
Share article