정규화 ,͎ 반정규화

2024. 8. 20. 21:11TIL

✔오늘 배운 중요한 🔑 point

  • 정규화는 데이터 중복을 줄이고 무결성을 높이는데 중점을 둔다
  • 지나치게 정규화된 DB는 성능 문제가 발생할 수 있어 반정규화를 고려할 수 있다.

🎯 오늘 배운 내용

 

정규화

DB 설계 과정에서 데이터를 구조화 하고 데이터 중복과 이상을 방지하기 위해 테이블을 분해하는 과정

1차 정규화: 하나의 칸에는 하나의 값만 들어가야한다. -> 하나의 칸에 여러 값이 들어가면 1차 정규화를 해야한다.

2차 정규화:  기본키의 일부에만 종속된 속성을 제거해야한다. ->  학생 번호와 강좌 이름 2가지의 값으로 성적이라는 값을 나타낼수 있다. 여기서 강의실의 경우 강좌이름에 세트메뉴로 종속이 되는 상태이므로 해당 속성을 제거하기 위해 2차 정규화를 해야한다.

 

3차 정규화: 비 기본키 끼리의 종속을 제거해야한다. -> A->B, B->C의 형태 이므로 강좌 이름이라는 비 기본키 속성에 수강료가 종속되므로 3차 정규화를 해야한다. 

 

 

정규화 참고 https://mangkyu.tistory.com/110

 

[Database] 정규화(Normalization) 쉽게 이해하기

지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz

mangkyu.tistory.com

 

 

반정규화

이미 정규화된 DB의 성능을 개선하기 위해서 의도적으로 정규화의 일부를 되돌리는 과정

 

테이블 병합 : 정규화 과정에서 분리된 테이블을 다시 합침

 

중복 데이터 저장: 자주 조회되는 데이터를 여러 테이블에 중복 저장

 

계산된 속성 추가: 자주 계산되는 값을 미리 계산해서 테이블에 저장

 

역정규화 인덱스 추가: 특정한 조회 성능을 높이기 위해 별도의 인덱스를 추가하거나 테이블 구조를 바꿈

 

 

🤔 어떻게 활용할까?

프로젝트 초기단계에서 정규화를 통해 데이터를 일관성 있게 관리할 수 있도록 하며 , 데이터의 이상 방지가 가능하다.

프로젝트가 진행되면서 성능 이슈가 발생할 경우에 반정규화를 통해서 성능을 개선할 수 있다.

📓 오늘의 한줄

"A day of worry is more exhausting than a week of work."

- John Lubbock -