Notice
Recent Posts
Recent Comments
Link
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

채채

[면접을 위한 CS 전공지식 노트] 정규화 과정 본문

카테고리 없음

[면접을 위한 CS 전공지식 노트] 정규화 과정

HChaeEun 2024. 5. 8. 11:45

4.2.3 정규화 과정

삽입/삭제/갱신 이상을 제거하기 위해 릴레이션을 여러 개로 분리하는 과정

 

제 1정규형

릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자값으로 구성되어야한다.

위의 사진에서 수정되기 전에는 수강명과 성취도에 {C++코딩테스트, 프런트 특강}과 같이 집합이 적재되어있다.

이를 각각 다른 행으로 나누어 수정하면 제 1정규형을 만족하게 된다.

 

제 2정규형

릴레이션이 제 1정규형이며 부분 함수의 종속성을 제거한 형태이다.

즉 모든 속성이 기본키에 완전 함수 종속적인 것을 의미한다.

예시 사진에서 유저번호를 통해 유저ID를 알 수 있고, 유저ID와 수강명을 통해 성취도를 알 수 있다. 이러한 부분 함수 종속을 완전 함수 종속을 만족하도록 각각의 릴레이션을 분해한다. 

 

제 3정규형

 

제2정규형이고 이행적 함수 종속을 제거한 상태이다.

이행적 함수 종속이란 속성 X를 알 때 Y를 알 수 있고, Y를 알 때 Z를 알 수 있으면. X를 통해 Z를 알 수 있다는 것이 성립한다. 이때 속성 Z가 X에 이행적으로 함수 종속이 되었다고 한다. (X->Y, Y->Z 일 때,  X->Z성립)

 

유저ID를 알 때 등급을 알 수 있고, 등급을 알 때 할인율을 알 수 있다. 이때 유저ID를 알면 할인율을 알 수 있는데.

이러한 이행적 함수 종석을 제거하기 위해 각각의 릴레이션으로 분할한다.

 

보이스/코드 정규형(BCNF)

제3정규형이고 결정자가 후보키가 아닌 함수 종속 관계를 제거한다.