데이터 정규화란? (제3 정규화)
데이터 정규화란? (제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 정규화의 장,단점
장점
마찬가지로 테이블을 분해 함으로써 일부 데이터 수정이 편리해진다.
단점
마찬가지로 분해했기 때문에 데이터 조회시 다른 테이블의 데이터까지 끌고와야 알 수 있다.
끝!