정규화 ,͎ 반정규화
2024. 8. 20. 21:11ㆍTIL
✔오늘 배운 중요한 🔑 point
- 정규화는 데이터 중복을 줄이고 무결성을 높이는데 중점을 둔다
- 지나치게 정규화된 DB는 성능 문제가 발생할 수 있어 반정규화를 고려할 수 있다.
🎯 오늘 배운 내용
정규화
DB 설계 과정에서 데이터를 구조화 하고 데이터 중복과 이상을 방지하기 위해 테이블을 분해하는 과정
1차 정규화: 하나의 칸에는 하나의 값만 들어가야한다. -> 하나의 칸에 여러 값이 들어가면 1차 정규화를 해야한다.
2차 정규화: 기본키의 일부에만 종속된 속성을 제거해야한다. -> 학생 번호와 강좌 이름 2가지의 값으로 성적이라는 값을 나타낼수 있다. 여기서 강의실의 경우 강좌이름에 세트메뉴로 종속이 되는 상태이므로 해당 속성을 제거하기 위해 2차 정규화를 해야한다.
3차 정규화: 비 기본키 끼리의 종속을 제거해야한다. -> A->B, B->C의 형태 이므로 강좌 이름이라는 비 기본키 속성에 수강료가 종속되므로 3차 정규화를 해야한다.
정규화 참고 https://mangkyu.tistory.com/110
반정규화
이미 정규화된 DB의 성능을 개선하기 위해서 의도적으로 정규화의 일부를 되돌리는 과정
테이블 병합 : 정규화 과정에서 분리된 테이블을 다시 합침
중복 데이터 저장: 자주 조회되는 데이터를 여러 테이블에 중복 저장
계산된 속성 추가: 자주 계산되는 값을 미리 계산해서 테이블에 저장
역정규화 인덱스 추가: 특정한 조회 성능을 높이기 위해 별도의 인덱스를 추가하거나 테이블 구조를 바꿈
🤔 어떻게 활용할까?
프로젝트 초기단계에서 정규화를 통해 데이터를 일관성 있게 관리할 수 있도록 하며 , 데이터의 이상 방지가 가능하다.
프로젝트가 진행되면서 성능 이슈가 발생할 경우에 반정규화를 통해서 성능을 개선할 수 있다.
📓 오늘의 한줄
"A day of worry is more exhausting than a week of work."
- John Lubbock -
'TIL' 카테고리의 다른 글
𝙆𝙊𝙏𝙇𝙄𝙉 최종 프로젝트 마무리 (0) | 2024.08.22 |
---|---|
𝙎𝙌𝙇 (2) (0) | 2024.08.21 |
𝙎𝙌𝙇 (1) (0) | 2024.08.19 |
𝑬𝑳𝑩 (𝑬𝒍𝒂𝒔𝒕𝒊𝒄 𝑳𝒐𝒂𝒅 𝑩𝒂𝒍𝒂𝒏𝒄𝒆𝒓) (0) | 2024.08.18 |
𝒫𝓇ℯ𝓈𝒾ℊ𝓃ℯ𝒹 𝒰ℛℒ (0) | 2024.08.17 |