스타 스키마(star schema, 조인 스키마(join schema라고도 불리기도 한다.)는 데이터 웨어하우스 스키마 중 가장 단순한 종류의 스키마인데, 한 개의 사실 테이블주 키 및 각 차원과 추가적인 사실들로 이루어진 스키마이다. 스타 스키마라는 이름은 스키마 다이어그램이 마치 "별표(star)" 모양이라 해서 붙인 이름이다.

스타 스키마를 이용하면, 전통적인 관계형 데이터베이스를 활용하여 다차원 데이터베이스(MDDB) 기능을 할 수 있다. 거의 모든 분야에서 관계형 데이터베이스가 가장 일반적인 데이터 관리 시스템이기 때문에, 관계형 데이터베이스를 사용하여 다-차원 뷰를 구현한다는 점은 매우 매력적이다. 설사, 특정한 MDDB가 이용되더라도, 그것의 원천(sources)은 보통 관계형 데이터베이스가 되게 된다.

스타 스키마를 쓰는 이유 중 다른 하나는 스타 스키마를 이해하기 쉽다는 것이다. 스타 스키마의 사실 테이블은 보통 제3 정규형인 데 반해, 차원 테이블(dimensional tables)들은 보통 역정규화(de-normalized)된 제2 정규형이다. 차원 테이블(dimensional table)을 정규화 한다면, 차원 테이블들은 눈꽃송이(snowflake 스노플레이크[*]) 모양으로 보일 것이다. (스노플레이크 스키마 참조) 그리고 제3 정규형의 문제점들이 생길 것이다. 즉, 복잡한 쿼리를 날려야 할 것이고, 비즈니스 유저들은 데이터의 의미들을 잘 이해 못하게 될 것이다. 비록, 최신예 DBMS 기술과 하드웨어의 지원을 받아 쿼리 퍼포먼스는 향상될 수 있다해도, 높은 차수로 정규화된 테이블들은 리포팅(reporting)을 어렵게 하고 애플리케이션을 복잡하게 만들 뿐일 것이다.

SQL 예제 편집

SELECT
  sum (f_sales.units_sold)
FROM
  f_sales, d_customer, d_time, d_store, d_product
WHERE
  f_sales.customer_id   = d_customer.customer_id AND
  f_sales.date_id       = d_time.date_id AND
  f_sales.store_id      = d_store.store_id AND
  f_sales.product_id    = d_product.product_id AND
  d_time.year_id        = 1997 AND
  d_product.category_id = 'tv'
GROUP BY
  d_product.brand, d_store.country_iso_id

같이 보기 편집

외부 링크 편집