정규화 과정은 종속성 이론을 이용해 잘못 설계된 관계형 스키마를 작은 속성의 세트로 쪼개는 과정이다.
사실 위의 정의는 처음 봤을떄 뭘 이렇게 어렵게 말을 하지 라고 생각을 했다.
개인적으로 이해하기는 릴레이션(테이블)을 분해하여 데이터가 불필요하게 중복되거나 예기치 못한 현상(잘못 삽입/삭제/갱신)을 방지하기 위해 정규화 과정을 진행한다.
정규화를 알기 전 아래의 내용을 숙지하면 좋다.
제1정규형(1NF)
1NF는 릴레이션(테이블)에 속한 도메인이 원자값만으로 되어있는 정규형이다.
아래의 표 과목 속성을 보면 수학, 영어 두 개가 있다.
이름 | 나이 | 과목 |
홍길동 | 17 | 수학, 영어 |
김철수 | 17 | 과학, 사회 |
1NF를 만족하려면 아래와 같이 과목에 원자값만 있어야 한다. (값이 하나만 있어야 한다.)
이름 | 나이 | 과목 |
홍길동 | 17 | 수학 |
홍길동 | 17 | 영어 |
김철수 | 17 | 과학 |
김철수 | 17 | 사회 |
제2정규형(2NF)
릴레이션(테이블)이 1NF를 만족하고, 기본키에 속하지 않은 모든 속성이 기본키에 대해 완전 함수적 종속을 만족해야한다.
(부분 함수적 종속 제거 과정이다.)
여기서 함수적 종속에 대해 알아야한다.
함수적 종속은 데이터들이 어떤 기준값에 의해 종속되는 것을 말한다.
예를 들어 테이블에 X와 Y를 해당 테이블의 한 속성의 부분 집합이라고 가정한다.
X의 값을 알면 Y값을 알 수 있고, X에 따라 Y값이 달라진다면 Y는 X에 함수적 종속 관계이다. (X->Y)
완전 함수적 종속은 종속자가 기본키에만 충족되는 형태를 말한다.
아래 릴레이션에서 이름, 나이, 과목은 '학번'에 완전 함수적 종속 관계이다.
이름, 나이, 과목 모두 학번에 의해 값을 알고 달라질 수 있기 때문이다.
학번 | 이름 | 나이 | 과목 |
A01 | 홍길동 | 17 | 수학 |
A02 | 김철수 | 18 | 영어 |
A03 | 김길동 | 19 | 과학 |
즉, 기본키인 학번에 다른 모든 속성인 이름, 나이, 과목 모두가 함수적 종속 관계인 것이다.
제 3정규형(3NF)
2NF를 만족하고, 기본키를 제외한 모든 속성이 기본키에 대해 이행적 종속을 제거하는 과정이다.
여기서 이행적 종속은 A->B, B->C일때 A->C를 만족하는 관계를 말한다.
아래와 같은 릴레이션(테이블)이 있다고 가정한다.
학번 | 담임 교사 | 담당과목 |
A01 | 김영희 | 영어 |
A02 | 이순신 | 체육 |
여기서 위의 테이블은 일단 원자값만 있으면(1NF), 담임교사와 담당과목 모두 학번에 대해 완전 함수적 종속을 만족한다.
3NF를 만들려면 아래와 같이 릴레이션(테이블)을 쪼갠다.
학번 | 담임교사 |
A01 | 김영희 |
A02 | 이순신 |
담임교사 | 담당과목 |
김영희 | 영어 |
이순신 | 체육 |
학번->담임교사, 담임교사->담당과목 이라는 이행적 종속관계를 가졌던 테이블을 분리하여 이행적 종속을 없앤다.
BCNF(Boyce-Codd 정규형), 강한 제3정규형
BCNF는 3NF를 만족하고 릴레이션에서 결정자가 후보키가 아닌 함수적 종속을 제거하는 과정이다.
위의 예시로 들었던 것을 생각하면 학번이 결정자가 되고, 이름과 나이 등이 종속자라 한다.
조건
- 키가 아닌 모든 속성은 각 키에 대해 완전 종속해야한다.
- 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 완전 종속해야 한다.
- 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.
위의 테이블은 (학생번호, 과목)이 기본키로 지도교수를 알 수 있다.
그러나 지도교수를 알면 과목을 알 수 있으므로, 지도교수 → 과목 이 종속적이다.
여기서 지도교수는 후보키에 해당하지 않는 속성이다.
즉, 후보키 집합에 속하지 않은 결정자가 존재하므로 BCNF를 만족하지 않는다.
BCNF를 만족하기 위해서는 다음과 같이 분리하면 된다.
다음글에서 제4정규형, 제5정규형을 설명한다.
'자격증' 카테고리의 다른 글
2025년 정보처리기사 시험일정 (0) | 2024.12.26 |
---|---|
2024년 2월 정보처리기사 필기 합격 후기 (0) | 2024.02.27 |
정보처리기사 연산자 전치 후치 (0) | 2024.02.02 |
정보처리기사 정규화 과정(2) 4NF, 5NF (0) | 2024.01.24 |
SQLD 자격증 후기 (0) | 2024.01.21 |