본문 바로가기

DBMS

[RDBMS] 데이터베이스 정규화

우리는 필요한 데이터를 데이터베이스에 저장하여 집합을 생성합니다.

이러한 집합으로 필요한 정보를 생산하기 위해서는 데이터베이스 설계가 중요합니다.
기사 시험을 공부할 때도 빠지지 않는 내용인 정규화를 지금부터 알아볼까요?


테이블을 잘못 설계하면 이상현상이 발생합니다.
이상현상을 예방하기 위해서는 데이터베이스 정규화가 필요합니다.

 

📌 제1 정규화

테이블의 속성이 원자값을 가지도록 테이블을 분해하는 과정입니다.

제1 정규화 전

이 테이블은 제품의 알레르기 성분이 하나의 튜플에 복수로 존재합니다.
제1 정규화를 거쳐 아래처럼 하나의 값만 가지도록 변경합니다.

제1 정규화 후

 

📌 제2 정규화

테이블의 부분 함수 종속을 제거하는 과정입니다.
부분 함수 종속이란 기본키를 구성하는 여러 속성 중에 일부분에만 종속되어 있음을 의미합니다.

제2 정규화 전

이 테이블에서 고객 코드와 매장 코드를 기본키로, 가격을 볼 수 있습니다.
하지만, 매장 이름은 기본키의 일부분인 매장코드만 보고 알 수 있습니다.

제2 정규화 후

이런 경우에는 제2 정규화를 거쳐 테이블을 분리할 수 있습니다.

 

📌 제3 정규화

테이블의 이행 함수 종속을 제거하는 과정입니다.
이행 함수 종속이란 A →B이고 B→C일 때, A →C가 성립하는 것을 의미합니다.

제3 정규화 전

이 테이블에서 장바구니에 담긴 제품 크기는 아이스크림 이름에 종속되고,
아이스크림의 가격은 제품의 크기에 종속되어 있습니다.

제3 정규화 후

이런 경우에는 제3 정규화를 통해 장바구니와 가격 테이블을 분리할 수 있습니다.


실무에서 자주 하는 제1 정규화부터 제3 정규화까지 알아보았습니다.

포스트를 보면서 틀린 내용이 있다면 지적 부탁드립니다.
감사합니다!

'DBMS' 카테고리의 다른 글

[MySQL] SQL_CALC_FOUND_ROWS와 FOUND_ROWS()  (0) 2024.10.17
[SQL] IN 연산자 알아보기  (3) 2024.10.10
[SQL] JOIN으로 테이블을 합쳐보자  (0) 2024.09.20
[SQL] Time Zone 설정하기  (0) 2024.09.13
[SQL] 데이터를 내 마음대로, DML  (1) 2024.09.12