정보처리기사 준비/DB 파트 정리

[DB] 정규화, 반정규화, 후보키

류도토리 2024. 4. 10. 15:36

1. 정규화

 - 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정

 - 정규화의 목적 : 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것

 

 - 정규화 단계 (도, 부, 이, 결, 다, 조) -> 두부이걸다줘

 

 - 제 1정규화

번호
1 파랑
2 노랑
3 초록,빨강

원자값이 두개 이상이 아닌 하나로 있어야 하는 것

번호
1 파랑
2 노랑
3 초록
3 빨강

이렇게 나눠야 한다.

 

- 제 2 정규화 ( 부분함수 종속 제거 )

 기본키와 큰 연관이 없는 데이터를 따로 빼주는 것

학생 번호 강좌 강의실 학점
1 자바 101 4.5
2 오라클 102 4.3
3 파이썬 103 4.2
4 파이썬 103 4.1

보통 학생번호가 기본키라는 가정 하에 강의실 컬럼은 강좌에 의해 결정되기 때문에 테이블을 따로 분리할 필요가 있다.

 

학생번호 강좌 학점
1 자바 4.5
2 오라클 4.3
3 파이썬 4.2
4 파이썬 4.1

 

강좌 강의실
자바 101
오라클 102
파이썬 103

이렇게 분리하여 테이블을 관리하면 유지보수도 편리해진다.

 

 - 제 3정규화 ( 이행 함수 종속 제거 )

 - A=B, B=C -> A=C가 성립하는 조건

강좌명만 알면 수강료를 알 수 있기 떄문에 중복 데이터가 발생한다.

따라서 테이블을 분리하여 만든다.

 

 - 제2정규화는 기본키의 일부에만 종속된 속성을 제거하는 과정

 - 제3정규화는 비주요 속성이 다른 비주요 속성에 종속되는 것을 제거하는 과정

 

 - 보이스-코드 정규화 (BCNF) - 결정자가 후보키가 아닌 함수의 종속을 제거한다는 말의 의미는 테이블의 모든 결정자가 후보키가 되도록 테이블을 분해한다는 것을 의미

 

 - 후보키 : 기본키가 될 수 있는 컬럼들을 모두 후보키라고 하고, 후보키 중 기본키가 결정되면 나머지는 대체키라고 한다.

 

 - 제 4정규형 : 다치(다중 값) 종속성 제거

 - 제 5정규형 : 조인 종속성 제거

 

 - 반정규화