728x90
※ IT: RDBMS Star Schema.
안녕하세요. 듀스트림입니다.
오늘의 내용은 DW에서 사용하는 스타스키마에 대한 내용입니다.
스타 스키마(Start Schema)?
데이터 웨어하우스(DW) 또는 OLAP 분석 시스템에서 자주 사용하는 비정규화 기반의 테이블 설계 방식으로 Fact 테이블을 중심으로 다수의 차원(Dimension) 테이블이 연결된 구조입니다.
스타 스키마란 이름은 모양이 별(★) 모양처럼 생겼다고 해서 붙은 이름입니다.
구성 요소
| 구성 요소 | 설명 | 예시 |
| Fact Table (사실 테이블) | 수치 데이터, 측정값 (예: 판매 금액, 주문 수량 등) | sales_fact |
| Dimension Table (차원 테이블) | 분류 기준, 설명 정보 (예: 고객, 제품, 날짜 등) | customer_dim, product_dim, date_dim |
| Surrogate Key (대체키) | 차원 테이블의 기본키로 숫자 ID 사용 | customer_id, product_id |
예시 구조

▸ fact 테이블
sales_fact (
sale_id SERIAL,
customer_id INT,
product_id INT,
store_id INT,
date_id INT,
quantity INT,
total_amount NUMERIC
)
▸ dimension 테이블
-- product
product_dim (
product_id SERIAL,
product_name TEXT,
category TEXT,
price NUMERIC
)
-- customer
customer_dim (
customer_id SERIAL,
customer_name TEXT,
gender TEXT,
region TEXT
)
-- date
date_dim (
date_id SERIAL,
full_date DATE,
year INT,
month INT,
day INT,
weekday TEXT
)
스타 스키마의 특징
| 항목 | 설명 |
| 단순한 JOIN 구조 | Fact ↔ Dimension 단일 조인 |
| 빠른 집계 처리 | 집계 연산이 대부분 하나의 Fact 테이블 대상 |
| 반정규화 기반 | Dimension 테이블에 중복 정보 허용 |
| 데이터 중복 존재 | 예: 같은 고객명이 여러 행에 등장 가능 |
| OLAP 최적화 | 읽기(SELECT) 위주의 구조, ETL 주기적 적재 |
스타 스키마와 반정규화의 관계
| 항목 | 스타 스키마 | 반정규화 |
| 정의 | OLAP을 위한 모델링 구조 | 정규형을 깨고 성능을 위해 구조 단순화 |
| 중복 허용 | 차원 테이블에 정보 중복 가능 | 필요한 곳에 중복 컬럼 추가 |
| 목적 | 분석·집계 쿼리 최적화 | 읽기 성능, 복잡도 감소 |
| 사용 대상 | DW/BI, 데이터마트 | OLTP, DW 모두 가능 |
| 구성 패턴 | Fact + Dimension | 자유로운 구조 변경 |
| 적용 범위 | 데이터 웨어하우스 중심 | 다양한 설계 단계에서 선택적으로 적용 |
스타 스키마는 반정규화를 적극 활용한 일종의 설계 패턴으로 반정규화가 더 넓은 개념.
장단점
| 장점 | 단점 |
| 쿼리 단순함 (JOIN 깊이 1단계) | 중복 데이터 증가 |
| 읽기 성능 우수 | 쓰기/갱신 성능 저하 |
| 집계, 분석 용이 | 무결성 제약 어려움 |
| BI 도구 호환성 높음 | 실시간 변경에 부적합 |
스타 스키마와 스노우플레이크 스키마 비교
| 항목 | 스타 스키마 | 스노우플레이크 스키마 |
| 정규화 수준 | 비정규화 | 정규화 |
| 차원 구조 | 평평(flat), 단순 | 계층적 구조 |
| 쿼리 성능 | 빠름 | 느릴 수 있음 |
| 저장공간 | 큼 (중복 ↑) | 작음 |
| 관리 복잡도 | 낮음 | 높음 |
요약
- 스타 스키마는 반정규화를 활용한 데이터 웨어하우스 구조
- Fact 테이블은 수치 데이터, Dimension 테이블은 설명 정보
- 빠른 분석 쿼리와 OLAP 최적화가 목적
- 정규화를 완전히 따르지 않으며, 데이터 중복과 트레이드오프 존재
오늘은 여기까지~
728x90
'IT 여러가지' 카테고리의 다른 글
| IT: RDBMS 테이블 설계 체크리스트 (3) | 2025.07.16 |
|---|---|
| IT: for Loop vs while Loop (0) | 2025.07.13 |
| IT: RDBMS 반정규화 (2) | 2025.07.08 |
| IT: RDBMS 정규화 (2) | 2025.07.07 |
| IT: 데이터 이행 (1) | 2025.05.25 |