관계형 데이터 정규화

Snowflake로 시작하는 데이터 모델링

Nuno Rocha

Director of Engineering

비정규 데이터 이해

  • 비정규 데이터(UNF): 구조가 없거나, 정리가 안 되었거나, 반복/이상이 있을 수 있는 데이터

전체 제품 엔티티

Snowflake로 시작하는 데이터 모델링

비정규 데이터 이해

전체 제품 엔티티의 이상 현상

Snowflake로 시작하는 데이터 모델링

비정규 데이터 이해

바나나 이상 현상 강조

Snowflake로 시작하는 데이터 모델링

비정규 데이터 이해 (3)

제조사 이상 현상 강조

Snowflake로 시작하는 데이터 모델링

비정규 데이터 이해 (4)

상세 설명 이상 현상 강조

Snowflake로 시작하는 데이터 모델링

비정규 데이터 이해 (5)

제품 이상 현상 강조

Snowflake로 시작하는 데이터 모델링

비정규 데이터의 문제

  • 데이터 중복: 불필요한 반복
  • 데이터 이상: 불규칙·불일치

전체 제품 엔티티의 이상 현상

Snowflake로 시작하는 데이터 모델링

비정규 데이터 식별

SELECT manufacturer_id, 
       manufacturer_name, 
       location, 
       COUNT(*) AS repetitions
FROM allproducts
GROUP BY manufacturer_id, 
    manufacturer_name, 
    location
HAVING COUNT(*) > 1;

제품 반복 수가 있는 제조사 목록

Snowflake로 시작하는 데이터 모델링

비정규 데이터 식별

SELECT DISTINCT category 
FROM allproducts;

카테고리 목록

Snowflake로 시작하는 데이터 모델링

비정규 데이터 식별

SELECT DISTINCT product_name,
    category
FROM allproducts
WHERE category = 'L';

카테고리 L의 제품 목록

Snowflake로 시작하는 데이터 모델링

비정규 데이터 식별

SELECT DISTINCT product_name,
    category
FROM allproducts
WHERE category = 'L';

문자 L을 포함한 모든 제품 목록

Snowflake로 시작하는 데이터 모델링

정규화된 데이터

  • 정규화된 데이터: 구분되고 원자적인 엔티티로 조직화
  • 이점:
    • 정확성과 신뢰성 향상
    • 쿼리 성능 향상
    • 리소스 사용 최적화
    • 확장성
Snowflake로 시작하는 데이터 모델링

용어와 함수 개요

  • 비정규 데이터(UNF): 구조가 없거나 정리가 안 되었거나 반복/이상이 있는 데이터
  • 정규화된 데이터: 구분되고 원자적인 엔티티로 조직화된 데이터
  • SELECT FROM: 특정 엔티티에서 데이터를 조회하는 SQL 절
  • DISTINCT: 속성의 고유 값만 반환
  • COUNT: 조건에 맞는 행 수를 계산
  • GROUP BY: 지정 속성으로 같은 값을 묶음
  • HAVING: GROUP BY 결과를 조건으로 필터링
  • WHERE: 조건으로 레코드 필터링
  • AS: 열/테이블에 별칭 지정
Snowflake로 시작하는 데이터 모델링

함수 개요

-- 특정 조건으로 고유 값 조회
SELECT DISTINCT column_name
FROM table_name
WHERE column_name  condition  value;
-- 특정 열로 집계하며 결과를 필터링하여 개수 구하기
SELECT column_name, 
    COUNT(*) AS alias_name
FROM table_name
GROUP BY column_name
HAVING COUNT(*)  condition  value;
Snowflake로 시작하는 데이터 모델링

연습해 봅시다!

Snowflake로 시작하는 데이터 모델링

Preparing Video For Download...