DB (데이터베이스)

데이터 정규화란? (제3 정규화)

지창준 2023. 4. 20. 15:36
 

데이터 정규화란? (제2 정규화)

데이터 정규화란? (제1 정규화) 주니어 개발자들중 관계형 데이터베이스를 사용 한다면 한번 쯤은 들어봤을 것이다! '데이터 정규화' 이 녀석은 대체 무엇일까? 데이터베이스의 설계에서 중복을

moonriver252.tistory.com

 

어집니다!

(정규화 시리즈 마지막입니다)

 

 

 

 

제3 정규화

 

제3 정규화란 제 2정규화를 만족한 테이블에 대해 이행적 함수 종속이 없도록 테이블을 분해 하는 방식이다.

 

이를 간단하게 말하자면

테이블에서 일반 컬럼에만 종속된 컬럼을 다른 테이블로 빼는 것을 제3 정규화라고 한다!

 

이행정 함수 종속이란?

X -> Y, Y -> Z가 성립할 때 X -> Z가 성립되는 것을 의미한다.

 

ex)

예를 들어 아래와 같이 제2 정규화를 마친 [과목] 테이블이 있다.

수강과목 (PK) 강의실 강의실 대여료
PostgreSQL 101호 100원
MongoDB 202호 200원
MySQL 303호 300원
MySQL 심화 303호 300원

이 테이블에의 경우 강의실 대여료강의실에만 종속이 되어 있다

또한 수강과목강의실 대여료도 결정하고 있다

즉, 현재 테이블에는 이행적 함수 종속이 있다고 볼 수 있다!

 

추가적으로 이 경우에는 강의실 대여료를 수정 하려고 하면 시간이 오래걸린다!

 

 

이를 아래와 같이 분해하여 테이블을 구성하면

[과목 테이블]

수강과목  강의실
PostgreSQL 101호
MongoDB 202호
MySQL 303호
MySQL 심화 303호

[강의실 테이블]

강의실 강의실 대여료
101호 100원
202호 200원
303호 300원

분해하여 테이블을 구성하였으므로 강의실 대여료 수정시 한곳만 수정하면 된다.

즉, 추후 데이터를 수정하기 편하다!

 

또한 이렇게 구성한 테이블을 제3 정규형을 만족하는 테이블이라고 할 수 있다.

 

 

 

 

제3 정규화의 장,단점

 

장점

마찬가지로 테이블을 분해 함으로써 일부 데이터 수정이 편리해진다.

 

단점

마찬가지로 분해했기 때문에 데이터 조회시 다른 테이블의 데이터까지 끌고와야 알 수 있다.

 

끝!