| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 통계
- 내일배움캠프#til#파이썬#python#전처리
- 차원축소
- A/B테스트
- 이상치 제거
- 머신러닝
- 제1종오류
- 통계101x데이터분석
- 통계학
- 내일배움캠프#til#sql
- 카이제곱검정
- vscode
- 내일배움캠프#til#파이썬#python#통계학
- 통계학공부
- 라이브 세션
- Ai
- 제2종오류
- 딥러닝
- 책
- 내일배움캠프#til#파이썬#python
- 다중검정
- 내일배움캠프#til#데이터 리터러시
- 내일배움캠프#til#sqld#eda#데이터리터러시
- #내일배움캠프 #사전캠프 #til #sql
- 이상탐지
- 내일배움캠프#til#sqld
- t검정
- 데이터분석
- 데이터
- 가설검정
- Today
- Total
Ming's Life
[내일배움캠프] 6일차 본문
1. 오늘 학습 키워드
- SQLD 자격증 공부
2. 오늘 학습 한 내용을 나만의 언어로 정리하기
성능 데이터 모델링과 정규화
성능 데이터 모델링의 정의
- 데이터베이스는 우리가 생각하는 것보다 훨씬 더 많은 요청을 처리
- 매우 빠른 템포로 자주 발생하는 쿼리문이 비효율적이면 DB 전체의 성능에 영향
- 테이블 설계 자체가 잘못되어, 테이블 내부에 원하는 정보가 없어 불가피하게 다른 테이블에서 정보를 가져와야 하는 경우
성능 데이터 모델링 수행시점
- 데이터베이스 분석 및 설계 단계에서 처리 성능을 향상 시키기 위한 준비를 많이 해야 한다.
- 어떠한 트랜잭션이 비즈니스 로직의 핵심인지 파악하고 사용자 업무 처리에 중요성을 보이는지 분석 해야한다.
* 트랜잭션이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위
성능 데이터 모델링의 고려사항
1. 정규화를 정확하게 수행
2. 데이터베이스 용량 산정 수행
3. 데이터베이스에서 발생되는 트랜잭션의 유형을 파악
4. 데이터베이스의 용량과 트랜잭션 유형에 따라 반정규화 수행
5. 이력 모델, PK / FK, 슈퍼 타입 / 서브 타입의 조정
6. 성능 관점에서 데이터 모델 검증
정규화를 통한 성능 향상 전략
- 정규화를 수행한다는 것은 데이터에 대한 중복성을 제거하여 성능을 향상시키는 것을 의미
* 정규화 : 데이터의 일관성을 유지하고 데이터의 중복을 방지하며 데이터의 유연성을 유지하기 위해 데이터를 분해하는 과정
정규화 용어

정규화의 이점
데이터의 유연성
* 응집도 : 요소들이 서로 관련되어 있는 정도 (높을수록 품질이 좋다)
* 결합도 : 요소들 간의 상호 의존하는 정도 (결합도가 높으면 시스템 구현 및 유지보수가 어렵다)
데이터의 재활용성
- 정규화를 통해 데이터의 개념이 조금 더 세분화될 수 있고 그 결과로 개념에 대한 재활용 가능성이 증가한다.
데이터의 중복 최소화
- 정규화는 식별자가 아닌 속성이 한 번만 포함되기 때문에 데이터의 중복이 최소화된다.
정규화 이론
제1정규화
- 한 속성에 여러 개의 속성이 포함되어 있거나 같은 유형의 속성이 여러 개로 나눠져있는 경우 해당 속성을 분리
- 정규화는 함수적 종속성을 근거로 한다.

제2정규화
- 제 1정규화를 만족시키고 PK가 아닌 모든 칼럼은 PK 전체에 종속
- 특정한 데이터를 갱신하려고 할 때 갱신 이상(Modification Anomaly) 현상이 발생할 가능성이 크다.
* 갱신 이상 : 반복되는 데이터 중에서 일부를 갱신할 때 데이터가 일치하지 않는 문제를 의미
제3정규화
- 제2정규화를 만족시키고 일반 속성 간에도 함수 종속 관계가 존재하지 않아야 함
정규화 유형

정규화 정리
제1정규화
- 모든 속성은 반드시 하나의 값을 가져야 한다.
- 한 속성에 여러 속성값을 부여하거나 같은 유형의 속성이 여러 개인 경우 해당 속성을 분리한다.
제2정규화
- 주식별자에 완전하게 함수 종속되지 않은 속성을 분리하여 종속 관계를 구성한다.
제3정규화
- 일반 속성간의 함수 종속성이 발생하지 않도록 분리한다.
반정규화 개념과 설명
반정규화의 정의
- 반정규화 (혹은 역정규화)에서 '반'이 갖는 의미는 '절반'이 아닌 '반대'이다.
- 반정규화는 성능 향상에 그 목적이 있다.
1. 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되는 경우입니다.
2. 테이블 간 경로가 너무 멀어 조인으로 인한 성능 저하가 예상되는 경우입니다.
3. 칼럼을 계산하여 읽을 때 성능이 저하될 것이라고 예상하는 경우입니다.
* 정규화 : 데이터의 중복을 최소화 한다.
* 반정규화 : 데이터의 중복을 허용한다.
반정규화 절차

테이블 반정규화
- 테이블 반정규화는 테이블 병합, 테이블 분할, 테이블 추가 이렇게 3가지로 나눠진다.
테이블 병합
- 여러 개의 테이블을 하나로 합치는 과정
- 테이블을 병합하면 데이터를 중복 저장하게 되지만 조회 과정의 성능 향상을 위해서 수행
기법 : 1:1 관계 테이블 병합 / 1:M 관계 테이블 병합 / 슈퍼 / 서브 타입 테이블 병합
테이블 분할
- 특정 테이블을 여러 개의 테이블로 나누는 것을 의미
기법 : 수직 분할 / 수평 분할
테이블 추가
- 특정 테이블을 추가하는 것을 의미
- 데이터의 중복 저장의 비효율이 발생하더라도 조회의 성능을 높이기 위해 사용
기법 : 중복 테이블 추가 / 통계 테이블 추가 / 이력 테이블 추가 / 부분 테이블 추가
칼럼 반정규화

관계 반정규화
- 여러 경로에 걸쳐 테이블 조인을 하는 경우 조인 연산 자체를 줄여서 조회 성능을 향상시키는 방법
- 약 A → B → C 형태로 테이블 조인이 발생한다면 A → C로 줄이는 것이 관계 반정규화의 목적
중복 관계 추가
- 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하다.
- 이때 발생할 수 있는 성능 저하를 예방하기 위해 추가적인 관계를 맺는 방법이 관계의 반정규화이다.
3. 학습하며 겪었던 문제점 & 에러
-
4. 내일 학습 할 것은 무엇인지
SQL 코드카타 , SQLD강의 듣기, 파이썬 강의듣기
'내일배움캠프' 카테고리의 다른 글
| [내일배움캠프] 8일차 (0) | 2025.05.21 |
|---|---|
| [내일배움캠프] 7일차 (0) | 2025.05.20 |
| [내일배움캠프] 5일차 (0) | 2025.05.16 |
| [내일배움캠프] 4일차 (0) | 2025.05.15 |
| [내일배움캠프] 3일차 (0) | 2025.05.14 |