본문 바로가기
DATABASE

데이터베이스(DB) 기본 정규형과 정규화 과정

by YoonJong 2022. 10. 26.
728x90

정규화가 왜 필요한지에 대해서는 아래 포스팅에서 확인할 수 있다.

https://josteady.tistory.com/747

 

데이터베이스(DB) 정규화는 왜 필요할까?

정규화를 이용해 데이터베이스르 설계하는 방법을 알아보자. 데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생해서 테이블에 대한 데이터의 CRUD 연산을 수행할 때 부작용이 발생할

josteady.tistory.com

 

기본 정규형은 제1,제2,제3 정규형과 보이스/코드 정규형이 있으며 (순서대로)

고급 정규형은 제4,제5 가 있다.

 

기본적으로는 기본정규형만 만족하더라도 충분히 사용가능한 테이블을 만들 수 있다.

물론 숫자가 높을 수록 바람직한 정규화가 될 가능성이 있지만, 상황에 따라 적절히 선택할 수 있어야하며,

오히려 제 5정규형을 만족할 때까지 분해하면 비효율적이며 바람직하지 않은 경우가 많다고 한다.

따라서 고급정규형은 생략했다.

 

기본 정규형 종류 조건
제1정규형 테이블에 속한 모든 도메인이 원자값(더이상 나누어지지 않는 값)으로만 구성된다.
제2정규형 테이블이 제1정규형에 속하고, 모든 속성이 기본키에 완전 함수 종속된다.
제3정규형 테이블이 제2정규형에 속하고, 이행적 함수 종속이 되지 않아야 한다
* 이행적 함수 종속 : X -> Y , Y -> Z 일때 , X ->Z 이다.
보이스/코드 테이블의 함수 종속 관계에서 모든 결정자가 후보키일 경우

 

제 1 정규형부터 제 3 정규형까지의 테이블 변화 예시를 아래에서 보자

제 1정규형

테이블 속성의 모든 도메인이 단 하나의 원자성을 가지고 있는 형태이다.

다중 값 속성을 가지고 있지 않지만, 이상현상이 발생하므로 추가적인 단계가 필요하다


제 2정규형

다음으로 제 2정규형을 보면 테이블이 2개로 나뉘었다. 또한, 고객아이디가 중복되지 않는다.

제 2정규형 과정에서 고려해야 할 사항은 이전 제1정규형의 테이블로 복원할 수 있어야 한다는 점이다.

아래 테이블에서는 조인을 이용해 이전 테이블로 복원할 수 있는 형태이다

 

하지만 제 2 정규형에서도 이상현상이 일어날 가능성이 있다.

고개참여 테이블에서 gold 가 2개가 있는데, 만약 고객아이디 1번의 gold 등급 할인율만 15% 로 변경할 경우,

고객아이디 3번인 고객은 등급이 gold 지만 10% 의 할인을 받기 때문이다. ( 갱신이상 )


제 3정규형

제 3정규형에서는 고객참여 테이블을 나눈다.

고객 등급 테이블로 나누어 중복을 제거함으로써 제 2정규형의 이상현상을 해결할 수 있다.


보이스/코드 정규형 - 기본형의 마지막 단계 정규형

보이스/코드 정규형은 강한 제3정규형이라고 불리기도 한다. 제 3규형보다 더욱 강력한 제약조건을 가지고 있다.

제3정규형이 보이스/코드 정규형에 속하는 경우도 많다.

아래의 예는 제3정규형에는 속하지만, 보이스/코드 정규형에는 속하지 않는 예시이다.

 

고객이 인터넷강좌를 여러개 신청할 수 있으며, 동일한 강좌를 여러번 신청할 수 없다.

강사 한명은 인터넷강좌 1개만 담당할 수 있으며, 하나의 인터넷강좌는 여러 강사가 담당할 수 있다.

고객아이디가 결정자가 되어 인터넷강좌의 담당강사번호를 알 수 있고,

인터넷강좌가 결정자가 되어 누가 담당하는지 담당강사번호를 알 수 있다.

 

보이스/코드 정규형에 속하지 않은 위의 테이블은 이상 현상이 발생할 수 있다.

고객이 신청하지 않은 인터넷강좌는 고객아이디가 null 이기 때문에 삽입이상이 발생하며,

가장 아래 행의 담당강사번호가 500으로 변경된다면 고객아이디 3 , 수학, 400 이랑 불일치로 갱신이상이 발생한다.

또한, 2번 고객의 인터넷강좌를 삭제했는데 인터넷강좌를 담당하는 담당강사번호의 정보까지 삭제되어버려 삭제이상이 발생한다.

 

이런 이상현상을 해결하기 위해 아래와 같은 테이블로 나눌 수 있다.

 


정규형의 과정은 제 1 부터 보이스/코드 정규형까지 순차적으로 이루어진다.

하지만, 요구사항분석에 따라 제 3정규형에서 이상현상없이 마무리될지는 상황에 따라 다르다.

개인프로젝트를 준비하면서 ERD 정규화를 하고 있는데 개념과 어떤 형식인지 시기에 맞아 좋은 학습시간이 되었다.

728x90

댓글