데이터 베이스 정규화라는 말에 대해 정확하게 공부하는 시간을 갖고자 한다.
데이터 베이스 정규화란?
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화 하는 프로세스를 정규화라 한다.
- 이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정
일반적으로 테이블을 여러개로 분해하면 속도는 상대적으로 느려질 수 있지만, 분해하지 않으면 이상문제들이 생김
- 정규화 된 정도를 졍규형으로 표현하는데, 정규형에는 1NF,2NF,3NF,4NF<5NF,6NF까지 존재.
비공식적 표현으로는 3NF가 되었으면 정규화 되었다고 말함
3NF테이블의 대부분이 삽입,변경,삭제 이상이 없음
이상문제
- 삽입 이상: 데이터를 저장할 때 원하지 않은 정보가 함께 삽입되는 경우
- 삭제 이상: 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
- 갱신 이상: 중복된 튜플 중 일부의 속성만 갱신 시킴으로써 정보의 모순성이 발생하는 경우
(*튜플: 테이블을 구성하는 데이터들 중 가로로 묶은 데이터 셋을 의미)
이상문제 발생가능성 있는 예시
- 삽입이상: 신입 학생이 입학하여 학번과 학년등을 입력하려 했으니, 아직 과목이 정해지지 않았거나, 시험을 보지 않아 성적이 없는 상태이기 때문에 불필요한 정보(과목이름,성적)를 함께 삽입해야 하는 경우
- 삭제 이상: 학생번호가 2번인 학생의 과목에 대한 성적을 삭제할 경우 학생버호와 학년 등 모든 정보가 같이 삭제 ㅗ디어 학생의 정보 자체가 사라짐
- 갱신 이상: 학생 번호가 3번인 학생이 2학년이 되어 학년 정보를 변경 하려 하는데 3개를 모두 하나씩 바꿔줘야 함, 하나라도 안바꿀 경우 한명의 학생에 대한 정보가 서로 달라지는 모순성 발생
(그림 출처:https://nirsa.tistory.com/107)
함수적 종속이란?
- 함수적 종속은 어떠한 릴레이션에서 속성들의 부분 집합을 x,y라 할때 특정 튜플에서 x의 값이 y의 값을 함수적으로 결정한다면 y가 x에 함수적으로 종속 되었다고 함
->잘 이해 x
함수적 종속의 추론 규칙
- 재귀 규칙: Y가 X의 부분집합이면 X->Y
- 증가 규칙: X->Y이면 WX->WY이고 WX->Y이다.
- 이행 규칙: X->Y이고 Y->Z이면 X->Z이다.
- 유니온 규칙: X->Y이고 X->Z이면 X->YZ이다.
- 분해 규칙: X->YZ 이면 X->Y와 X->Z이다.
- 가이행규칙: 만일 W->X이고 XY->Z 이면 WY->Z이다.
정규화 과정
제 1 정규형
제 2 정규형
- 제 2 정규형은 부분 함수 종속을 제거 한다. 밑의 예에서 학번은 학부와 등록금을 결정할 수 있고, 학번과 과목 코드는 성적을 결정할 수 있다.
-함수(학번,과목코드)에서 부분 함수인 학번 혼자서 학부와 등록금을 결정할 수 있기 때문에 제2 정규형을 만족하지 못한다. 따라서 성적,학부에, 등록금에 모두 영향을 주는 학번을 기준으로 릴레이션 분리
(그림 출처:https://nirsa.tistory.com/107)
(그림 출처:https://nirsa.tistory.com/107)
제 3 정규형
제 3 정규형은 이행 함수 종속을 제거한다. 현재 밑의 그림에서 학번(X)가 학부 (Y)를 결정, 학부 (Y)가 등록금 (Z)을 결정할 수 있음
즉 현재는 이행 규칙을 만족하기 때문에 제 3 정규형을 만족시키지 못함 따라서 이행함수 송족을 제거해 주어야 한다.
(그림 출처:https://nirsa.tistory.com/107)
-제 3 정규형 해결 전
(그림 출처:https://nirsa.tistory.com/107)
-제 3 정규형 해결
BCNF: 결정자 중 후보키가 아닌 것들은 제거
제 4 정규형: 다치 종속 제거
제 5 정규형: 조인 종속성 제거
Reference