1. 정규화(Normalization)
> 데이터 정합성(정확성과 일관성)을 위해 엔터티를 작은 단위로 분리하는 과정이다.
- 단, 정규화를 했다고 조회성능이 향상되는 건 아니다. 처리조건에 따라 저하되는 경우가 있다.
1) 제 1정규형
> 모든 속성은 반드시 하나의 값만 가져야 한다. 유사한 속성이 반복되는 경우도 해당한다.
2) 제 2정규형
> 엔터티의 모든 일반속성은 반드시 모든 주식별자(딘일 or 복합)에 종속되어야 한다.
3) 제 3정규형
> 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
4) 주의사항
> 적절한 정규화는 성능상 이롭지만, 지나친 정규화는 오히려 성능 저하를 일으킬 수 있다.
ex. 여러 번의 JOIN을 해야 하는 경우에 오히려 JOIN한 상태로 두는 것이 좋다.
ex. 관계를 생성하여 성능 개선
2. 반정규화(De-Normalization)
> 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정이다.
- 주의해야 할 점은 조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있으며 데이터 정합성 이슈가 발생할 수 있다.
> 반정규화 과정은 정규화가 끝난 후 조회 성능에 따라 진행한다.
1) 테이블 반정규화
a. 테이블 병합 - 1:1 관계 테이블 병합 / 1:M 관계 테이블 병합 / 슈퍼 서브 타입 테이블 병합
> 업무 프로세스상 JOIN이 필요한 경우가 많아 중복 관계를 추가하는 것이 성능 측면에서 유리할 경우 고려한다.
b. 테이블 분할
- 테이블 수직 분할(속성 분할) : 자주 사용하는 속성이 아니거나 대부분의 인스턴스가 해당 속성값을 NULL로 갖고 있을 때 고려
- 테이블 수평 분할(인스턴스 분할, 파티셔닝) : 인스턴스를 특정 기준으로 별도의 엔터티로 분할(ex. 연도별, 세대별 등)
c. 테이블 추가 - 중복 / 통계 / 이력 / 부분 테이블 추가
2) 칼럼 반정규화
a. 중복 칼럼 추가
> 업무 프로세스상 JOIN이 필요한 경우가 많아 중복 관계를 추가하는 것이 성능 측면에서 유리할 경우 고려한다.
b. 파생 칼럼 추가
> 프로세스 수행 시 부하가 염려되는 계산값은 미리 컬럼으로 추가하여 방지한다. 예를 들어 프로모션 적용 할인가가 있다.
c. 이력 테이블 칼럼 추가
>대량의 이력 테이블을 조회할 때 조회 기준이 될 것으로 판단되는 칼럼을 미리 추가하는 방식이다.
3) 관계 반정규화(중복관계 추가)
> 업무 프로세스상 JOIN이 필요한 경우가 많아 중복 관계를 추가하는 것이 성능 측면에서 유리할 경우 고려한다.
3. 트랜잭션(Transaction)
> 데이터를 조작하기 위한 하나의 논리적인 작업 단위.
4. NULL
> 데이터가 입력되지 않은 상태로 값이 0일수도 0이 아닐수도 있다. 그래서 NULL은 연산을 수행하지 않는다.
'[스파르타코딩클럽]데이터분석 과정 > LEARN' 카테고리의 다른 글
SQLD 공부 (3) SQL 기본 (0) | 2024.02.22 |
---|---|
[데이터 시각화] Tableau 기초 강의 공부 (1) (1) | 2024.02.21 |
SQLD 공부 (1) 데이터베이스 모델링 / 엔터티 / 속성 (0) | 2024.02.20 |
데이터 분석가 채용공고를 읽고 역량 키워드 정리하기 (0) | 2024.01.23 |
국내 여행과 관련해 트렌드 조사 (0) | 2024.01.14 |