정규화

유석현(SeokHyun Yu)·2022년 8월 19일
0

SQL

목록 보기
34/45
post-thumbnail

서론

정규화란 데이터베이스의 테이블을 규정된 올바른 형태로 개선해나가는 것이다.

정규화는 데이터베이스의 설계 단계에서 행해진다.

경우에 따라서는 기존 시스템을 재검토할 때 정규화하는 경우도 있다.

정규화의 순서는 이전의 데이터베이스 기술자들이 고안해 정리한 것이다.

이를 참고하여 정규화하는 과정을 통해 관계형 데이터베이스가 효율적으로 동작하도록 만들 수 있다.

조금 귀찮을 수도 있지만 잘만 활용하면 효율적인 데이터베이스를 설계할 수 있다.


1. 제1 정규화

관계형 데이터베이스의 테이블에는 하나의 셀하나의 값만 저장할 수 있다는 제약이 있다.

이를 원자성이라고 한다.

제1 정규화에서는 이 같은 중복을 제거하는 테이블의 분할로 이루어진다.

중복이 제거된 열은 기본키로 지정할 수 있다.


2. 제2 정규화

제2 정규화에서도 데이터가 중복하는 부분을 찾아내어 테이블로 분할해 나간다.

이때 기본키에 의해 특정되는 열그렇지 않은 열로 나누는 것으로 정규화가 이루어진다.

어려운 말로 표현하자면 부분 함수종속성을 찾아내서 테이블을 분할하는 것이 제2 정규화이다.

여기서 함수종속성이란 키 값을 이용해 데이터를 특정지을 수 있는 것을 가리킨다.


3. 제3 정규화

마지막으로 제3 정규화이다.

이 또한 중복하는 부분을 찾아내어 테이블을 분할하는 수법이다.

제2 정규화의 경우에는 기본키에 중복이 없는지를 조사했었다면 제3 정규화에서는 기본키 이외의 부분에서 중복이 없는지를 조사한다.

정규화에 대해서는 여기까지 설명하겠다.

실제로는 제5 정규화까지 있지만 대부분의 시스템에서 제3 정규화까지의 정규화를 채택한다.

여기에서는 정규화의 과정을 자세히 다루지 않았지만, 혹시 그 과정이 궁금하다면 아래의 링크에 자세히 설명되어 있으니 참고하기 바란다.

https://code-lab1.tistory.com/48


4. 정규화의 목적

정규화에서는 중복하거나 반복되는 부분을 찾아내서 테이블을 분할하고 기본키를 작성해 사용하는 것을 기본 개념으로 삼는다.

이는 '하나의 데이터는 한 곳에 있어야 한다'는 규칙에 근거한다.

하나의 데이터가 반드시 한 곳에만 저장되어 있다면 데이터를 변경하더라도 한 곳만 변경하는 것으로 끝낼 수 있다.

반면 정규화되지 않은 경우에는 여기저기 중복해서 저장된 데이터를 검색하고 일일이 변경해야 한다.

이것은 매우 번거로운 작업이다.

또한 인덱스가 지정된 열의 데이터가 변경되는 경우에는 인덱스도 재구축해야 한다.

따라서 정규화를 통해 테이블에 대한 인덱스의 재구축도 억제할 수 있다.

profile
Backend Engineer

0개의 댓글