정규화에 대해서

이제우·2023년 10월 10일
0

정규화의 개념/정규화를 하는 이유

정규화의 목표는 중복되는 데이터를 최소화하여 데이터베이스의 용량을 최소하하고 효율성을 높이는 것이다.

중복을 피하기 위하여 데이터를 구조화하여 더 작은 테이블에 분해하는데 이를 구조화하는 정규화 단계가 정의되어 있다.


제 1 정규화

제 1 정규화는 컬럼이 원자값을 갖도록 분해하는 과정이다.(Automic Value)

학생정보

학생명수강과목
이민수수학, 영어
김민아과학
박지우국어, 과학
우준식영어

위의 테이블에서는 민수와 지우는 수강과목이 여러개이다.
이러한 테이블은 제 1 정규형을 만족하지 못한다.

학생명수강과목
이민수수학
이민수영어
김민아과학
박지우국어
박지우과학
우준식영어

위와 같이 작성하면 제 1 정규형에 맞춰 작성할 수 있다.


제 2 정규화

제 2 정규화는 제 1 정규화를 완료한 테이블을 완전 함수 종속을 갖도록 하는 과정이다.

완전 함수 종속 ?
a 값에 따라 b의 값이 결정 될 때 b는 a에 대해 함수적 종속이라고 한다.
a가 하나의 값이 아닌 a1, a2라고 할 때 a1과 a2가 모두 b의 값을 결정하면 완전 함수적 종속이라고 한다. 그러나 a1, a2 둘 중에 하나만 b의 값을 결정하면 부분 함수적 종속이라고 한다.

학생번호수강과목강사명점수
001수학김수학85
001영어이영어83
002과학박과학92
003국어임국어79
003과학박과학88
004영어이영어86

위와 같은 기본키가 학생번호와 수강과목로 복합키인 테이블이 있을 때,
학생번호와 수강과목은 점수가 결정하고 있다.

하지만 강사명은 기본키의 부분인 수강과목으로만 결정되고 있기 때문에 제 2 정규형을 만족하지 못한다.

학생번호수강과목점수
001수학85
001영어83
002과학92
003국어79
003과학88
004영어86

수강과목강사명
수학김수학
영어이영어
과학박과학
국어임국어

위와 같이 작성하면 제 2 정규형에 맞춰 작성할 수 있다.


제 3 정규화

제 3 정규화는 제 2 정규화를 완료한 테이블에서 이행적 종속을 없애는 단계이다.

이행적 종속?
이행적 종속이란 a -> b, b -> c 가 성립할 때, a -> c가 성립하는 것

학생번호수강과목총 강의 수
001수학3회
001영어4회
002과학1회
003국어5회
003과학1회
004영어4회

이 테이블은 학생번호가 수강과목을, 수강과목은 총 강의 수를 결정하고 있다.
그러므로 [학생번호와 수강과목], [수강과목과 총 강의 수]로 테이블을 나눠야 한다.
그 이유로 003 학생이 수강과목을 국어로 변경한다면 총 강의 수는 1회인 국어 과목이 되어버린다.

물론 과목을 변경할때마다 총 강의 수도 바꿔줄 수 있지만,
이러한 번거로움을 해결하기 위해 제 3 정규화를 해야한다.

학생번호수강과목
001수학
001영어
002과학
003국어
003과학
004영어

수강과목총 강의 수
수학3회
영어4회
과학1회
국어5회

위와 같이 작성하면 제 3 정규형에 맞춰 작성할 수 있다.


이상현상(Anomaly)

학생번호학생명수강과목과목코드이메일
001이민수수학A1minsu@naver.com
001이민수국어A4minsu@naver.com
002김민아과학A3m1na@gmail.com
003박지우국어A4batwoo@naver.com
003박지우과학A3batwoo@naver.com
004우준식영어A2wooeat@gmail.com

위의 테이블로 3가지 이상현상을 알아보자.

1. 삽입 이상 : 자료를 추가할 때 의도하지 않은 자료까지 추가해야하는 현상

005번호의 임성진이라는 학생을 새로 전학을 왔는데 아직 수강 과목이 없다고 한다.

이런 상황일 때 테이블에 수강과목과 과목코드, 점수는 null이 들어가야하는 문제가 발생한다.

2. 갱신 이상 : 중복된 데이터의 일부만 수정되어 모순이 되어버리는 현상

강의코드가 A1인 이민수의 이메일을 'strongminsu@naver.com'으로 수정한다.

이런 상황일 때 1번 row와 2번 row의 이민수는 같은 학생이지만 다른 이메일 정보를 갖게 된다.

3. 삭제 이상 : 어떤 정보를 삭제할 때 다른 정보까지 삭제되어버리는 현상

A2 코드를 가진 과목을 삭제한다.

이런 상황일 때 004번호의 우준식 학생의 데이터까지 삭제 되어버린다.

profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글