상세 컨텐츠

본문 제목

[SQLD기본개념] PART1. 데이터 모델링의 이해 -제2장 데이터 모델과 SQL

SQLD기본개념

by qkrtnals 2024. 5. 23. 18:21

본문

  1. 정규화

정규화란? : 데이터 정합성*을 위해 엔티티를 작은 단위로 분리하는 과정

→ 정합성 : 데이터의 정확성과 일관성을 유지하고 보장 : 정규화를 할 경우 데이터 조회 성능은 처리 조건에 따라 향상될 수도 저하될 수도 있음

 

제1정규형 : 모든 속성은 반드시 하나의 값만 가져야 함 : 유사한 속성이 반복되는 경우도 1차 정규화의 대상이 됨 → 하나의 속성이 다중값을 가지면 애플리케이션에서 데이터를 꺼내 쓸 때 불필요한 Split을 사용해야하는 식의 번거로움이 생길 수 있음

  1. 속성값이 하나가 되도록 엔티티 분리
  2. 유사한 속성이 반복되지 않도록 엔티티 분리

 

제2정규형 : 엔티티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 함

  1. 주식별자에 대한 부분 종속이 없도록 엔티티 분리

 

제3정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속X

  1. 다른 일반 속성에 종속되지 않도록 엔티티 분리
  1. 반정규화

반정규화란? : 데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정

: 주의해야 할 점은 조회 성능은 향상될 수 있으나 입력, 수정, 삭제 성능은 저하될 수 있음

: 데이터 정합성 이슈가 발생할 수 있음

테이블 반정규화

  • 테이블 병합 : 업무 프로세스 상 JOIN이 필요한 경우가 많아 테이블을 통합하는 것이 성능 측면에서 유리한 경우 고려 → 1:1관계 테이블 병합 → 1:M 관계 테이블 병합 → 슈퍼 서브 타입 테이블 병합
  • 테이블 분할 → 테이블 수직 분할 : 엔티티의 일부 속성을 별도의 엔티티로 분할 → 테이블 수평 분할 : 엔티티의 인스턴스를 특정 기준으로 별도의 엔티티로 분할
  • 테이블 추가 → 중복 테이블 추가 : 데이터 중복을 감안하더라도 성능상 반드시 필요하다면 별도의 엔티티 추가 → 통계 테이블 추가 → 이력 테이블 추가 → 부분 테이블 추가

칼럼 반정규화

  • 중복 칼럼 추가 : 업무 프로세스 상 JOIN이 필요한 경우가 많아 칼럼을 추가하는 것이 성능 측면에서 유리할 경우 고려
  • 파생 칼럼 추가 : 프로세스 수행 시 부하가 염려되는 계산 값을 미리 칼럼으로 추가하여 보관하는 방식
  • 이력 테이블 칼럼 추가 : 대량의 이력 테이블을 조회할 때 속도가 느려질 것을 대비하여 조회 기준이 될 것으로 판단되는 컬럼을 미리 추가

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

  1. 트랜잭션

트랜잭션이란? : 데이터를 조작하기 위한 하나의 논리적인 작업 단위

  1. NULL

NULL이란? : 존재하지 않음 → 값이 없음을 뜻함 가로연산 ⇒ NULL이 있으면 결과값이 NULL이 됨 세로연산 ⇒ NULL이 있으면 NULL을 제외하고 결과값을 도출

관련글 더보기