[SQLD] 데이터 모델과 SQL

y55n·2022년 5월 13일

SQLD

목록 보기
2/2

📖정규화(Normalization)

데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 엔터티를 작은 단위로 분리하는 과정이다.

1. 제1 정규형

모든 속성은 반드시 하나의 값만 가져야 한다.

2. 제2 정규형

엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다.

3. 제3 정규형

주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.

💡정규화 주의사항

적절한 정규화는 성능상 이롭지만 지나친 정규화는 오히려 성능 저하를 일으킬 수 있다.


📖반정규화(De-Normalization)

데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정이다. 반정규화의 과정은 정규화가 끝난 후 거치게 된다.

1. 테이블 반정규화

테이블 병합

  • 1:1 관계 테이블 병합
  • 1:M 관계 테이블 병합
  • 슈퍼 서브 타입 테이블 병합

테이블 분할

  • 테이블 수직 분할(속성 분할)
  • 테이블 수평 분할(인스턴스 분할, 파티셔닝)

테이블 추가

  • 중복 테이블 추가
  • 통계 테이블 추가
  • 이력 테이블 추가
  • 부분 테이블 추가

2. 컬럼 반정규화

  • 중복 컬럼 추가: 업무 프로세스상 JOIN이 필요한 경우가 많아 컬럼을 추가하는 것이 성능 측면에서 유리할 경우 고려한다
  • 파생 컬럼 추가: 프로세스 수행 시 부하가 염려되는 계산값을 미리 컬럼으로 추가하여 보관하는 방식으로 상품의 재고나 프로모션 적용 할인가 등이 이에 해당할 수 있다
  • 이력 테이블 컬럼 추가: 대량의 이력 테이블을 조회할 때 속도가 느려질 것을 대비하여 조회 기준이 될 것으로 판단되는 컬럼을 미리 추가해 놓는 방식이다. 최신 데이터 여부 등이 이에 해당할 수 있다

3. 관계 반정규화(중복관계 추가)

업무 프로세스상 JOIN이 필요한 경우가 많아 중복 관계를 추가하는 것이 성능 측면에서 유리할 경우 고려한다


📖트랜잭션(Transaction)

데이터를 조작하기 위한 하나의 논리적인 작업 단위이다


📖NULL

NULL은 존재하지 않음, 즉 값이 없음을 의미한다

profile
나 혼자 공부 기록

0개의 댓글